Mercurial > libavcodec.hg
annotate libfaad.c @ 5319:40af705cef7e libavcodec
AC-3 decoder, soc revision 69, Aug 31 07:12:56 2006 UTC by cloud9
Fix the bugs:
1. The quality of output because of incorrect windowing coefficients.
New code for window generation.
2. Dynrng values were reset where dynrng value is present in the first block,
but not in the subsequent block.
author | jbr |
---|---|
date | Sat, 14 Jul 2007 16:03:14 +0000 |
parents | c3f2379b80db |
children | 49d225414a3f |
rev | line source |
---|---|
1245 | 1 /* |
2 * Faad decoder | |
3 * Copyright (c) 2003 Zdenek Kabelac. | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
4 * Copyright (c) 2004 Thomas Raivio. |
1245 | 5 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3164
diff
changeset
|
6 * This file is part of FFmpeg. |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3164
diff
changeset
|
7 * |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3164
diff
changeset
|
8 * FFmpeg is free software; you can redistribute it and/or |
1245 | 9 * modify it under the terms of the GNU Lesser General Public |
10 * License as published by the Free Software Foundation; either | |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3164
diff
changeset
|
11 * version 2.1 of the License, or (at your option) any later version. |
1245 | 12 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3164
diff
changeset
|
13 * FFmpeg is distributed in the hope that it will be useful, |
1245 | 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
16 * Lesser General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU Lesser General Public | |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3164
diff
changeset
|
19 * License along with FFmpeg; if not, write to the Free Software |
3036
0b546eab515d
Update licensing information: The FSF changed postal address.
diego
parents:
2979
diff
changeset
|
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
1245 | 21 */ |
22 | |
23 /** | |
24 * @file faad.c | |
25 * AAC decoder. | |
26 * | |
27 * still a bit unfinished - but it plays something | |
28 */ | |
29 | |
30 #include "avcodec.h" | |
31 #include "faad.h" | |
32 | |
2061
c28b03fea50f
Building with faad2-cvs fix by ("Steven M. Schultz" <sms at 2bsd dot com>)
michael
parents:
2059
diff
changeset
|
33 #ifndef FAADAPI |
c28b03fea50f
Building with faad2-cvs fix by ("Steven M. Schultz" <sms at 2bsd dot com>)
michael
parents:
2059
diff
changeset
|
34 #define FAADAPI |
c28b03fea50f
Building with faad2-cvs fix by ("Steven M. Schultz" <sms at 2bsd dot com>)
michael
parents:
2059
diff
changeset
|
35 #endif |
c28b03fea50f
Building with faad2-cvs fix by ("Steven M. Schultz" <sms at 2bsd dot com>)
michael
parents:
2059
diff
changeset
|
36 |
1245 | 37 /* |
4336
b7caa9237018
Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents:
4163
diff
changeset
|
38 * when CONFIG_LIBFAADBIN is defined the libfaad will be opened at runtime |
1245 | 39 */ |
4336
b7caa9237018
Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents:
4163
diff
changeset
|
40 //#undef CONFIG_LIBFAADBIN |
b7caa9237018
Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents:
4163
diff
changeset
|
41 //#define CONFIG_LIBFAADBIN |
1245 | 42 |
4336
b7caa9237018
Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents:
4163
diff
changeset
|
43 #ifdef CONFIG_LIBFAADBIN |
1245 | 44 #include <dlfcn.h> |
45 static const char* libfaadname = "libfaad.so.0"; | |
46 #else | |
47 #define dlopen(a) | |
48 #define dlclose(a) | |
49 #endif | |
50 | |
51 typedef struct { | |
2979 | 52 void* handle; /* dlopen handle */ |
53 void* faac_handle; /* FAAD library handle */ | |
1245 | 54 int sample_size; |
3097 | 55 int init; |
1245 | 56 |
57 /* faad calls */ | |
58 faacDecHandle FAADAPI (*faacDecOpen)(void); | |
59 faacDecConfigurationPtr FAADAPI (*faacDecGetCurrentConfiguration)(faacDecHandle hDecoder); | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
60 #ifndef FAAD2_VERSION |
2979 | 61 int FAADAPI (*faacDecSetConfiguration)(faacDecHandle hDecoder, |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
62 faacDecConfigurationPtr config); |
2979 | 63 int FAADAPI (*faacDecInit)(faacDecHandle hDecoder, |
64 unsigned char *buffer, | |
65 unsigned long *samplerate, | |
66 unsigned long *channels); | |
67 int FAADAPI (*faacDecInit2)(faacDecHandle hDecoder, unsigned char *pBuffer, | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
68 unsigned long SizeOfDecoderSpecificInfo, |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
69 unsigned long *samplerate, unsigned long *channels); |
2979 | 70 int FAADAPI (*faacDecDecode)(faacDecHandle hDecoder, |
71 unsigned char *buffer, | |
72 unsigned long *bytesconsumed, | |
73 short *sample_buffer, | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
74 unsigned long *samples); |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
75 #else |
2979 | 76 unsigned char FAADAPI (*faacDecSetConfiguration)(faacDecHandle hDecoder, |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
77 faacDecConfigurationPtr config); |
2979 | 78 long FAADAPI (*faacDecInit)(faacDecHandle hDecoder, |
79 unsigned char *buffer, | |
80 unsigned long buffer_size, | |
81 unsigned long *samplerate, | |
82 unsigned char *channels); | |
83 char FAADAPI (*faacDecInit2)(faacDecHandle hDecoder, unsigned char *pBuffer, | |
1245 | 84 unsigned long SizeOfDecoderSpecificInfo, |
85 unsigned long *samplerate, unsigned char *channels); | |
2979 | 86 void *FAADAPI (*faacDecDecode)(faacDecHandle hDecoder, |
87 faacDecFrameInfo *hInfo, | |
88 unsigned char *buffer, | |
89 unsigned long buffer_size); | |
90 char* FAADAPI (*faacDecGetErrorMessage)(unsigned char errcode); | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
91 #endif |
2967 | 92 |
1245 | 93 void FAADAPI (*faacDecClose)(faacDecHandle hDecoder); |
2967 | 94 |
95 | |
1245 | 96 } FAACContext; |
97 | |
98 static const unsigned long faac_srates[] = | |
99 { | |
100 96000, 88200, 64000, 48000, 44100, 32000, | |
101 24000, 22050, 16000, 12000, 11025, 8000 | |
102 }; | |
103 | |
104 static int faac_init_mp4(AVCodecContext *avctx) | |
105 { | |
4827 | 106 FAACContext *s = avctx->priv_data; |
1245 | 107 unsigned long samplerate; |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
108 #ifndef FAAD2_VERSION |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
109 unsigned long channels; |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
110 #else |
1245 | 111 unsigned char channels; |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
112 #endif |
1245 | 113 int r = 0; |
114 | |
3097 | 115 if (avctx->extradata){ |
2979 | 116 r = s->faacDecInit2(s->faac_handle, (uint8_t*) avctx->extradata, |
117 avctx->extradata_size, | |
118 &samplerate, &channels); | |
3097 | 119 if (r < 0){ |
120 av_log(avctx, AV_LOG_ERROR, | |
121 "faacDecInit2 failed r:%d sr:%ld ch:%ld s:%d\n", | |
122 r, samplerate, (long)channels, avctx->extradata_size); | |
123 } else { | |
124 avctx->sample_rate = samplerate; | |
125 avctx->channels = channels; | |
126 s->init = 1; | |
127 } | |
128 } | |
2059
ad972ab280bc
sample_rate and channels in aac audio patch by (Luca Abeni <lucabe72 at email dot it>)
michael
parents:
1929
diff
changeset
|
129 |
1245 | 130 return r; |
131 } | |
132 | |
133 static int faac_decode_frame(AVCodecContext *avctx, | |
134 void *data, int *data_size, | |
135 uint8_t *buf, int buf_size) | |
136 { | |
4827 | 137 FAACContext *s = avctx->priv_data; |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
138 #ifndef FAAD2_VERSION |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
139 unsigned long bytesconsumed; |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
140 short *sample_buffer = NULL; |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
141 unsigned long samples; |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
142 int out; |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
143 #else |
1245 | 144 faacDecFrameInfo frame_info; |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
145 void *out; |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
146 #endif |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
147 if(buf_size == 0) |
2979 | 148 return 0; |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
149 #ifndef FAAD2_VERSION |
2967 | 150 out = s->faacDecDecode(s->faac_handle, |
151 (unsigned char*)buf, | |
152 &bytesconsumed, | |
153 data, | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
154 &samples); |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
155 samples *= s->sample_size; |
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
156 if (data_size) |
2979 | 157 *data_size = samples; |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
158 return (buf_size < (int)bytesconsumed) |
2979 | 159 ? buf_size : (int)bytesconsumed; |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
160 #else |
2967 | 161 |
3097 | 162 if(!s->init){ |
163 unsigned long srate; | |
164 unsigned char channels; | |
3155 | 165 int r = s->faacDecInit(s->faac_handle, buf, buf_size, &srate, &channels); |
3097 | 166 if(r < 0){ |
167 av_log(avctx, AV_LOG_ERROR, "faac: codec init failed: %s\n", | |
168 s->faacDecGetErrorMessage(frame_info.error)); | |
3164
d771383fbcb8
Make faac_decode_frame return -1 on error and not 0 which avoids
mru
parents:
3155
diff
changeset
|
169 return -1; |
3097 | 170 } |
171 avctx->sample_rate = srate; | |
172 avctx->channels = channels; | |
173 s->init = 1; | |
174 } | |
175 | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
176 out = s->faacDecDecode(s->faac_handle, &frame_info, (unsigned char*)buf, (unsigned long)buf_size); |
1245 | 177 |
178 if (frame_info.error > 0) { | |
2979 | 179 av_log(avctx, AV_LOG_ERROR, "faac: frame decoding failed: %s\n", |
180 s->faacDecGetErrorMessage(frame_info.error)); | |
3164
d771383fbcb8
Make faac_decode_frame return -1 on error and not 0 which avoids
mru
parents:
3155
diff
changeset
|
181 return -1; |
1245 | 182 } |
183 | |
184 frame_info.samples *= s->sample_size; | |
185 memcpy(data, out, frame_info.samples); // CHECKME - can we cheat this one | |
186 | |
187 if (data_size) | |
2979 | 188 *data_size = frame_info.samples; |
1245 | 189 |
190 return (buf_size < (int)frame_info.bytesconsumed) | |
2979 | 191 ? buf_size : (int)frame_info.bytesconsumed; |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
192 #endif |
1245 | 193 } |
194 | |
195 static int faac_decode_end(AVCodecContext *avctx) | |
196 { | |
4827 | 197 FAACContext *s = avctx->priv_data; |
1245 | 198 |
4753 | 199 s->faacDecClose(s->faac_handle); |
1245 | 200 |
201 dlclose(s->handle); | |
202 return 0; | |
203 } | |
204 | |
205 static int faac_decode_init(AVCodecContext *avctx) | |
206 { | |
4827 | 207 FAACContext *s = avctx->priv_data; |
1245 | 208 faacDecConfigurationPtr faac_cfg; |
209 | |
4336
b7caa9237018
Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents:
4163
diff
changeset
|
210 #ifdef CONFIG_LIBFAADBIN |
1245 | 211 const char* err = 0; |
212 | |
213 s->handle = dlopen(libfaadname, RTLD_LAZY); | |
214 if (!s->handle) | |
215 { | |
2979 | 216 av_log(avctx, AV_LOG_ERROR, "FAAD library: %s could not be opened! \n%s\n", |
217 libfaadname, dlerror()); | |
1245 | 218 return -1; |
219 } | |
220 #define dfaac(a, b) \ | |
221 do { static const char* n = "faacDec" #a; \ | |
222 if ((s->faacDec ## a = b dlsym( s->handle, n )) == NULL) { err = n; break; } } while(0) | |
223 for(;;) { | |
4336
b7caa9237018
Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents:
4163
diff
changeset
|
224 #else /* !CONFIG_LIBFAADBIN */ |
1245 | 225 #define dfaac(a, b) s->faacDec ## a = faacDec ## a |
4336
b7caa9237018
Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents:
4163
diff
changeset
|
226 #endif /* CONFIG_LIBFAADBIN */ |
1245 | 227 |
228 // resolve all needed function calls | |
2979 | 229 dfaac(Open, (faacDecHandle FAADAPI (*)(void))); |
4753 | 230 dfaac(Close, (void FAADAPI (*)(faacDecHandle hDecoder))); |
2979 | 231 dfaac(GetCurrentConfiguration, (faacDecConfigurationPtr |
232 FAADAPI (*)(faacDecHandle))); | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
233 #ifndef FAAD2_VERSION |
2979 | 234 dfaac(SetConfiguration, (int FAADAPI (*)(faacDecHandle, |
235 faacDecConfigurationPtr))); | |
1245 | 236 |
2979 | 237 dfaac(Init, (int FAADAPI (*)(faacDecHandle, unsigned char*, |
238 unsigned long*, unsigned long*))); | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
239 dfaac(Init2, (int FAADAPI (*)(faacDecHandle, unsigned char*, |
2979 | 240 unsigned long, unsigned long*, |
241 unsigned long*))); | |
242 dfaac(Decode, (int FAADAPI (*)(faacDecHandle, unsigned char*, | |
243 unsigned long*, short*, unsigned long*))); | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
244 #else |
2979 | 245 dfaac(SetConfiguration, (unsigned char FAADAPI (*)(faacDecHandle, |
246 faacDecConfigurationPtr))); | |
247 dfaac(Init, (long FAADAPI (*)(faacDecHandle, unsigned char*, | |
248 unsigned long, unsigned long*, unsigned char*))); | |
249 dfaac(Init2, (char FAADAPI (*)(faacDecHandle, unsigned char*, | |
250 unsigned long, unsigned long*, | |
251 unsigned char*))); | |
252 dfaac(Decode, (void *FAADAPI (*)(faacDecHandle, faacDecFrameInfo*, | |
253 unsigned char*, unsigned long))); | |
254 dfaac(GetErrorMessage, (char* FAADAPI (*)(unsigned char))); | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
255 #endif |
1245 | 256 #undef dfacc |
257 | |
4336
b7caa9237018
Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents:
4163
diff
changeset
|
258 #ifdef CONFIG_LIBFAADBIN |
1245 | 259 break; |
260 } | |
261 if (err) { | |
262 dlclose(s->handle); | |
2979 | 263 av_log(avctx, AV_LOG_ERROR, "FAAD library: cannot resolve %s in %s!\n", |
264 err, libfaadname); | |
1245 | 265 return -1; |
266 } | |
267 #endif | |
268 | |
269 s->faac_handle = s->faacDecOpen(); | |
270 if (!s->faac_handle) { | |
1602
fdb8244da1e5
av_log patch(2 of ?) by (Michel Bardiaux <mbardiaux at peaktime dot be>)
michael
parents:
1245
diff
changeset
|
271 av_log(avctx, AV_LOG_ERROR, "FAAD library: cannot create handler!\n"); |
1245 | 272 faac_decode_end(avctx); |
273 return -1; | |
274 } | |
275 | |
276 | |
277 faac_cfg = s->faacDecGetCurrentConfiguration(s->faac_handle); | |
278 | |
279 if (faac_cfg) { | |
2979 | 280 switch (avctx->bits_per_sample) { |
281 case 8: av_log(avctx, AV_LOG_ERROR, "FAADlib unsupported bps %d\n", avctx->bits_per_sample); break; | |
282 default: | |
283 case 16: | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
284 #ifdef FAAD2_VERSION |
2979 | 285 faac_cfg->outputFormat = FAAD_FMT_16BIT; |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
286 #endif |
2979 | 287 s->sample_size = 2; |
288 break; | |
289 case 24: | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
290 #ifdef FAAD2_VERSION |
2979 | 291 faac_cfg->outputFormat = FAAD_FMT_24BIT; |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
292 #endif |
2979 | 293 s->sample_size = 3; |
294 break; | |
295 case 32: | |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
296 #ifdef FAAD2_VERSION |
2979 | 297 faac_cfg->outputFormat = FAAD_FMT_32BIT; |
1929
d4525c3065d0
aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents:
1602
diff
changeset
|
298 #endif |
2979 | 299 s->sample_size = 4; |
300 break; | |
301 } | |
1245 | 302 |
2979 | 303 faac_cfg->defSampleRate = (!avctx->sample_rate) ? 44100 : avctx->sample_rate; |
304 faac_cfg->defObjectType = LC; | |
1245 | 305 } |
306 | |
307 s->faacDecSetConfiguration(s->faac_handle, faac_cfg); | |
308 | |
309 faac_init_mp4(avctx); | |
310 | |
311 return 0; | |
312 } | |
313 | |
314 #define AAC_CODEC(id, name) \ | |
315 AVCodec name ## _decoder = { \ | |
316 #name, \ | |
317 CODEC_TYPE_AUDIO, \ | |
318 id, \ | |
319 sizeof(FAACContext), \ | |
320 faac_decode_init, \ | |
321 NULL, \ | |
322 faac_decode_end, \ | |
323 faac_decode_frame, \ | |
324 } | |
325 | |
326 // FIXME - raw AAC files - maybe just one entry will be enough | |
5092
fd173be649b7
Rename aac_decoder to libfaad_decoder for consistency and to be able to
diego
parents:
4827
diff
changeset
|
327 AAC_CODEC(CODEC_ID_AAC, libfaad); |
4163
1e8621844040
get rid of CODEC_ID_MPEG4AAC after next version bump, and change it to CODEC_ID_AAC where used
bcoudurier
parents:
3947
diff
changeset
|
328 #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) |
1245 | 329 // If it's mp4 file - usually embeded into Qt Mov |
330 AAC_CODEC(CODEC_ID_MPEG4AAC, mpeg4aac); | |
4163
1e8621844040
get rid of CODEC_ID_MPEG4AAC after next version bump, and change it to CODEC_ID_AAC where used
bcoudurier
parents:
3947
diff
changeset
|
331 #endif |
1245 | 332 |
333 #undef AAC_CODEC |