Mercurial > libavcodec.hg
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; |
