comparison libfaad.c @ 6177:5195f1ffba43 libavcodec

clean up dynamic loading of libfaad
author mru
date Fri, 25 Jan 2008 21:14:17 +0000
parents 843555383499
children 48759bfbd073
comparison
equal deleted inserted replaced
6176:1d735690e172 6177:5195f1ffba43
232 { 232 {
233 av_log(avctx, AV_LOG_ERROR, "FAAD library: %s could not be opened! \n%s\n", 233 av_log(avctx, AV_LOG_ERROR, "FAAD library: %s could not be opened! \n%s\n",
234 libfaadname, dlerror()); 234 libfaadname, dlerror());
235 return -1; 235 return -1;
236 } 236 }
237 #define dfaac(a, b) \ 237
238 do { static const char* n = AV_STRINGIFY(faacDec ## a); \ 238 #define dfaac(a) do { \
239 if ((s->faacDec ## a = b dlsym( s->handle, n )) == NULL) { err = n; break; } } while(0) 239 const char* n = AV_STRINGIFY(faacDec ## a); \
240 for(;;) { 240 if (!err && !(s->faacDec ## a = dlsym(s->handle, n))) { \
241 err = n; \
242 } \
243 } while(0)
241 #else /* !CONFIG_LIBFAADBIN */ 244 #else /* !CONFIG_LIBFAADBIN */
242 #define dfaac(a, b) s->faacDec ## a = faacDec ## a 245 #define dfaac(a) s->faacDec ## a = faacDec ## a
243 #endif /* CONFIG_LIBFAADBIN */ 246 #endif /* CONFIG_LIBFAADBIN */
244 247
245 // resolve all needed function calls 248 // resolve all needed function calls
246 dfaac(Open, (faacDecHandle FAADAPI (*)(void))); 249 dfaac(Open);
247 dfaac(Close, (void FAADAPI (*)(faacDecHandle hDecoder))); 250 dfaac(Close);
248 dfaac(GetCurrentConfiguration, (faacDecConfigurationPtr 251 dfaac(GetCurrentConfiguration);
249 FAADAPI (*)(faacDecHandle))); 252 dfaac(SetConfiguration);
250 #ifndef FAAD2_VERSION 253 dfaac(Init);
251 dfaac(SetConfiguration, (int FAADAPI (*)(faacDecHandle, 254 dfaac(Init2);
252 faacDecConfigurationPtr))); 255 dfaac(Decode);
253 256 #ifdef FAAD2_VERSION
254 dfaac(Init, (int FAADAPI (*)(faacDecHandle, unsigned char*, 257 dfaac(GetErrorMessage);
255 unsigned long*, unsigned long*))); 258 #endif
256 dfaac(Init2, (int FAADAPI (*)(faacDecHandle, unsigned char*, 259
257 unsigned long, unsigned long*, 260 #undef dfaac
258 unsigned long*)));
259 dfaac(Decode, (int FAADAPI (*)(faacDecHandle, unsigned char*,
260 unsigned long*, short*, unsigned long*)));
261 #else
262 dfaac(SetConfiguration, (unsigned char FAADAPI (*)(faacDecHandle,
263 faacDecConfigurationPtr)));
264 dfaac(Init, (long FAADAPI (*)(faacDecHandle, unsigned char*,
265 unsigned long, unsigned long*, unsigned char*)));
266 dfaac(Init2, (char FAADAPI (*)(faacDecHandle, unsigned char*,
267 unsigned long, unsigned long*,
268 unsigned char*)));
269 dfaac(Decode, (void *FAADAPI (*)(faacDecHandle, faacDecFrameInfo*,
270 unsigned char*, unsigned long)));
271 dfaac(GetErrorMessage, (char* FAADAPI (*)(unsigned char)));
272 #endif
273 #undef dfacc
274 261
275 #ifdef CONFIG_LIBFAADBIN 262 #ifdef CONFIG_LIBFAADBIN
276 break;
277 }
278 if (err) { 263 if (err) {
279 dlclose(s->handle); 264 dlclose(s->handle);
280 av_log(avctx, AV_LOG_ERROR, "FAAD library: cannot resolve %s in %s!\n", 265 av_log(avctx, AV_LOG_ERROR, "FAAD library: cannot resolve %s in %s!\n",
281 err, libfaadname); 266 err, libfaadname);
282 return -1; 267 return -1;