comparison faad.c @ 2979:bfabfdf9ce55 libavcodec

COSMETICS: tabs --> spaces, some prettyprinting
author diego
date Thu, 22 Dec 2005 01:10:11 +0000
parents ef2149182f1c
children 0b546eab515d
comparison
equal deleted inserted replaced
2978:403183bbb505 2979:bfabfdf9ce55
45 #define dlopen(a) 45 #define dlopen(a)
46 #define dlclose(a) 46 #define dlclose(a)
47 #endif 47 #endif
48 48
49 typedef struct { 49 typedef struct {
50 void* handle; /* dlopen handle */ 50 void* handle; /* dlopen handle */
51 void* faac_handle; /* FAAD library handle */ 51 void* faac_handle; /* FAAD library handle */
52 int frame_size; 52 int frame_size;
53 int sample_size; 53 int sample_size;
54 int flags; 54 int flags;
55 55
56 /* faad calls */ 56 /* faad calls */
57 faacDecHandle FAADAPI (*faacDecOpen)(void); 57 faacDecHandle FAADAPI (*faacDecOpen)(void);
58 faacDecConfigurationPtr FAADAPI (*faacDecGetCurrentConfiguration)(faacDecHandle hDecoder); 58 faacDecConfigurationPtr FAADAPI (*faacDecGetCurrentConfiguration)(faacDecHandle hDecoder);
59 #ifndef FAAD2_VERSION 59 #ifndef FAAD2_VERSION
60 int FAADAPI (*faacDecSetConfiguration)(faacDecHandle hDecoder, 60 int FAADAPI (*faacDecSetConfiguration)(faacDecHandle hDecoder,
61 faacDecConfigurationPtr config); 61 faacDecConfigurationPtr config);
62 int FAADAPI (*faacDecInit)(faacDecHandle hDecoder, 62 int FAADAPI (*faacDecInit)(faacDecHandle hDecoder,
63 unsigned char *buffer, 63 unsigned char *buffer,
64 unsigned long *samplerate, 64 unsigned long *samplerate,
65 unsigned long *channels); 65 unsigned long *channels);
66 int FAADAPI (*faacDecInit2)(faacDecHandle hDecoder, unsigned char *pBuffer, 66 int FAADAPI (*faacDecInit2)(faacDecHandle hDecoder, unsigned char *pBuffer,
67 unsigned long SizeOfDecoderSpecificInfo, 67 unsigned long SizeOfDecoderSpecificInfo,
68 unsigned long *samplerate, unsigned long *channels); 68 unsigned long *samplerate, unsigned long *channels);
69 int FAADAPI (*faacDecDecode)(faacDecHandle hDecoder, 69 int FAADAPI (*faacDecDecode)(faacDecHandle hDecoder,
70 unsigned char *buffer, 70 unsigned char *buffer,
71 unsigned long *bytesconsumed, 71 unsigned long *bytesconsumed,
72 short *sample_buffer, 72 short *sample_buffer,
73 unsigned long *samples); 73 unsigned long *samples);
74 #else 74 #else
75 unsigned char FAADAPI (*faacDecSetConfiguration)(faacDecHandle hDecoder, 75 unsigned char FAADAPI (*faacDecSetConfiguration)(faacDecHandle hDecoder,
76 faacDecConfigurationPtr config); 76 faacDecConfigurationPtr config);
77 long FAADAPI (*faacDecInit)(faacDecHandle hDecoder, 77 long FAADAPI (*faacDecInit)(faacDecHandle hDecoder,
78 unsigned char *buffer, 78 unsigned char *buffer,
79 unsigned long buffer_size, 79 unsigned long buffer_size,
80 unsigned long *samplerate, 80 unsigned long *samplerate,
81 unsigned char *channels); 81 unsigned char *channels);
82 char FAADAPI (*faacDecInit2)(faacDecHandle hDecoder, unsigned char *pBuffer, 82 char FAADAPI (*faacDecInit2)(faacDecHandle hDecoder, unsigned char *pBuffer,
83 unsigned long SizeOfDecoderSpecificInfo, 83 unsigned long SizeOfDecoderSpecificInfo,
84 unsigned long *samplerate, unsigned char *channels); 84 unsigned long *samplerate, unsigned char *channels);
85 void *FAADAPI (*faacDecDecode)(faacDecHandle hDecoder, 85 void *FAADAPI (*faacDecDecode)(faacDecHandle hDecoder,
86 faacDecFrameInfo *hInfo, 86 faacDecFrameInfo *hInfo,
87 unsigned char *buffer, 87 unsigned char *buffer,
88 unsigned long buffer_size); 88 unsigned long buffer_size);
89 char* FAADAPI (*faacDecGetErrorMessage)(unsigned char errcode); 89 char* FAADAPI (*faacDecGetErrorMessage)(unsigned char errcode);
90 #endif 90 #endif
91 91
92 void FAADAPI (*faacDecClose)(faacDecHandle hDecoder); 92 void FAADAPI (*faacDecClose)(faacDecHandle hDecoder);
93 93
94 94
110 unsigned char channels; 110 unsigned char channels;
111 #endif 111 #endif
112 int r = 0; 112 int r = 0;
113 113
114 if (avctx->extradata) 114 if (avctx->extradata)
115 r = s->faacDecInit2(s->faac_handle, (uint8_t*) avctx->extradata, 115 r = s->faacDecInit2(s->faac_handle, (uint8_t*) avctx->extradata,
116 avctx->extradata_size, 116 avctx->extradata_size,
117 &samplerate, &channels); 117 &samplerate, &channels);
118 // else r = s->faacDecInit(s->faac_handle ... ); 118 // else r = s->faacDecInit(s->faac_handle ... );
119 119
120 if (r < 0) 120 if (r < 0)
121 av_log(avctx, AV_LOG_ERROR, "faacDecInit2 failed r:%d sr:%ld ch:%ld s:%d\n", 121 av_log(avctx, AV_LOG_ERROR, "faacDecInit2 failed r:%d sr:%ld ch:%ld s:%d\n",
122 r, samplerate, (long)channels, avctx->extradata_size); 122 r, samplerate, (long)channels, avctx->extradata_size);
123 avctx->sample_rate = samplerate; 123 avctx->sample_rate = samplerate;
124 avctx->channels = channels; 124 avctx->channels = channels;
125 125
126 return r; 126 return r;
127 } 127 }
139 #else 139 #else
140 faacDecFrameInfo frame_info; 140 faacDecFrameInfo frame_info;
141 void *out; 141 void *out;
142 #endif 142 #endif
143 if(buf_size == 0) 143 if(buf_size == 0)
144 return 0; 144 return 0;
145 #ifndef FAAD2_VERSION 145 #ifndef FAAD2_VERSION
146 out = s->faacDecDecode(s->faac_handle, 146 out = s->faacDecDecode(s->faac_handle,
147 (unsigned char*)buf, 147 (unsigned char*)buf,
148 &bytesconsumed, 148 &bytesconsumed,
149 data, 149 data,
150 &samples); 150 &samples);
151 samples *= s->sample_size; 151 samples *= s->sample_size;
152 if (data_size) 152 if (data_size)
153 *data_size = samples; 153 *data_size = samples;
154 return (buf_size < (int)bytesconsumed) 154 return (buf_size < (int)bytesconsumed)
155 ? buf_size : (int)bytesconsumed; 155 ? buf_size : (int)bytesconsumed;
156 #else 156 #else
157 157
158 out = s->faacDecDecode(s->faac_handle, &frame_info, (unsigned char*)buf, (unsigned long)buf_size); 158 out = s->faacDecDecode(s->faac_handle, &frame_info, (unsigned char*)buf, (unsigned long)buf_size);
159 159
160 if (frame_info.error > 0) { 160 if (frame_info.error > 0) {
161 av_log(avctx, AV_LOG_ERROR, "faac: frame decoding failed: %s\n", 161 av_log(avctx, AV_LOG_ERROR, "faac: frame decoding failed: %s\n",
162 s->faacDecGetErrorMessage(frame_info.error)); 162 s->faacDecGetErrorMessage(frame_info.error));
163 return 0; 163 return 0;
164 } 164 }
165 165
166 frame_info.samples *= s->sample_size; 166 frame_info.samples *= s->sample_size;
167 memcpy(data, out, frame_info.samples); // CHECKME - can we cheat this one 167 memcpy(data, out, frame_info.samples); // CHECKME - can we cheat this one
168 168
169 if (data_size) 169 if (data_size)
170 *data_size = frame_info.samples; 170 *data_size = frame_info.samples;
171 171
172 return (buf_size < (int)frame_info.bytesconsumed) 172 return (buf_size < (int)frame_info.bytesconsumed)
173 ? buf_size : (int)frame_info.bytesconsumed; 173 ? buf_size : (int)frame_info.bytesconsumed;
174 #endif 174 #endif
175 } 175 }
176 176
177 static int faac_decode_end(AVCodecContext *avctx) 177 static int faac_decode_end(AVCodecContext *avctx)
178 { 178 {
194 const char* err = 0; 194 const char* err = 0;
195 195
196 s->handle = dlopen(libfaadname, RTLD_LAZY); 196 s->handle = dlopen(libfaadname, RTLD_LAZY);
197 if (!s->handle) 197 if (!s->handle)
198 { 198 {
199 av_log(avctx, AV_LOG_ERROR, "FAAD library: %s could not be opened! \n%s\n", 199 av_log(avctx, AV_LOG_ERROR, "FAAD library: %s could not be opened! \n%s\n",
200 libfaadname, dlerror()); 200 libfaadname, dlerror());
201 return -1; 201 return -1;
202 } 202 }
203 #define dfaac(a, b) \ 203 #define dfaac(a, b) \
204 do { static const char* n = "faacDec" #a; \ 204 do { static const char* n = "faacDec" #a; \
205 if ((s->faacDec ## a = b dlsym( s->handle, n )) == NULL) { err = n; break; } } while(0) 205 if ((s->faacDec ## a = b dlsym( s->handle, n )) == NULL) { err = n; break; } } while(0)
207 #else /* !CONFIG_FAADBIN */ 207 #else /* !CONFIG_FAADBIN */
208 #define dfaac(a, b) s->faacDec ## a = faacDec ## a 208 #define dfaac(a, b) s->faacDec ## a = faacDec ## a
209 #endif /* CONFIG_FAADBIN */ 209 #endif /* CONFIG_FAADBIN */
210 210
211 // resolve all needed function calls 211 // resolve all needed function calls
212 dfaac(Open, (faacDecHandle FAADAPI (*)(void))); 212 dfaac(Open, (faacDecHandle FAADAPI (*)(void)));
213 dfaac(GetCurrentConfiguration, (faacDecConfigurationPtr 213 dfaac(GetCurrentConfiguration, (faacDecConfigurationPtr
214 FAADAPI (*)(faacDecHandle))); 214 FAADAPI (*)(faacDecHandle)));
215 #ifndef FAAD2_VERSION 215 #ifndef FAAD2_VERSION
216 dfaac(SetConfiguration, (int FAADAPI (*)(faacDecHandle, 216 dfaac(SetConfiguration, (int FAADAPI (*)(faacDecHandle,
217 faacDecConfigurationPtr))); 217 faacDecConfigurationPtr)));
218 218
219 dfaac(Init, (int FAADAPI (*)(faacDecHandle, unsigned char*, 219 dfaac(Init, (int FAADAPI (*)(faacDecHandle, unsigned char*,
220 unsigned long*, unsigned long*))); 220 unsigned long*, unsigned long*)));
221 dfaac(Init2, (int FAADAPI (*)(faacDecHandle, unsigned char*, 221 dfaac(Init2, (int FAADAPI (*)(faacDecHandle, unsigned char*,
222 unsigned long, unsigned long*, 222 unsigned long, unsigned long*,
223 unsigned long*))); 223 unsigned long*)));
224 dfaac(Close, (void FAADAPI (*)(faacDecHandle hDecoder))); 224 dfaac(Close, (void FAADAPI (*)(faacDecHandle hDecoder)));
225 dfaac(Decode, (int FAADAPI (*)(faacDecHandle, unsigned char*, 225 dfaac(Decode, (int FAADAPI (*)(faacDecHandle, unsigned char*,
226 unsigned long*, short*, unsigned long*))); 226 unsigned long*, short*, unsigned long*)));
227 #else 227 #else
228 dfaac(SetConfiguration, (unsigned char FAADAPI (*)(faacDecHandle, 228 dfaac(SetConfiguration, (unsigned char FAADAPI (*)(faacDecHandle,
229 faacDecConfigurationPtr))); 229 faacDecConfigurationPtr)));
230 dfaac(Init, (long FAADAPI (*)(faacDecHandle, unsigned char*, 230 dfaac(Init, (long FAADAPI (*)(faacDecHandle, unsigned char*,
231 unsigned long, unsigned long*, unsigned char*))); 231 unsigned long, unsigned long*, unsigned char*)));
232 dfaac(Init2, (char FAADAPI (*)(faacDecHandle, unsigned char*, 232 dfaac(Init2, (char FAADAPI (*)(faacDecHandle, unsigned char*,
233 unsigned long, unsigned long*, 233 unsigned long, unsigned long*,
234 unsigned char*))); 234 unsigned char*)));
235 dfaac(Decode, (void *FAADAPI (*)(faacDecHandle, faacDecFrameInfo*, 235 dfaac(Decode, (void *FAADAPI (*)(faacDecHandle, faacDecFrameInfo*,
236 unsigned char*, unsigned long))); 236 unsigned char*, unsigned long)));
237 dfaac(GetErrorMessage, (char* FAADAPI (*)(unsigned char))); 237 dfaac(GetErrorMessage, (char* FAADAPI (*)(unsigned char)));
238 #endif 238 #endif
239 #undef dfacc 239 #undef dfacc
240 240
241 #ifdef CONFIG_FAADBIN 241 #ifdef CONFIG_FAADBIN
242 break; 242 break;
243 } 243 }
244 if (err) { 244 if (err) {
245 dlclose(s->handle); 245 dlclose(s->handle);
246 av_log(avctx, AV_LOG_ERROR, "FAAD library: cannot resolve %s in %s!\n", 246 av_log(avctx, AV_LOG_ERROR, "FAAD library: cannot resolve %s in %s!\n",
247 err, libfaadname); 247 err, libfaadname);
248 return -1; 248 return -1;
249 } 249 }
250 #endif 250 #endif
251 251
252 s->faac_handle = s->faacDecOpen(); 252 s->faac_handle = s->faacDecOpen();
258 258
259 259
260 faac_cfg = s->faacDecGetCurrentConfiguration(s->faac_handle); 260 faac_cfg = s->faacDecGetCurrentConfiguration(s->faac_handle);
261 261
262 if (faac_cfg) { 262 if (faac_cfg) {
263 switch (avctx->bits_per_sample) { 263 switch (avctx->bits_per_sample) {
264 case 8: av_log(avctx, AV_LOG_ERROR, "FAADlib unsupported bps %d\n", avctx->bits_per_sample); break; 264 case 8: av_log(avctx, AV_LOG_ERROR, "FAADlib unsupported bps %d\n", avctx->bits_per_sample); break;
265 default: 265 default:
266 case 16: 266 case 16:
267 #ifdef FAAD2_VERSION 267 #ifdef FAAD2_VERSION
268 faac_cfg->outputFormat = FAAD_FMT_16BIT; 268 faac_cfg->outputFormat = FAAD_FMT_16BIT;
269 #endif 269 #endif
270 s->sample_size = 2; 270 s->sample_size = 2;
271 break; 271 break;
272 case 24: 272 case 24:
273 #ifdef FAAD2_VERSION 273 #ifdef FAAD2_VERSION
274 faac_cfg->outputFormat = FAAD_FMT_24BIT; 274 faac_cfg->outputFormat = FAAD_FMT_24BIT;
275 #endif 275 #endif
276 s->sample_size = 3; 276 s->sample_size = 3;
277 break; 277 break;
278 case 32: 278 case 32:
279 #ifdef FAAD2_VERSION 279 #ifdef FAAD2_VERSION
280 faac_cfg->outputFormat = FAAD_FMT_32BIT; 280 faac_cfg->outputFormat = FAAD_FMT_32BIT;
281 #endif 281 #endif
282 s->sample_size = 4; 282 s->sample_size = 4;
283 break; 283 break;
284 } 284 }
285 285
286 faac_cfg->defSampleRate = (!avctx->sample_rate) ? 44100 : avctx->sample_rate; 286 faac_cfg->defSampleRate = (!avctx->sample_rate) ? 44100 : avctx->sample_rate;
287 faac_cfg->defObjectType = LC; 287 faac_cfg->defObjectType = LC;
288 } 288 }
289 289
290 s->faacDecSetConfiguration(s->faac_handle, faac_cfg); 290 s->faacDecSetConfiguration(s->faac_handle, faac_cfg);
291 291
292 faac_init_mp4(avctx); 292 faac_init_mp4(avctx);