1 /*
2 * MPEG-4 Audio common code
3 * Copyright (c) 2008 Baptiste Coudurier <baptiste.coudurier@free.fr>
4 * Copyright (c) 2009 Alex Converse <alex.converse@gmail.com>
5 *
6 * This file is part of FFmpeg.
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
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
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
26
27 /**
28 * Parse MPEG-4 audio configuration for ALS object type.
29 * @param[in] gb bit reader context
30 * @param[in] c MPEG4AudioConfig structure to fill
31 * @return on success 0 is returned, otherwise a value < 0
32 */
34 {
36 return -1;
37
39 return -1;
40
41 // override AudioSpecificConfig channel configuration and sample rate
42 // which are buggy in old ALS conformance files
44
45 // skip number of samples
47
48 // read number of channels
51
52 return 0;
53 }
54
55 /* XXX: make sure to update the copies in the different encoders if you change
56 * this table */
58 96000, 88200, 64000, 48000, 44100, 32000,
59 24000, 22050, 16000, 12000, 11025, 8000, 7350
60 };
61
63 0, 1, 2, 3, 4, 5, 6, 8
64 };
65
67 {
71 return object_type;
72 }
73
75 {
77 return *index == 0x0f ?
get_bits(gb, 24) :
79 }
80
82 int bit_size, int sync_extension)
83 {
85 int specific_config_bitindex;
86
97 // check for W6132 Annex YYYY draft MP3onMP4
107 } else {
110 }
112
117
119
121 return -1;
122 }
123
126 if (
show_bits(&gb, 11) == 0x2b7) {
// sync extension
133 }
136 break;
137 } else
139 }
140 }
141
142 //PS requires SBR
145 //Limit implicit PS to the HE-AACv2 Profile
148
149 return specific_config_bitindex;
150 }
151
155 {
156 unsigned int el =
get_bits(gb, bits);
158 return el;
159 }
160
162 {
163 int five_bit_ch, four_bit_ch, comment_size,
bits;
165
166 copy_bits(pb, gb, 10);
//Tag, Object Type, Frequency
167 five_bit_ch =
copy_bits(pb, gb, 4);
//Front
168 five_bit_ch +=
copy_bits(pb, gb, 4);
//Side
169 five_bit_ch +=
copy_bits(pb, gb, 4);
//Back
170 four_bit_ch =
copy_bits(pb, gb, 2);
//LFE
171 four_bit_ch +=
copy_bits(pb, gb, 3);
//Data
172 five_bit_ch +=
copy_bits(pb, gb, 4);
//Coupling
175 if (
copy_bits(pb, gb, 1))
//Stereo Mixdown
177 if (
copy_bits(pb, gb, 1))
//Matrix Mixdown
179 for (bits = five_bit_ch*5+four_bit_ch*4; bits > 16; bits -= 16)
181 if (bits)
186 for (; comment_size > 0; comment_size--)
188
190 }