annotate libfaad.c @ 6170:8cbfc9d75833 libavcodec

Put some disabled functions that are only used in the test program in cabac.c under TEST as preprocessor conditional, same as the test program.
author diego
date Wed, 23 Jan 2008 10:19:39 +0000
parents 49d225414a3f
children 3544e992b60b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
1 /*
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
2 * Faad decoder
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
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
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
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
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
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
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
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
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
16 * Lesser General Public License for more details.
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
17 *
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
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
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
21 */
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
22
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
23 /**
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
24 * @file faad.c
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
25 * AAC decoder.
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
26 *
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
27 * still a bit unfinished - but it plays something
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
28 */
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
29
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
30 #include "avcodec.h"
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
31 #include "faad.h"
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
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
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
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
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
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
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
42
4336
b7caa9237018 Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents: 4163
diff changeset
43 #ifdef CONFIG_LIBFAADBIN
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
44 #include <dlfcn.h>
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
45 static const char* libfaadname = "libfaad.so.0";
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
46 #else
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
47 #define dlopen(a)
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
48 #define dlclose(a)
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
49 #endif
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
50
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
51 typedef struct {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
52 void* handle; /* dlopen handle */
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
53 void* faac_handle; /* FAAD library handle */
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
54 int sample_size;
3097
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
55 int init;
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
56
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
57 /* faad calls */
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
58 faacDecHandle FAADAPI (*faacDecOpen)(void);
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
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
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
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
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
63 int FAADAPI (*faacDecInit)(faacDecHandle hDecoder,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
64 unsigned char *buffer,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
65 unsigned long *samplerate,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
66 unsigned long *channels);
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
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
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
70 int FAADAPI (*faacDecDecode)(faacDecHandle hDecoder,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
71 unsigned char *buffer,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
72 unsigned long *bytesconsumed,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
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
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
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
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
78 long FAADAPI (*faacDecInit)(faacDecHandle hDecoder,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
79 unsigned char *buffer,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
80 unsigned long buffer_size,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
81 unsigned long *samplerate,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
82 unsigned char *channels);
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
83 char FAADAPI (*faacDecInit2)(faacDecHandle hDecoder, unsigned char *pBuffer,
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
84 unsigned long SizeOfDecoderSpecificInfo,
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
85 unsigned long *samplerate, unsigned char *channels);
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
86 void *FAADAPI (*faacDecDecode)(faacDecHandle hDecoder,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
87 faacDecFrameInfo *hInfo,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
88 unsigned char *buffer,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
89 unsigned long buffer_size);
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
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
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2628
diff changeset
92
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
93 void FAADAPI (*faacDecClose)(faacDecHandle hDecoder);
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2628
diff changeset
94
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2628
diff changeset
95
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
96 } FAACContext;
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
97
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
98 static const unsigned long faac_srates[] =
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
99 {
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
100 96000, 88200, 64000, 48000, 44100, 32000,
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
101 24000, 22050, 16000, 12000, 11025, 8000
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
102 };
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
103
6119
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
104 static void channel_setup(AVCodecContext *avctx)
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
105 {
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
106 #ifdef FAAD2_VERSION
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
107 FAACContext *s = avctx->priv_data;
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
108 if (avctx->request_channels > 0 && avctx->request_channels == 2 &&
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
109 avctx->request_channels < avctx->channels) {
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
110 faacDecConfigurationPtr faac_cfg;
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
111 avctx->channels = 2;
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
112 faac_cfg = s->faacDecGetCurrentConfiguration(s->faac_handle);
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
113 faac_cfg->downMatrix = 1;
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
114 s->faacDecSetConfiguration(s->faac_handle, faac_cfg);
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
115 }
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
116 #endif
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
117 }
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
118
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
119 static int faac_init_mp4(AVCodecContext *avctx)
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
120 {
4827
b3ee9a1526b0 Get rid of unnecessary pointer casts.
diego
parents: 4753
diff changeset
121 FAACContext *s = avctx->priv_data;
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
122 unsigned long samplerate;
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
123 #ifndef FAAD2_VERSION
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
124 unsigned long channels;
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
125 #else
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
126 unsigned char channels;
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
127 #endif
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
128 int r = 0;
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
129
3097
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
130 if (avctx->extradata){
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
131 r = s->faacDecInit2(s->faac_handle, (uint8_t*) avctx->extradata,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
132 avctx->extradata_size,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
133 &samplerate, &channels);
3097
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
134 if (r < 0){
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
135 av_log(avctx, AV_LOG_ERROR,
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
136 "faacDecInit2 failed r:%d sr:%ld ch:%ld s:%d\n",
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
137 r, samplerate, (long)channels, avctx->extradata_size);
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
138 } else {
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
139 avctx->sample_rate = samplerate;
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
140 avctx->channels = channels;
6119
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
141 channel_setup(avctx);
3097
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
142 s->init = 1;
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
143 }
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
144 }
2059
ad972ab280bc sample_rate and channels in aac audio patch by (Luca Abeni <lucabe72 at email dot it>)
michael
parents: 1929
diff changeset
145
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
146 return r;
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
147 }
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
148
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
149 static int faac_decode_frame(AVCodecContext *avctx,
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
150 void *data, int *data_size,
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
151 uint8_t *buf, int buf_size)
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
152 {
4827
b3ee9a1526b0 Get rid of unnecessary pointer casts.
diego
parents: 4753
diff changeset
153 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
154 #ifndef FAAD2_VERSION
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
155 unsigned long bytesconsumed;
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
156 short *sample_buffer = NULL;
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
157 unsigned long samples;
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
158 int out;
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
159 #else
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
160 faacDecFrameInfo frame_info;
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
161 void *out;
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
162 #endif
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
163 if(buf_size == 0)
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
164 return 0;
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
165 #ifndef FAAD2_VERSION
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2628
diff changeset
166 out = s->faacDecDecode(s->faac_handle,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2628
diff changeset
167 (unsigned char*)buf,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2628
diff changeset
168 &bytesconsumed,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2628
diff changeset
169 data,
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
170 &samples);
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
171 samples *= s->sample_size;
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
172 if (data_size)
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
173 *data_size = samples;
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
174 return (buf_size < (int)bytesconsumed)
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
175 ? buf_size : (int)bytesconsumed;
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
176 #else
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2628
diff changeset
177
3097
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
178 if(!s->init){
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
179 unsigned long srate;
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
180 unsigned char channels;
3155
c7d2c122a718 * bugfixing call reference
kabi
parents: 3097
diff changeset
181 int r = s->faacDecInit(s->faac_handle, buf, buf_size, &srate, &channels);
3097
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
182 if(r < 0){
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
183 av_log(avctx, AV_LOG_ERROR, "faac: codec init failed: %s\n",
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
184 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
185 return -1;
3097
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
186 }
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
187 avctx->sample_rate = srate;
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
188 avctx->channels = channels;
6119
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
189 channel_setup(avctx);
3097
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
190 s->init = 1;
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
191 }
41fb9bda307d decode adts aac streams
mru
parents: 3036
diff changeset
192
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
193 out = s->faacDecDecode(s->faac_handle, &frame_info, (unsigned char*)buf, (unsigned long)buf_size);
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
194
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
195 if (frame_info.error > 0) {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
196 av_log(avctx, AV_LOG_ERROR, "faac: frame decoding failed: %s\n",
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
197 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
198 return -1;
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
199 }
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
200
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
201 frame_info.samples *= s->sample_size;
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
202 memcpy(data, out, frame_info.samples); // CHECKME - can we cheat this one
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
203
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
204 if (data_size)
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
205 *data_size = frame_info.samples;
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
206
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
207 return (buf_size < (int)frame_info.bytesconsumed)
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
208 ? 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
209 #endif
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
210 }
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
211
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
212 static int faac_decode_end(AVCodecContext *avctx)
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
213 {
4827
b3ee9a1526b0 Get rid of unnecessary pointer casts.
diego
parents: 4753
diff changeset
214 FAACContext *s = avctx->priv_data;
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
215
4753
7115a2f0854d call faacDecClose() with all libfaad versions
mru
parents: 4336
diff changeset
216 s->faacDecClose(s->faac_handle);
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
217
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
218 dlclose(s->handle);
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
219 return 0;
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
220 }
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
221
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
222 static int faac_decode_init(AVCodecContext *avctx)
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
223 {
4827
b3ee9a1526b0 Get rid of unnecessary pointer casts.
diego
parents: 4753
diff changeset
224 FAACContext *s = avctx->priv_data;
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
225 faacDecConfigurationPtr faac_cfg;
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
226
4336
b7caa9237018 Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents: 4163
diff changeset
227 #ifdef CONFIG_LIBFAADBIN
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
228 const char* err = 0;
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
229
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
230 s->handle = dlopen(libfaadname, RTLD_LAZY);
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
231 if (!s->handle)
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
232 {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
233 av_log(avctx, AV_LOG_ERROR, "FAAD library: %s could not be opened! \n%s\n",
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
234 libfaadname, dlerror());
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
235 return -1;
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
236 }
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
237 #define dfaac(a, b) \
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
238 do { static const char* n = "faacDec" #a; \
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
239 if ((s->faacDec ## a = b dlsym( s->handle, n )) == NULL) { err = n; break; } } while(0)
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
240 for(;;) {
4336
b7caa9237018 Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents: 4163
diff changeset
241 #else /* !CONFIG_LIBFAADBIN */
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
242 #define dfaac(a, b) s->faacDec ## a = faacDec ## a
4336
b7caa9237018 Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents: 4163
diff changeset
243 #endif /* CONFIG_LIBFAADBIN */
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
244
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
245 // resolve all needed function calls
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
246 dfaac(Open, (faacDecHandle FAADAPI (*)(void)));
4753
7115a2f0854d call faacDecClose() with all libfaad versions
mru
parents: 4336
diff changeset
247 dfaac(Close, (void FAADAPI (*)(faacDecHandle hDecoder)));
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
248 dfaac(GetCurrentConfiguration, (faacDecConfigurationPtr
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
249 FAADAPI (*)(faacDecHandle)));
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
250 #ifndef FAAD2_VERSION
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
251 dfaac(SetConfiguration, (int FAADAPI (*)(faacDecHandle,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
252 faacDecConfigurationPtr)));
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
253
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
254 dfaac(Init, (int FAADAPI (*)(faacDecHandle, unsigned char*,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
255 unsigned long*, unsigned long*)));
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
256 dfaac(Init2, (int FAADAPI (*)(faacDecHandle, unsigned char*,
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
257 unsigned long, unsigned long*,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
258 unsigned long*)));
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
259 dfaac(Decode, (int FAADAPI (*)(faacDecHandle, unsigned char*,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
260 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
261 #else
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
262 dfaac(SetConfiguration, (unsigned char FAADAPI (*)(faacDecHandle,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
263 faacDecConfigurationPtr)));
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
264 dfaac(Init, (long FAADAPI (*)(faacDecHandle, unsigned char*,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
265 unsigned long, unsigned long*, unsigned char*)));
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
266 dfaac(Init2, (char FAADAPI (*)(faacDecHandle, unsigned char*,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
267 unsigned long, unsigned long*,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
268 unsigned char*)));
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
269 dfaac(Decode, (void *FAADAPI (*)(faacDecHandle, faacDecFrameInfo*,
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
270 unsigned char*, unsigned long)));
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
271 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
272 #endif
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
273 #undef dfacc
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
274
4336
b7caa9237018 Rename variables: faad --> libfaad, faac --> libfaac, faadbin --> libfaadbin
diego
parents: 4163
diff changeset
275 #ifdef CONFIG_LIBFAADBIN
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
276 break;
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
277 }
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
278 if (err) {
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
279 dlclose(s->handle);
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
280 av_log(avctx, AV_LOG_ERROR, "FAAD library: cannot resolve %s in %s!\n",
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
281 err, libfaadname);
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
282 return -1;
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
283 }
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
284 #endif
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
285
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
286 s->faac_handle = s->faacDecOpen();
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
287 if (!s->faac_handle) {
1602
fdb8244da1e5 av_log patch(2 of ?) by (Michel Bardiaux <mbardiaux at peaktime dot be>)
michael
parents: 1245
diff changeset
288 av_log(avctx, AV_LOG_ERROR, "FAAD library: cannot create handler!\n");
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
289 faac_decode_end(avctx);
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
290 return -1;
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
291 }
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
292
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
293
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
294 faac_cfg = s->faacDecGetCurrentConfiguration(s->faac_handle);
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
295
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
296 if (faac_cfg) {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
297 switch (avctx->bits_per_sample) {
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
298 case 8: av_log(avctx, AV_LOG_ERROR, "FAADlib unsupported bps %d\n", avctx->bits_per_sample); break;
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
299 default:
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
300 case 16:
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
301 #ifdef FAAD2_VERSION
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
302 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
303 #endif
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
304 s->sample_size = 2;
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
305 break;
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
306 case 24:
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
307 #ifdef FAAD2_VERSION
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
308 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
309 #endif
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
310 s->sample_size = 3;
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
311 break;
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
312 case 32:
1929
d4525c3065d0 aac decoding patch by ("Thomas Raivio" <tjraivio at cc dot hut dot fi>)
michael
parents: 1602
diff changeset
313 #ifdef FAAD2_VERSION
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
314 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
315 #endif
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
316 s->sample_size = 4;
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
317 break;
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
318 }
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
319
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
320 faac_cfg->defSampleRate = (!avctx->sample_rate) ? 44100 : avctx->sample_rate;
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 2967
diff changeset
321 faac_cfg->defObjectType = LC;
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
322 }
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
323
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
324 s->faacDecSetConfiguration(s->faac_handle, faac_cfg);
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
325
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
326 faac_init_mp4(avctx);
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
327
6119
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
328 if(!s->init && avctx->channels > 0)
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
329 channel_setup(avctx);
49d225414a3f add downmixing support to libfaad decoder
jbr
parents: 5101
diff changeset
330
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
331 return 0;
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
332 }
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
333
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
334 #define AAC_CODEC(id, name) \
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
335 AVCodec name ## _decoder = { \
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
336 #name, \
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
337 CODEC_TYPE_AUDIO, \
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
338 id, \
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
339 sizeof(FAACContext), \
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
340 faac_decode_init, \
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
341 NULL, \
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
342 faac_decode_end, \
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
343 faac_decode_frame, \
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
344 }
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
345
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
346 // 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
347 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
348 #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
349 // If it's mp4 file - usually embeded into Qt Mov
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
350 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
351 #endif
1245
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
352
cd88870c4560 * support for AAC audio streams via libfaad
kabi
parents:
diff changeset
353 #undef AAC_CODEC