3 * copyright (c) 2002 Fabrice Bellard
5 * This file is part of FFmpeg.
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 * @file mpegaudiodectab.h
24 * mpeg audio layer decoder tables.
27 const uint16_t mpa_bitrate_tab[2][3][15] = {
28 { {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448 },
29 {0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384 },
30 {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 } },
31 { {0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256},
32 {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160},
33 {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160}
37 const uint16_t mpa_freq_tab[3] = { 44100, 48000, 32000 };
39 /*******************************************************/
40 /* half mpeg encoding window (full precision) */
41 const int32_t mpa_enwindow[257] = {
42 0, -1, -1, -1, -1, -1, -1, -2,
43 -2, -2, -2, -3, -3, -4, -4, -5,
44 -5, -6, -7, -7, -8, -9, -10, -11,
45 -13, -14, -16, -17, -19, -21, -24, -26,
46 -29, -31, -35, -38, -41, -45, -49, -53,
47 -58, -63, -68, -73, -79, -85, -91, -97,
48 -104, -111, -117, -125, -132, -139, -147, -154,
49 -161, -169, -176, -183, -190, -196, -202, -208,
50 213, 218, 222, 225, 227, 228, 228, 227,
51 224, 221, 215, 208, 200, 189, 177, 163,
52 146, 127, 106, 83, 57, 29, -2, -36,
53 -72, -111, -153, -197, -244, -294, -347, -401,
54 -459, -519, -581, -645, -711, -779, -848, -919,
55 -991, -1064, -1137, -1210, -1283, -1356, -1428, -1498,
56 -1567, -1634, -1698, -1759, -1817, -1870, -1919, -1962,
57 -2001, -2032, -2057, -2075, -2085, -2087, -2080, -2063,
58 2037, 2000, 1952, 1893, 1822, 1739, 1644, 1535,
59 1414, 1280, 1131, 970, 794, 605, 402, 185,
60 -45, -288, -545, -814, -1095, -1388, -1692, -2006,
61 -2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788,
62 -5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597,
63 -7910, -8209, -8491, -8755, -8998, -9219, -9416, -9585,
64 -9727, -9838, -9916, -9959, -9966, -9935, -9863, -9750,
65 -9592, -9389, -9139, -8840, -8492, -8092, -7640, -7134,
66 6574, 5959, 5288, 4561, 3776, 2935, 2037, 1082,
67 70, -998, -2122, -3300, -4533, -5818, -7154, -8540,
68 -9975,-11455,-12980,-14548,-16155,-17799,-19478,-21189,
69 -22929,-24694,-26482,-28289,-30112,-31947,-33791,-35640,
70 -37489,-39336,-41176,-43006,-44821,-46617,-48390,-50137,
71 -51853,-53534,-55178,-56778,-58333,-59838,-61289,-62684,
72 -64019,-65290,-66494,-67629,-68692,-69679,-70590,-71420,
73 -72169,-72835,-73415,-73908,-74313,-74630,-74856,-74992,
77 /*******************************************************/
80 const int sblimit_table[5] = { 27 , 30 , 8, 12 , 30 };
82 const int quant_steps[17] = {
84 31, 63, 127, 255, 511,
85 1023, 2047, 4095, 8191, 16383,
89 /* we use a negative value if grouped */
90 const int quant_bits[17] = {
97 /* encoding tables which give the quantization index. Note how it is
98 possible to store them efficiently ! */
99 static const unsigned char alloc_table_0[] = {
100 4, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
101 4, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
102 4, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
103 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
104 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
105 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
106 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
107 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
108 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
109 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
110 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
111 3, 0, 1, 2, 3, 4, 5, 16,
112 3, 0, 1, 2, 3, 4, 5, 16,
113 3, 0, 1, 2, 3, 4, 5, 16,
114 3, 0, 1, 2, 3, 4, 5, 16,
115 3, 0, 1, 2, 3, 4, 5, 16,
116 3, 0, 1, 2, 3, 4, 5, 16,
117 3, 0, 1, 2, 3, 4, 5, 16,
118 3, 0, 1, 2, 3, 4, 5, 16,
119 3, 0, 1, 2, 3, 4, 5, 16,
120 3, 0, 1, 2, 3, 4, 5, 16,
121 3, 0, 1, 2, 3, 4, 5, 16,
122 3, 0, 1, 2, 3, 4, 5, 16,
129 static const unsigned char alloc_table_1[] = {
130 4, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
131 4, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
132 4, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
133 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
134 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
135 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
136 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
137 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
138 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
139 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
140 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16,
141 3, 0, 1, 2, 3, 4, 5, 16,
142 3, 0, 1, 2, 3, 4, 5, 16,
143 3, 0, 1, 2, 3, 4, 5, 16,
144 3, 0, 1, 2, 3, 4, 5, 16,
145 3, 0, 1, 2, 3, 4, 5, 16,
146 3, 0, 1, 2, 3, 4, 5, 16,
147 3, 0, 1, 2, 3, 4, 5, 16,
148 3, 0, 1, 2, 3, 4, 5, 16,
149 3, 0, 1, 2, 3, 4, 5, 16,
150 3, 0, 1, 2, 3, 4, 5, 16,
151 3, 0, 1, 2, 3, 4, 5, 16,
152 3, 0, 1, 2, 3, 4, 5, 16,
162 static const unsigned char alloc_table_2[] = {
163 4, 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
164 4, 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
165 3, 0, 1, 3, 4, 5, 6, 7,
166 3, 0, 1, 3, 4, 5, 6, 7,
167 3, 0, 1, 3, 4, 5, 6, 7,
168 3, 0, 1, 3, 4, 5, 6, 7,
169 3, 0, 1, 3, 4, 5, 6, 7,
170 3, 0, 1, 3, 4, 5, 6, 7,
173 static const unsigned char alloc_table_3[] = {
174 4, 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
175 4, 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
176 3, 0, 1, 3, 4, 5, 6, 7,
177 3, 0, 1, 3, 4, 5, 6, 7,
178 3, 0, 1, 3, 4, 5, 6, 7,
179 3, 0, 1, 3, 4, 5, 6, 7,
180 3, 0, 1, 3, 4, 5, 6, 7,
181 3, 0, 1, 3, 4, 5, 6, 7,
182 3, 0, 1, 3, 4, 5, 6, 7,
183 3, 0, 1, 3, 4, 5, 6, 7,
184 3, 0, 1, 3, 4, 5, 6, 7,
185 3, 0, 1, 3, 4, 5, 6, 7,
188 static const unsigned char alloc_table_4[] = {
189 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
190 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
191 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
192 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
193 3, 0, 1, 3, 4, 5, 6, 7,
194 3, 0, 1, 3, 4, 5, 6, 7,
195 3, 0, 1, 3, 4, 5, 6, 7,
196 3, 0, 1, 3, 4, 5, 6, 7,
197 3, 0, 1, 3, 4, 5, 6, 7,
198 3, 0, 1, 3, 4, 5, 6, 7,
199 3, 0, 1, 3, 4, 5, 6, 7,
221 const unsigned char *alloc_tables[5] =
222 { alloc_table_0, alloc_table_1, alloc_table_2, alloc_table_3, alloc_table_4, };
224 /*******************************************************/
227 /* layer3 scale factor size */
228 static const uint8_t slen_table[2][16] = {
229 { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 },
230 { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 },
233 /* number of lsf scale factors for a given size */
234 static const uint8_t lsf_nsf_table[6][3][4] = {
235 { { 6, 5, 5, 5 }, { 9, 9, 9, 9 }, { 6, 9, 9, 9 } },
236 { { 6, 5, 7, 3 }, { 9, 9, 12, 6 }, { 6, 9, 12, 6 } },
237 { { 11, 10, 0, 0 }, { 18, 18, 0, 0 }, { 15, 18, 0, 0 } },
238 { { 7, 7, 7, 0 }, { 12, 12, 12, 0 }, { 6, 15, 12, 0 } },
239 { { 6, 6, 6, 3 }, { 12, 9, 9, 6 }, { 6, 12, 9, 6 } },
240 { { 8, 8, 5, 0 }, { 15, 12, 9, 0 }, { 6, 18, 9, 0 } },
243 /* mpegaudio layer 3 huffman tables */
245 static const uint16_t mpa_huffcodes_1[4] = {
246 0x0001, 0x0001, 0x0001, 0x0000,
249 static const uint8_t mpa_huffbits_1[4] = {
253 static const uint16_t mpa_huffcodes_2[9] = {
254 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0001, 0x0003, 0x0002,
258 static const uint8_t mpa_huffbits_2[9] = {
259 1, 3, 6, 3, 3, 5, 5, 5,
263 static const uint16_t mpa_huffcodes_3[9] = {
264 0x0003, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0003, 0x0002,
268 static const uint8_t mpa_huffbits_3[9] = {
269 2, 2, 6, 3, 2, 5, 5, 5,
273 static const uint16_t mpa_huffcodes_5[16] = {
274 0x0001, 0x0002, 0x0006, 0x0005, 0x0003, 0x0001, 0x0004, 0x0004,
275 0x0007, 0x0005, 0x0007, 0x0001, 0x0006, 0x0001, 0x0001, 0x0000,
278 static const uint8_t mpa_huffbits_5[16] = {
279 1, 3, 6, 7, 3, 3, 6, 7,
280 6, 6, 7, 8, 7, 6, 7, 8,
283 static const uint16_t mpa_huffcodes_6[16] = {
284 0x0007, 0x0003, 0x0005, 0x0001, 0x0006, 0x0002, 0x0003, 0x0002,
285 0x0005, 0x0004, 0x0004, 0x0001, 0x0003, 0x0003, 0x0002, 0x0000,
288 static const uint8_t mpa_huffbits_6[16] = {
289 3, 3, 5, 7, 3, 2, 4, 5,
290 4, 4, 5, 6, 6, 5, 6, 7,
293 static const uint16_t mpa_huffcodes_7[36] = {
294 0x0001, 0x0002, 0x000a, 0x0013, 0x0010, 0x000a, 0x0003, 0x0003,
295 0x0007, 0x000a, 0x0005, 0x0003, 0x000b, 0x0004, 0x000d, 0x0011,
296 0x0008, 0x0004, 0x000c, 0x000b, 0x0012, 0x000f, 0x000b, 0x0002,
297 0x0007, 0x0006, 0x0009, 0x000e, 0x0003, 0x0001, 0x0006, 0x0004,
298 0x0005, 0x0003, 0x0002, 0x0000,
301 static const uint8_t mpa_huffbits_7[36] = {
302 1, 3, 6, 8, 8, 9, 3, 4,
303 6, 7, 7, 8, 6, 5, 7, 8,
304 8, 9, 7, 7, 8, 9, 9, 9,
305 7, 7, 8, 9, 9, 10, 8, 8,
309 static const uint16_t mpa_huffcodes_8[36] = {
310 0x0003, 0x0004, 0x0006, 0x0012, 0x000c, 0x0005, 0x0005, 0x0001,
311 0x0002, 0x0010, 0x0009, 0x0003, 0x0007, 0x0003, 0x0005, 0x000e,
312 0x0007, 0x0003, 0x0013, 0x0011, 0x000f, 0x000d, 0x000a, 0x0004,
313 0x000d, 0x0005, 0x0008, 0x000b, 0x0005, 0x0001, 0x000c, 0x0004,
314 0x0004, 0x0001, 0x0001, 0x0000,
317 static const uint8_t mpa_huffbits_8[36] = {
318 2, 3, 6, 8, 8, 9, 3, 2,
319 4, 8, 8, 8, 6, 4, 6, 8,
320 8, 9, 8, 8, 8, 9, 9, 10,
321 8, 7, 8, 9, 10, 10, 9, 8,
325 static const uint16_t mpa_huffcodes_9[36] = {
326 0x0007, 0x0005, 0x0009, 0x000e, 0x000f, 0x0007, 0x0006, 0x0004,
327 0x0005, 0x0005, 0x0006, 0x0007, 0x0007, 0x0006, 0x0008, 0x0008,
328 0x0008, 0x0005, 0x000f, 0x0006, 0x0009, 0x000a, 0x0005, 0x0001,
329 0x000b, 0x0007, 0x0009, 0x0006, 0x0004, 0x0001, 0x000e, 0x0004,
330 0x0006, 0x0002, 0x0006, 0x0000,
333 static const uint8_t mpa_huffbits_9[36] = {
334 3, 3, 5, 6, 8, 9, 3, 3,
335 4, 5, 6, 8, 4, 4, 5, 6,
336 7, 8, 6, 5, 6, 7, 7, 8,
337 7, 6, 7, 7, 8, 9, 8, 7,
341 static const uint16_t mpa_huffcodes_10[64] = {
342 0x0001, 0x0002, 0x000a, 0x0017, 0x0023, 0x001e, 0x000c, 0x0011,
343 0x0003, 0x0003, 0x0008, 0x000c, 0x0012, 0x0015, 0x000c, 0x0007,
344 0x000b, 0x0009, 0x000f, 0x0015, 0x0020, 0x0028, 0x0013, 0x0006,
345 0x000e, 0x000d, 0x0016, 0x0022, 0x002e, 0x0017, 0x0012, 0x0007,
346 0x0014, 0x0013, 0x0021, 0x002f, 0x001b, 0x0016, 0x0009, 0x0003,
347 0x001f, 0x0016, 0x0029, 0x001a, 0x0015, 0x0014, 0x0005, 0x0003,
348 0x000e, 0x000d, 0x000a, 0x000b, 0x0010, 0x0006, 0x0005, 0x0001,
349 0x0009, 0x0008, 0x0007, 0x0008, 0x0004, 0x0004, 0x0002, 0x0000,
352 static const uint8_t mpa_huffbits_10[64] = {
353 1, 3, 6, 8, 9, 9, 9, 10,
354 3, 4, 6, 7, 8, 9, 8, 8,
355 6, 6, 7, 8, 9, 10, 9, 9,
356 7, 7, 8, 9, 10, 10, 9, 10,
357 8, 8, 9, 10, 10, 10, 10, 10,
358 9, 9, 10, 10, 11, 11, 10, 11,
359 8, 8, 9, 10, 10, 10, 11, 11,
360 9, 8, 9, 10, 10, 11, 11, 11,
363 static const uint16_t mpa_huffcodes_11[64] = {
364 0x0003, 0x0004, 0x000a, 0x0018, 0x0022, 0x0021, 0x0015, 0x000f,
365 0x0005, 0x0003, 0x0004, 0x000a, 0x0020, 0x0011, 0x000b, 0x000a,
366 0x000b, 0x0007, 0x000d, 0x0012, 0x001e, 0x001f, 0x0014, 0x0005,
367 0x0019, 0x000b, 0x0013, 0x003b, 0x001b, 0x0012, 0x000c, 0x0005,
368 0x0023, 0x0021, 0x001f, 0x003a, 0x001e, 0x0010, 0x0007, 0x0005,
369 0x001c, 0x001a, 0x0020, 0x0013, 0x0011, 0x000f, 0x0008, 0x000e,
370 0x000e, 0x000c, 0x0009, 0x000d, 0x000e, 0x0009, 0x0004, 0x0001,
371 0x000b, 0x0004, 0x0006, 0x0006, 0x0006, 0x0003, 0x0002, 0x0000,
374 static const uint8_t mpa_huffbits_11[64] = {
375 2, 3, 5, 7, 8, 9, 8, 9,
376 3, 3, 4, 6, 8, 8, 7, 8,
377 5, 5, 6, 7, 8, 9, 8, 8,
378 7, 6, 7, 9, 8, 10, 8, 9,
379 8, 8, 8, 9, 9, 10, 9, 10,
380 8, 8, 9, 10, 10, 11, 10, 11,
381 8, 7, 7, 8, 9, 10, 10, 10,
382 8, 7, 8, 9, 10, 10, 10, 10,
385 static const uint16_t mpa_huffcodes_12[64] = {
386 0x0009, 0x0006, 0x0010, 0x0021, 0x0029, 0x0027, 0x0026, 0x001a,
387 0x0007, 0x0005, 0x0006, 0x0009, 0x0017, 0x0010, 0x001a, 0x000b,
388 0x0011, 0x0007, 0x000b, 0x000e, 0x0015, 0x001e, 0x000a, 0x0007,
389 0x0011, 0x000a, 0x000f, 0x000c, 0x0012, 0x001c, 0x000e, 0x0005,
390 0x0020, 0x000d, 0x0016, 0x0013, 0x0012, 0x0010, 0x0009, 0x0005,
391 0x0028, 0x0011, 0x001f, 0x001d, 0x0011, 0x000d, 0x0004, 0x0002,
392 0x001b, 0x000c, 0x000b, 0x000f, 0x000a, 0x0007, 0x0004, 0x0001,
393 0x001b, 0x000c, 0x0008, 0x000c, 0x0006, 0x0003, 0x0001, 0x0000,
396 static const uint8_t mpa_huffbits_12[64] = {
397 4, 3, 5, 7, 8, 9, 9, 9,
398 3, 3, 4, 5, 7, 7, 8, 8,
399 5, 4, 5, 6, 7, 8, 7, 8,
400 6, 5, 6, 6, 7, 8, 8, 8,
401 7, 6, 7, 7, 8, 8, 8, 9,
402 8, 7, 8, 8, 8, 9, 8, 9,
403 8, 7, 7, 8, 8, 9, 9, 10,
404 9, 8, 8, 9, 9, 9, 9, 10,
407 static const uint16_t mpa_huffcodes_13[256] = {
408 0x0001, 0x0005, 0x000e, 0x0015, 0x0022, 0x0033, 0x002e, 0x0047,
409 0x002a, 0x0034, 0x0044, 0x0034, 0x0043, 0x002c, 0x002b, 0x0013,
410 0x0003, 0x0004, 0x000c, 0x0013, 0x001f, 0x001a, 0x002c, 0x0021,
411 0x001f, 0x0018, 0x0020, 0x0018, 0x001f, 0x0023, 0x0016, 0x000e,
412 0x000f, 0x000d, 0x0017, 0x0024, 0x003b, 0x0031, 0x004d, 0x0041,
413 0x001d, 0x0028, 0x001e, 0x0028, 0x001b, 0x0021, 0x002a, 0x0010,
414 0x0016, 0x0014, 0x0025, 0x003d, 0x0038, 0x004f, 0x0049, 0x0040,
415 0x002b, 0x004c, 0x0038, 0x0025, 0x001a, 0x001f, 0x0019, 0x000e,
416 0x0023, 0x0010, 0x003c, 0x0039, 0x0061, 0x004b, 0x0072, 0x005b,
417 0x0036, 0x0049, 0x0037, 0x0029, 0x0030, 0x0035, 0x0017, 0x0018,
418 0x003a, 0x001b, 0x0032, 0x0060, 0x004c, 0x0046, 0x005d, 0x0054,
419 0x004d, 0x003a, 0x004f, 0x001d, 0x004a, 0x0031, 0x0029, 0x0011,
420 0x002f, 0x002d, 0x004e, 0x004a, 0x0073, 0x005e, 0x005a, 0x004f,
421 0x0045, 0x0053, 0x0047, 0x0032, 0x003b, 0x0026, 0x0024, 0x000f,
422 0x0048, 0x0022, 0x0038, 0x005f, 0x005c, 0x0055, 0x005b, 0x005a,
423 0x0056, 0x0049, 0x004d, 0x0041, 0x0033, 0x002c, 0x002b, 0x002a,
424 0x002b, 0x0014, 0x001e, 0x002c, 0x0037, 0x004e, 0x0048, 0x0057,
425 0x004e, 0x003d, 0x002e, 0x0036, 0x0025, 0x001e, 0x0014, 0x0010,
426 0x0035, 0x0019, 0x0029, 0x0025, 0x002c, 0x003b, 0x0036, 0x0051,
427 0x0042, 0x004c, 0x0039, 0x0036, 0x0025, 0x0012, 0x0027, 0x000b,
428 0x0023, 0x0021, 0x001f, 0x0039, 0x002a, 0x0052, 0x0048, 0x0050,
429 0x002f, 0x003a, 0x0037, 0x0015, 0x0016, 0x001a, 0x0026, 0x0016,
430 0x0035, 0x0019, 0x0017, 0x0026, 0x0046, 0x003c, 0x0033, 0x0024,
431 0x0037, 0x001a, 0x0022, 0x0017, 0x001b, 0x000e, 0x0009, 0x0007,
432 0x0022, 0x0020, 0x001c, 0x0027, 0x0031, 0x004b, 0x001e, 0x0034,
433 0x0030, 0x0028, 0x0034, 0x001c, 0x0012, 0x0011, 0x0009, 0x0005,
434 0x002d, 0x0015, 0x0022, 0x0040, 0x0038, 0x0032, 0x0031, 0x002d,
435 0x001f, 0x0013, 0x000c, 0x000f, 0x000a, 0x0007, 0x0006, 0x0003,
436 0x0030, 0x0017, 0x0014, 0x0027, 0x0024, 0x0023, 0x0035, 0x0015,
437 0x0010, 0x0017, 0x000d, 0x000a, 0x0006, 0x0001, 0x0004, 0x0002,
438 0x0010, 0x000f, 0x0011, 0x001b, 0x0019, 0x0014, 0x001d, 0x000b,
439 0x0011, 0x000c, 0x0010, 0x0008, 0x0001, 0x0001, 0x0000, 0x0001,
442 static const uint8_t mpa_huffbits_13[256] = {
443 1, 4, 6, 7, 8, 9, 9, 10,
444 9, 10, 11, 11, 12, 12, 13, 13,
445 3, 4, 6, 7, 8, 8, 9, 9,
446 9, 9, 10, 10, 11, 12, 12, 12,
447 6, 6, 7, 8, 9, 9, 10, 10,
448 9, 10, 10, 11, 11, 12, 13, 13,
449 7, 7, 8, 9, 9, 10, 10, 10,
450 10, 11, 11, 11, 11, 12, 13, 13,
451 8, 7, 9, 9, 10, 10, 11, 11,
452 10, 11, 11, 12, 12, 13, 13, 14,
453 9, 8, 9, 10, 10, 10, 11, 11,
454 11, 11, 12, 11, 13, 13, 14, 14,
455 9, 9, 10, 10, 11, 11, 11, 11,
456 11, 12, 12, 12, 13, 13, 14, 14,
457 10, 9, 10, 11, 11, 11, 12, 12,
458 12, 12, 13, 13, 13, 14, 16, 16,
459 9, 8, 9, 10, 10, 11, 11, 12,
460 12, 12, 12, 13, 13, 14, 15, 15,
461 10, 9, 10, 10, 11, 11, 11, 13,
462 12, 13, 13, 14, 14, 14, 16, 15,
463 10, 10, 10, 11, 11, 12, 12, 13,
464 12, 13, 14, 13, 14, 15, 16, 17,
465 11, 10, 10, 11, 12, 12, 12, 12,
466 13, 13, 13, 14, 15, 15, 15, 16,
467 11, 11, 11, 12, 12, 13, 12, 13,
468 14, 14, 15, 15, 15, 16, 16, 16,
469 12, 11, 12, 13, 13, 13, 14, 14,
470 14, 14, 14, 15, 16, 15, 16, 16,
471 13, 12, 12, 13, 13, 13, 15, 14,
472 14, 17, 15, 15, 15, 17, 16, 16,
473 12, 12, 13, 14, 14, 14, 15, 14,
474 15, 15, 16, 16, 19, 18, 19, 16,
477 static const uint16_t mpa_huffcodes_15[256] = {
478 0x0007, 0x000c, 0x0012, 0x0035, 0x002f, 0x004c, 0x007c, 0x006c,
479 0x0059, 0x007b, 0x006c, 0x0077, 0x006b, 0x0051, 0x007a, 0x003f,
480 0x000d, 0x0005, 0x0010, 0x001b, 0x002e, 0x0024, 0x003d, 0x0033,
481 0x002a, 0x0046, 0x0034, 0x0053, 0x0041, 0x0029, 0x003b, 0x0024,
482 0x0013, 0x0011, 0x000f, 0x0018, 0x0029, 0x0022, 0x003b, 0x0030,
483 0x0028, 0x0040, 0x0032, 0x004e, 0x003e, 0x0050, 0x0038, 0x0021,
484 0x001d, 0x001c, 0x0019, 0x002b, 0x0027, 0x003f, 0x0037, 0x005d,
485 0x004c, 0x003b, 0x005d, 0x0048, 0x0036, 0x004b, 0x0032, 0x001d,
486 0x0034, 0x0016, 0x002a, 0x0028, 0x0043, 0x0039, 0x005f, 0x004f,
487 0x0048, 0x0039, 0x0059, 0x0045, 0x0031, 0x0042, 0x002e, 0x001b,
488 0x004d, 0x0025, 0x0023, 0x0042, 0x003a, 0x0034, 0x005b, 0x004a,
489 0x003e, 0x0030, 0x004f, 0x003f, 0x005a, 0x003e, 0x0028, 0x0026,
490 0x007d, 0x0020, 0x003c, 0x0038, 0x0032, 0x005c, 0x004e, 0x0041,
491 0x0037, 0x0057, 0x0047, 0x0033, 0x0049, 0x0033, 0x0046, 0x001e,
492 0x006d, 0x0035, 0x0031, 0x005e, 0x0058, 0x004b, 0x0042, 0x007a,
493 0x005b, 0x0049, 0x0038, 0x002a, 0x0040, 0x002c, 0x0015, 0x0019,
494 0x005a, 0x002b, 0x0029, 0x004d, 0x0049, 0x003f, 0x0038, 0x005c,
495 0x004d, 0x0042, 0x002f, 0x0043, 0x0030, 0x0035, 0x0024, 0x0014,
496 0x0047, 0x0022, 0x0043, 0x003c, 0x003a, 0x0031, 0x0058, 0x004c,
497 0x0043, 0x006a, 0x0047, 0x0036, 0x0026, 0x0027, 0x0017, 0x000f,
498 0x006d, 0x0035, 0x0033, 0x002f, 0x005a, 0x0052, 0x003a, 0x0039,
499 0x0030, 0x0048, 0x0039, 0x0029, 0x0017, 0x001b, 0x003e, 0x0009,
500 0x0056, 0x002a, 0x0028, 0x0025, 0x0046, 0x0040, 0x0034, 0x002b,
501 0x0046, 0x0037, 0x002a, 0x0019, 0x001d, 0x0012, 0x000b, 0x000b,
502 0x0076, 0x0044, 0x001e, 0x0037, 0x0032, 0x002e, 0x004a, 0x0041,
503 0x0031, 0x0027, 0x0018, 0x0010, 0x0016, 0x000d, 0x000e, 0x0007,
504 0x005b, 0x002c, 0x0027, 0x0026, 0x0022, 0x003f, 0x0034, 0x002d,
505 0x001f, 0x0034, 0x001c, 0x0013, 0x000e, 0x0008, 0x0009, 0x0003,
506 0x007b, 0x003c, 0x003a, 0x0035, 0x002f, 0x002b, 0x0020, 0x0016,
507 0x0025, 0x0018, 0x0011, 0x000c, 0x000f, 0x000a, 0x0002, 0x0001,
508 0x0047, 0x0025, 0x0022, 0x001e, 0x001c, 0x0014, 0x0011, 0x001a,
509 0x0015, 0x0010, 0x000a, 0x0006, 0x0008, 0x0006, 0x0002, 0x0000,
512 static const uint8_t mpa_huffbits_15[256] = {
513 3, 4, 5, 7, 7, 8, 9, 9,
514 9, 10, 10, 11, 11, 11, 12, 13,
515 4, 3, 5, 6, 7, 7, 8, 8,
516 8, 9, 9, 10, 10, 10, 11, 11,
517 5, 5, 5, 6, 7, 7, 8, 8,
518 8, 9, 9, 10, 10, 11, 11, 11,
519 6, 6, 6, 7, 7, 8, 8, 9,
520 9, 9, 10, 10, 10, 11, 11, 11,
521 7, 6, 7, 7, 8, 8, 9, 9,
522 9, 9, 10, 10, 10, 11, 11, 11,
523 8, 7, 7, 8, 8, 8, 9, 9,
524 9, 9, 10, 10, 11, 11, 11, 12,
525 9, 7, 8, 8, 8, 9, 9, 9,
526 9, 10, 10, 10, 11, 11, 12, 12,
527 9, 8, 8, 9, 9, 9, 9, 10,
528 10, 10, 10, 10, 11, 11, 11, 12,
529 9, 8, 8, 9, 9, 9, 9, 10,
530 10, 10, 10, 11, 11, 12, 12, 12,
531 9, 8, 9, 9, 9, 9, 10, 10,
532 10, 11, 11, 11, 11, 12, 12, 12,
533 10, 9, 9, 9, 10, 10, 10, 10,
534 10, 11, 11, 11, 11, 12, 13, 12,
535 10, 9, 9, 9, 10, 10, 10, 10,
536 11, 11, 11, 11, 12, 12, 12, 13,
537 11, 10, 9, 10, 10, 10, 11, 11,
538 11, 11, 11, 11, 12, 12, 13, 13,
539 11, 10, 10, 10, 10, 11, 11, 11,
540 11, 12, 12, 12, 12, 12, 13, 13,
541 12, 11, 11, 11, 11, 11, 11, 11,
542 12, 12, 12, 12, 13, 13, 12, 13,
543 12, 11, 11, 11, 11, 11, 11, 12,
544 12, 12, 12, 12, 13, 13, 13, 13,
547 static const uint16_t mpa_huffcodes_16[256] = {
548 0x0001, 0x0005, 0x000e, 0x002c, 0x004a, 0x003f, 0x006e, 0x005d,
549 0x00ac, 0x0095, 0x008a, 0x00f2, 0x00e1, 0x00c3, 0x0178, 0x0011,
550 0x0003, 0x0004, 0x000c, 0x0014, 0x0023, 0x003e, 0x0035, 0x002f,
551 0x0053, 0x004b, 0x0044, 0x0077, 0x00c9, 0x006b, 0x00cf, 0x0009,
552 0x000f, 0x000d, 0x0017, 0x0026, 0x0043, 0x003a, 0x0067, 0x005a,
553 0x00a1, 0x0048, 0x007f, 0x0075, 0x006e, 0x00d1, 0x00ce, 0x0010,
554 0x002d, 0x0015, 0x0027, 0x0045, 0x0040, 0x0072, 0x0063, 0x0057,
555 0x009e, 0x008c, 0x00fc, 0x00d4, 0x00c7, 0x0183, 0x016d, 0x001a,
556 0x004b, 0x0024, 0x0044, 0x0041, 0x0073, 0x0065, 0x00b3, 0x00a4,
557 0x009b, 0x0108, 0x00f6, 0x00e2, 0x018b, 0x017e, 0x016a, 0x0009,
558 0x0042, 0x001e, 0x003b, 0x0038, 0x0066, 0x00b9, 0x00ad, 0x0109,
559 0x008e, 0x00fd, 0x00e8, 0x0190, 0x0184, 0x017a, 0x01bd, 0x0010,
560 0x006f, 0x0036, 0x0034, 0x0064, 0x00b8, 0x00b2, 0x00a0, 0x0085,
561 0x0101, 0x00f4, 0x00e4, 0x00d9, 0x0181, 0x016e, 0x02cb, 0x000a,
562 0x0062, 0x0030, 0x005b, 0x0058, 0x00a5, 0x009d, 0x0094, 0x0105,
563 0x00f8, 0x0197, 0x018d, 0x0174, 0x017c, 0x0379, 0x0374, 0x0008,
564 0x0055, 0x0054, 0x0051, 0x009f, 0x009c, 0x008f, 0x0104, 0x00f9,
565 0x01ab, 0x0191, 0x0188, 0x017f, 0x02d7, 0x02c9, 0x02c4, 0x0007,
566 0x009a, 0x004c, 0x0049, 0x008d, 0x0083, 0x0100, 0x00f5, 0x01aa,
567 0x0196, 0x018a, 0x0180, 0x02df, 0x0167, 0x02c6, 0x0160, 0x000b,
568 0x008b, 0x0081, 0x0043, 0x007d, 0x00f7, 0x00e9, 0x00e5, 0x00db,
569 0x0189, 0x02e7, 0x02e1, 0x02d0, 0x0375, 0x0372, 0x01b7, 0x0004,
570 0x00f3, 0x0078, 0x0076, 0x0073, 0x00e3, 0x00df, 0x018c, 0x02ea,
571 0x02e6, 0x02e0, 0x02d1, 0x02c8, 0x02c2, 0x00df, 0x01b4, 0x0006,
572 0x00ca, 0x00e0, 0x00de, 0x00da, 0x00d8, 0x0185, 0x0182, 0x017d,
573 0x016c, 0x0378, 0x01bb, 0x02c3, 0x01b8, 0x01b5, 0x06c0, 0x0004,
574 0x02eb, 0x00d3, 0x00d2, 0x00d0, 0x0172, 0x017b, 0x02de, 0x02d3,
575 0x02ca, 0x06c7, 0x0373, 0x036d, 0x036c, 0x0d83, 0x0361, 0x0002,
576 0x0179, 0x0171, 0x0066, 0x00bb, 0x02d6, 0x02d2, 0x0166, 0x02c7,
577 0x02c5, 0x0362, 0x06c6, 0x0367, 0x0d82, 0x0366, 0x01b2, 0x0000,
578 0x000c, 0x000a, 0x0007, 0x000b, 0x000a, 0x0011, 0x000b, 0x0009,
579 0x000d, 0x000c, 0x000a, 0x0007, 0x0005, 0x0003, 0x0001, 0x0003,
582 static const uint8_t mpa_huffbits_16[256] = {
583 1, 4, 6, 8, 9, 9, 10, 10,
584 11, 11, 11, 12, 12, 12, 13, 9,
585 3, 4, 6, 7, 8, 9, 9, 9,
586 10, 10, 10, 11, 12, 11, 12, 8,
587 6, 6, 7, 8, 9, 9, 10, 10,
588 11, 10, 11, 11, 11, 12, 12, 9,
589 8, 7, 8, 9, 9, 10, 10, 10,
590 11, 11, 12, 12, 12, 13, 13, 10,
591 9, 8, 9, 9, 10, 10, 11, 11,
592 11, 12, 12, 12, 13, 13, 13, 9,
593 9, 8, 9, 9, 10, 11, 11, 12,
594 11, 12, 12, 13, 13, 13, 14, 10,
595 10, 9, 9, 10, 11, 11, 11, 11,
596 12, 12, 12, 12, 13, 13, 14, 10,
597 10, 9, 10, 10, 11, 11, 11, 12,
598 12, 13, 13, 13, 13, 15, 15, 10,
599 10, 10, 10, 11, 11, 11, 12, 12,
600 13, 13, 13, 13, 14, 14, 14, 10,
601 11, 10, 10, 11, 11, 12, 12, 13,
602 13, 13, 13, 14, 13, 14, 13, 11,
603 11, 11, 10, 11, 12, 12, 12, 12,
604 13, 14, 14, 14, 15, 15, 14, 10,
605 12, 11, 11, 11, 12, 12, 13, 14,
606 14, 14, 14, 14, 14, 13, 14, 11,
607 12, 12, 12, 12, 12, 13, 13, 13,
608 13, 15, 14, 14, 14, 14, 16, 11,
609 14, 12, 12, 12, 13, 13, 14, 14,
610 14, 16, 15, 15, 15, 17, 15, 11,
611 13, 13, 11, 12, 14, 14, 13, 14,
612 14, 15, 16, 15, 17, 15, 14, 11,
613 9, 8, 8, 9, 9, 10, 10, 10,
614 11, 11, 11, 11, 11, 11, 11, 8,
617 static const uint16_t mpa_huffcodes_24[256] = {
618 0x000f, 0x000d, 0x002e, 0x0050, 0x0092, 0x0106, 0x00f8, 0x01b2,
619 0x01aa, 0x029d, 0x028d, 0x0289, 0x026d, 0x0205, 0x0408, 0x0058,
620 0x000e, 0x000c, 0x0015, 0x0026, 0x0047, 0x0082, 0x007a, 0x00d8,
621 0x00d1, 0x00c6, 0x0147, 0x0159, 0x013f, 0x0129, 0x0117, 0x002a,
622 0x002f, 0x0016, 0x0029, 0x004a, 0x0044, 0x0080, 0x0078, 0x00dd,
623 0x00cf, 0x00c2, 0x00b6, 0x0154, 0x013b, 0x0127, 0x021d, 0x0012,
624 0x0051, 0x0027, 0x004b, 0x0046, 0x0086, 0x007d, 0x0074, 0x00dc,
625 0x00cc, 0x00be, 0x00b2, 0x0145, 0x0137, 0x0125, 0x010f, 0x0010,
626 0x0093, 0x0048, 0x0045, 0x0087, 0x007f, 0x0076, 0x0070, 0x00d2,
627 0x00c8, 0x00bc, 0x0160, 0x0143, 0x0132, 0x011d, 0x021c, 0x000e,
628 0x0107, 0x0042, 0x0081, 0x007e, 0x0077, 0x0072, 0x00d6, 0x00ca,
629 0x00c0, 0x00b4, 0x0155, 0x013d, 0x012d, 0x0119, 0x0106, 0x000c,
630 0x00f9, 0x007b, 0x0079, 0x0075, 0x0071, 0x00d7, 0x00ce, 0x00c3,
631 0x00b9, 0x015b, 0x014a, 0x0134, 0x0123, 0x0110, 0x0208, 0x000a,
632 0x01b3, 0x0073, 0x006f, 0x006d, 0x00d3, 0x00cb, 0x00c4, 0x00bb,
633 0x0161, 0x014c, 0x0139, 0x012a, 0x011b, 0x0213, 0x017d, 0x0011,
634 0x01ab, 0x00d4, 0x00d0, 0x00cd, 0x00c9, 0x00c1, 0x00ba, 0x00b1,
635 0x00a9, 0x0140, 0x012f, 0x011e, 0x010c, 0x0202, 0x0179, 0x0010,
636 0x014f, 0x00c7, 0x00c5, 0x00bf, 0x00bd, 0x00b5, 0x00ae, 0x014d,
637 0x0141, 0x0131, 0x0121, 0x0113, 0x0209, 0x017b, 0x0173, 0x000b,
638 0x029c, 0x00b8, 0x00b7, 0x00b3, 0x00af, 0x0158, 0x014b, 0x013a,
639 0x0130, 0x0122, 0x0115, 0x0212, 0x017f, 0x0175, 0x016e, 0x000a,
640 0x028c, 0x015a, 0x00ab, 0x00a8, 0x00a4, 0x013e, 0x0135, 0x012b,
641 0x011f, 0x0114, 0x0107, 0x0201, 0x0177, 0x0170, 0x016a, 0x0006,
642 0x0288, 0x0142, 0x013c, 0x0138, 0x0133, 0x012e, 0x0124, 0x011c,
643 0x010d, 0x0105, 0x0200, 0x0178, 0x0172, 0x016c, 0x0167, 0x0004,
644 0x026c, 0x012c, 0x0128, 0x0126, 0x0120, 0x011a, 0x0111, 0x010a,
645 0x0203, 0x017c, 0x0176, 0x0171, 0x016d, 0x0169, 0x0165, 0x0002,
646 0x0409, 0x0118, 0x0116, 0x0112, 0x010b, 0x0108, 0x0103, 0x017e,
647 0x017a, 0x0174, 0x016f, 0x016b, 0x0168, 0x0166, 0x0164, 0x0000,
648 0x002b, 0x0014, 0x0013, 0x0011, 0x000f, 0x000d, 0x000b, 0x0009,
649 0x0007, 0x0006, 0x0004, 0x0007, 0x0005, 0x0003, 0x0001, 0x0003,
652 static const uint8_t mpa_huffbits_24[256] = {
653 4, 4, 6, 7, 8, 9, 9, 10,
654 10, 11, 11, 11, 11, 11, 12, 9,
655 4, 4, 5, 6, 7, 8, 8, 9,
656 9, 9, 10, 10, 10, 10, 10, 8,
657 6, 5, 6, 7, 7, 8, 8, 9,
658 9, 9, 9, 10, 10, 10, 11, 7,
659 7, 6, 7, 7, 8, 8, 8, 9,
660 9, 9, 9, 10, 10, 10, 10, 7,
661 8, 7, 7, 8, 8, 8, 8, 9,
662 9, 9, 10, 10, 10, 10, 11, 7,
663 9, 7, 8, 8, 8, 8, 9, 9,
664 9, 9, 10, 10, 10, 10, 10, 7,
665 9, 8, 8, 8, 8, 9, 9, 9,
666 9, 10, 10, 10, 10, 10, 11, 7,
667 10, 8, 8, 8, 9, 9, 9, 9,
668 10, 10, 10, 10, 10, 11, 11, 8,
669 10, 9, 9, 9, 9, 9, 9, 9,
670 9, 10, 10, 10, 10, 11, 11, 8,
671 10, 9, 9, 9, 9, 9, 9, 10,
672 10, 10, 10, 10, 11, 11, 11, 8,
673 11, 9, 9, 9, 9, 10, 10, 10,
674 10, 10, 10, 11, 11, 11, 11, 8,
675 11, 10, 9, 9, 9, 10, 10, 10,
676 10, 10, 10, 11, 11, 11, 11, 8,
677 11, 10, 10, 10, 10, 10, 10, 10,
678 10, 10, 11, 11, 11, 11, 11, 8,
679 11, 10, 10, 10, 10, 10, 10, 10,
680 11, 11, 11, 11, 11, 11, 11, 8,
681 12, 10, 10, 10, 10, 10, 10, 11,
682 11, 11, 11, 11, 11, 11, 11, 8,
683 8, 7, 7, 7, 7, 7, 7, 7,
684 7, 7, 7, 8, 8, 8, 8, 4,
687 static const HuffTable mpa_huff_tables[16] = {
689 { 2, mpa_huffbits_1, mpa_huffcodes_1 },
690 { 3, mpa_huffbits_2, mpa_huffcodes_2 },
691 { 3, mpa_huffbits_3, mpa_huffcodes_3 },
692 { 4, mpa_huffbits_5, mpa_huffcodes_5 },
693 { 4, mpa_huffbits_6, mpa_huffcodes_6 },
694 { 6, mpa_huffbits_7, mpa_huffcodes_7 },
695 { 6, mpa_huffbits_8, mpa_huffcodes_8 },
696 { 6, mpa_huffbits_9, mpa_huffcodes_9 },
697 { 8, mpa_huffbits_10, mpa_huffcodes_10 },
698 { 8, mpa_huffbits_11, mpa_huffcodes_11 },
699 { 8, mpa_huffbits_12, mpa_huffcodes_12 },
700 { 16, mpa_huffbits_13, mpa_huffcodes_13 },
701 { 16, mpa_huffbits_15, mpa_huffcodes_15 },
702 { 16, mpa_huffbits_16, mpa_huffcodes_16 },
703 { 16, mpa_huffbits_24, mpa_huffcodes_24 },
706 static const uint8_t mpa_huff_data[32][2] = {
742 /* huffman tables for quadrules */
743 static const uint8_t mpa_quad_codes[2][16] = {
744 { 1, 5, 4, 5, 6, 5, 4, 4, 7, 3, 6, 0, 7, 2, 3, 1, },
745 { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, },
748 static const uint8_t mpa_quad_bits[2][16] = {
749 { 1, 4, 4, 5, 4, 6, 5, 6, 4, 5, 5, 6, 5, 6, 6, 6, },
750 { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, },
753 /* band size tables */
754 static const uint8_t band_size_long[9][22] = {
755 { 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10,
756 12, 16, 20, 24, 28, 34, 42, 50, 54, 76, 158, }, /* 44100 */
757 { 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 10,
758 12, 16, 18, 22, 28, 34, 40, 46, 54, 54, 192, }, /* 48000 */
759 { 4, 4, 4, 4, 4, 4, 6, 6, 8, 10, 12,
760 16, 20, 24, 30, 38, 46, 56, 68, 84, 102, 26, }, /* 32000 */
761 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
762 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 22050 */
763 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
764 18, 22, 26, 32, 38, 46, 52, 64, 70, 76, 36, }, /* 24000 */
765 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
766 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 16000 */
767 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
768 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 11025 */
769 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
770 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 12000 */
771 { 12, 12, 12, 12, 12, 12, 16, 20, 24, 28, 32,
772 40, 48, 56, 64, 76, 90, 2, 2, 2, 2, 2, }, /* 8000 */
775 static const uint8_t band_size_short[9][13] = {
776 { 4, 4, 4, 4, 6, 8, 10, 12, 14, 18, 22, 30, 56, }, /* 44100 */
777 { 4, 4, 4, 4, 6, 6, 10, 12, 14, 16, 20, 26, 66, }, /* 48000 */
778 { 4, 4, 4, 4, 6, 8, 12, 16, 20, 26, 34, 42, 12, }, /* 32000 */
779 { 4, 4, 4, 6, 6, 8, 10, 14, 18, 26, 32, 42, 18, }, /* 22050 */
780 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 32, 44, 12, }, /* 24000 */
781 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 16000 */
782 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 11025 */
783 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 12000 */
784 { 8, 8, 8, 12, 16, 20, 24, 28, 36, 2, 2, 2, 26, }, /* 8000 */
787 static const uint8_t mpa_pretab[2][22] = {
788 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
789 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0 },
792 /* table for alias reduction (XXX: store it as integer !) */
793 static const float ci_table[8] = {
794 -0.6, -0.535, -0.33, -0.185, -0.095, -0.041, -0.0142, -0.0037,