asfdec: also read Metadata Library Object
[FFMpeg-mirror/mplayer-patches.git] / libavcodec / mpegaudiodectab.h
blob12216579880a9aa464574de026763fc82abb1b73
1 /*
2 * MPEG Audio decoder
3 * copyright (c) 2002 Fabrice Bellard
5 * This file is part of Libav.
7 * Libav 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 * Libav 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 Libav; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 /**
23 * @file
24 * mpeg audio layer decoder tables.
27 #ifndef AVCODEC_MPEGAUDIODECTAB_H
28 #define AVCODEC_MPEGAUDIODECTAB_H
30 #include <stddef.h>
31 #include <stdint.h>
33 #include "mpegaudio.h"
35 /*******************************************************/
36 /* layer 3 tables */
38 /* layer 3 huffman tables */
39 typedef struct HuffTable {
40 int xsize;
41 const uint8_t *bits;
42 const uint16_t *codes;
43 } HuffTable;
45 /* layer3 scale factor size */
46 static const uint8_t slen_table[2][16] = {
47 { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 },
48 { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 },
51 /* number of lsf scale factors for a given size */
52 static const uint8_t lsf_nsf_table[6][3][4] = {
53 { { 6, 5, 5, 5 }, { 9, 9, 9, 9 }, { 6, 9, 9, 9 } },
54 { { 6, 5, 7, 3 }, { 9, 9, 12, 6 }, { 6, 9, 12, 6 } },
55 { { 11, 10, 0, 0 }, { 18, 18, 0, 0 }, { 15, 18, 0, 0 } },
56 { { 7, 7, 7, 0 }, { 12, 12, 12, 0 }, { 6, 15, 12, 0 } },
57 { { 6, 6, 6, 3 }, { 12, 9, 9, 6 }, { 6, 12, 9, 6 } },
58 { { 8, 8, 5, 0 }, { 15, 12, 9, 0 }, { 6, 18, 9, 0 } },
61 /* mpegaudio layer 3 huffman tables */
63 static const uint16_t mpa_huffcodes_1[4] = {
64 0x0001, 0x0001, 0x0001, 0x0000,
67 static const uint8_t mpa_huffbits_1[4] = {
68 1, 3, 2, 3,
71 static const uint16_t mpa_huffcodes_2[9] = {
72 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0001, 0x0003, 0x0002,
73 0x0000,
76 static const uint8_t mpa_huffbits_2[9] = {
77 1, 3, 6, 3, 3, 5, 5, 5,
81 static const uint16_t mpa_huffcodes_3[9] = {
82 0x0003, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0003, 0x0002,
83 0x0000,
86 static const uint8_t mpa_huffbits_3[9] = {
87 2, 2, 6, 3, 2, 5, 5, 5,
91 static const uint16_t mpa_huffcodes_5[16] = {
92 0x0001, 0x0002, 0x0006, 0x0005, 0x0003, 0x0001, 0x0004, 0x0004,
93 0x0007, 0x0005, 0x0007, 0x0001, 0x0006, 0x0001, 0x0001, 0x0000,
96 static const uint8_t mpa_huffbits_5[16] = {
97 1, 3, 6, 7, 3, 3, 6, 7,
98 6, 6, 7, 8, 7, 6, 7, 8,
101 static const uint16_t mpa_huffcodes_6[16] = {
102 0x0007, 0x0003, 0x0005, 0x0001, 0x0006, 0x0002, 0x0003, 0x0002,
103 0x0005, 0x0004, 0x0004, 0x0001, 0x0003, 0x0003, 0x0002, 0x0000,
106 static const uint8_t mpa_huffbits_6[16] = {
107 3, 3, 5, 7, 3, 2, 4, 5,
108 4, 4, 5, 6, 6, 5, 6, 7,
111 static const uint16_t mpa_huffcodes_7[36] = {
112 0x0001, 0x0002, 0x000a, 0x0013, 0x0010, 0x000a, 0x0003, 0x0003,
113 0x0007, 0x000a, 0x0005, 0x0003, 0x000b, 0x0004, 0x000d, 0x0011,
114 0x0008, 0x0004, 0x000c, 0x000b, 0x0012, 0x000f, 0x000b, 0x0002,
115 0x0007, 0x0006, 0x0009, 0x000e, 0x0003, 0x0001, 0x0006, 0x0004,
116 0x0005, 0x0003, 0x0002, 0x0000,
119 static const uint8_t mpa_huffbits_7[36] = {
120 1, 3, 6, 8, 8, 9, 3, 4,
121 6, 7, 7, 8, 6, 5, 7, 8,
122 8, 9, 7, 7, 8, 9, 9, 9,
123 7, 7, 8, 9, 9, 10, 8, 8,
124 9, 10, 10, 10,
127 static const uint16_t mpa_huffcodes_8[36] = {
128 0x0003, 0x0004, 0x0006, 0x0012, 0x000c, 0x0005, 0x0005, 0x0001,
129 0x0002, 0x0010, 0x0009, 0x0003, 0x0007, 0x0003, 0x0005, 0x000e,
130 0x0007, 0x0003, 0x0013, 0x0011, 0x000f, 0x000d, 0x000a, 0x0004,
131 0x000d, 0x0005, 0x0008, 0x000b, 0x0005, 0x0001, 0x000c, 0x0004,
132 0x0004, 0x0001, 0x0001, 0x0000,
135 static const uint8_t mpa_huffbits_8[36] = {
136 2, 3, 6, 8, 8, 9, 3, 2,
137 4, 8, 8, 8, 6, 4, 6, 8,
138 8, 9, 8, 8, 8, 9, 9, 10,
139 8, 7, 8, 9, 10, 10, 9, 8,
140 9, 9, 11, 11,
143 static const uint16_t mpa_huffcodes_9[36] = {
144 0x0007, 0x0005, 0x0009, 0x000e, 0x000f, 0x0007, 0x0006, 0x0004,
145 0x0005, 0x0005, 0x0006, 0x0007, 0x0007, 0x0006, 0x0008, 0x0008,
146 0x0008, 0x0005, 0x000f, 0x0006, 0x0009, 0x000a, 0x0005, 0x0001,
147 0x000b, 0x0007, 0x0009, 0x0006, 0x0004, 0x0001, 0x000e, 0x0004,
148 0x0006, 0x0002, 0x0006, 0x0000,
151 static const uint8_t mpa_huffbits_9[36] = {
152 3, 3, 5, 6, 8, 9, 3, 3,
153 4, 5, 6, 8, 4, 4, 5, 6,
154 7, 8, 6, 5, 6, 7, 7, 8,
155 7, 6, 7, 7, 8, 9, 8, 7,
156 8, 8, 9, 9,
159 static const uint16_t mpa_huffcodes_10[64] = {
160 0x0001, 0x0002, 0x000a, 0x0017, 0x0023, 0x001e, 0x000c, 0x0011,
161 0x0003, 0x0003, 0x0008, 0x000c, 0x0012, 0x0015, 0x000c, 0x0007,
162 0x000b, 0x0009, 0x000f, 0x0015, 0x0020, 0x0028, 0x0013, 0x0006,
163 0x000e, 0x000d, 0x0016, 0x0022, 0x002e, 0x0017, 0x0012, 0x0007,
164 0x0014, 0x0013, 0x0021, 0x002f, 0x001b, 0x0016, 0x0009, 0x0003,
165 0x001f, 0x0016, 0x0029, 0x001a, 0x0015, 0x0014, 0x0005, 0x0003,
166 0x000e, 0x000d, 0x000a, 0x000b, 0x0010, 0x0006, 0x0005, 0x0001,
167 0x0009, 0x0008, 0x0007, 0x0008, 0x0004, 0x0004, 0x0002, 0x0000,
170 static const uint8_t mpa_huffbits_10[64] = {
171 1, 3, 6, 8, 9, 9, 9, 10,
172 3, 4, 6, 7, 8, 9, 8, 8,
173 6, 6, 7, 8, 9, 10, 9, 9,
174 7, 7, 8, 9, 10, 10, 9, 10,
175 8, 8, 9, 10, 10, 10, 10, 10,
176 9, 9, 10, 10, 11, 11, 10, 11,
177 8, 8, 9, 10, 10, 10, 11, 11,
178 9, 8, 9, 10, 10, 11, 11, 11,
181 static const uint16_t mpa_huffcodes_11[64] = {
182 0x0003, 0x0004, 0x000a, 0x0018, 0x0022, 0x0021, 0x0015, 0x000f,
183 0x0005, 0x0003, 0x0004, 0x000a, 0x0020, 0x0011, 0x000b, 0x000a,
184 0x000b, 0x0007, 0x000d, 0x0012, 0x001e, 0x001f, 0x0014, 0x0005,
185 0x0019, 0x000b, 0x0013, 0x003b, 0x001b, 0x0012, 0x000c, 0x0005,
186 0x0023, 0x0021, 0x001f, 0x003a, 0x001e, 0x0010, 0x0007, 0x0005,
187 0x001c, 0x001a, 0x0020, 0x0013, 0x0011, 0x000f, 0x0008, 0x000e,
188 0x000e, 0x000c, 0x0009, 0x000d, 0x000e, 0x0009, 0x0004, 0x0001,
189 0x000b, 0x0004, 0x0006, 0x0006, 0x0006, 0x0003, 0x0002, 0x0000,
192 static const uint8_t mpa_huffbits_11[64] = {
193 2, 3, 5, 7, 8, 9, 8, 9,
194 3, 3, 4, 6, 8, 8, 7, 8,
195 5, 5, 6, 7, 8, 9, 8, 8,
196 7, 6, 7, 9, 8, 10, 8, 9,
197 8, 8, 8, 9, 9, 10, 9, 10,
198 8, 8, 9, 10, 10, 11, 10, 11,
199 8, 7, 7, 8, 9, 10, 10, 10,
200 8, 7, 8, 9, 10, 10, 10, 10,
203 static const uint16_t mpa_huffcodes_12[64] = {
204 0x0009, 0x0006, 0x0010, 0x0021, 0x0029, 0x0027, 0x0026, 0x001a,
205 0x0007, 0x0005, 0x0006, 0x0009, 0x0017, 0x0010, 0x001a, 0x000b,
206 0x0011, 0x0007, 0x000b, 0x000e, 0x0015, 0x001e, 0x000a, 0x0007,
207 0x0011, 0x000a, 0x000f, 0x000c, 0x0012, 0x001c, 0x000e, 0x0005,
208 0x0020, 0x000d, 0x0016, 0x0013, 0x0012, 0x0010, 0x0009, 0x0005,
209 0x0028, 0x0011, 0x001f, 0x001d, 0x0011, 0x000d, 0x0004, 0x0002,
210 0x001b, 0x000c, 0x000b, 0x000f, 0x000a, 0x0007, 0x0004, 0x0001,
211 0x001b, 0x000c, 0x0008, 0x000c, 0x0006, 0x0003, 0x0001, 0x0000,
214 static const uint8_t mpa_huffbits_12[64] = {
215 4, 3, 5, 7, 8, 9, 9, 9,
216 3, 3, 4, 5, 7, 7, 8, 8,
217 5, 4, 5, 6, 7, 8, 7, 8,
218 6, 5, 6, 6, 7, 8, 8, 8,
219 7, 6, 7, 7, 8, 8, 8, 9,
220 8, 7, 8, 8, 8, 9, 8, 9,
221 8, 7, 7, 8, 8, 9, 9, 10,
222 9, 8, 8, 9, 9, 9, 9, 10,
225 static const uint16_t mpa_huffcodes_13[256] = {
226 0x0001, 0x0005, 0x000e, 0x0015, 0x0022, 0x0033, 0x002e, 0x0047,
227 0x002a, 0x0034, 0x0044, 0x0034, 0x0043, 0x002c, 0x002b, 0x0013,
228 0x0003, 0x0004, 0x000c, 0x0013, 0x001f, 0x001a, 0x002c, 0x0021,
229 0x001f, 0x0018, 0x0020, 0x0018, 0x001f, 0x0023, 0x0016, 0x000e,
230 0x000f, 0x000d, 0x0017, 0x0024, 0x003b, 0x0031, 0x004d, 0x0041,
231 0x001d, 0x0028, 0x001e, 0x0028, 0x001b, 0x0021, 0x002a, 0x0010,
232 0x0016, 0x0014, 0x0025, 0x003d, 0x0038, 0x004f, 0x0049, 0x0040,
233 0x002b, 0x004c, 0x0038, 0x0025, 0x001a, 0x001f, 0x0019, 0x000e,
234 0x0023, 0x0010, 0x003c, 0x0039, 0x0061, 0x004b, 0x0072, 0x005b,
235 0x0036, 0x0049, 0x0037, 0x0029, 0x0030, 0x0035, 0x0017, 0x0018,
236 0x003a, 0x001b, 0x0032, 0x0060, 0x004c, 0x0046, 0x005d, 0x0054,
237 0x004d, 0x003a, 0x004f, 0x001d, 0x004a, 0x0031, 0x0029, 0x0011,
238 0x002f, 0x002d, 0x004e, 0x004a, 0x0073, 0x005e, 0x005a, 0x004f,
239 0x0045, 0x0053, 0x0047, 0x0032, 0x003b, 0x0026, 0x0024, 0x000f,
240 0x0048, 0x0022, 0x0038, 0x005f, 0x005c, 0x0055, 0x005b, 0x005a,
241 0x0056, 0x0049, 0x004d, 0x0041, 0x0033, 0x002c, 0x002b, 0x002a,
242 0x002b, 0x0014, 0x001e, 0x002c, 0x0037, 0x004e, 0x0048, 0x0057,
243 0x004e, 0x003d, 0x002e, 0x0036, 0x0025, 0x001e, 0x0014, 0x0010,
244 0x0035, 0x0019, 0x0029, 0x0025, 0x002c, 0x003b, 0x0036, 0x0051,
245 0x0042, 0x004c, 0x0039, 0x0036, 0x0025, 0x0012, 0x0027, 0x000b,
246 0x0023, 0x0021, 0x001f, 0x0039, 0x002a, 0x0052, 0x0048, 0x0050,
247 0x002f, 0x003a, 0x0037, 0x0015, 0x0016, 0x001a, 0x0026, 0x0016,
248 0x0035, 0x0019, 0x0017, 0x0026, 0x0046, 0x003c, 0x0033, 0x0024,
249 0x0037, 0x001a, 0x0022, 0x0017, 0x001b, 0x000e, 0x0009, 0x0007,
250 0x0022, 0x0020, 0x001c, 0x0027, 0x0031, 0x004b, 0x001e, 0x0034,
251 0x0030, 0x0028, 0x0034, 0x001c, 0x0012, 0x0011, 0x0009, 0x0005,
252 0x002d, 0x0015, 0x0022, 0x0040, 0x0038, 0x0032, 0x0031, 0x002d,
253 0x001f, 0x0013, 0x000c, 0x000f, 0x000a, 0x0007, 0x0006, 0x0003,
254 0x0030, 0x0017, 0x0014, 0x0027, 0x0024, 0x0023, 0x0035, 0x0015,
255 0x0010, 0x0017, 0x000d, 0x000a, 0x0006, 0x0001, 0x0004, 0x0002,
256 0x0010, 0x000f, 0x0011, 0x001b, 0x0019, 0x0014, 0x001d, 0x000b,
257 0x0011, 0x000c, 0x0010, 0x0008, 0x0001, 0x0001, 0x0000, 0x0001,
260 static const uint8_t mpa_huffbits_13[256] = {
261 1, 4, 6, 7, 8, 9, 9, 10,
262 9, 10, 11, 11, 12, 12, 13, 13,
263 3, 4, 6, 7, 8, 8, 9, 9,
264 9, 9, 10, 10, 11, 12, 12, 12,
265 6, 6, 7, 8, 9, 9, 10, 10,
266 9, 10, 10, 11, 11, 12, 13, 13,
267 7, 7, 8, 9, 9, 10, 10, 10,
268 10, 11, 11, 11, 11, 12, 13, 13,
269 8, 7, 9, 9, 10, 10, 11, 11,
270 10, 11, 11, 12, 12, 13, 13, 14,
271 9, 8, 9, 10, 10, 10, 11, 11,
272 11, 11, 12, 11, 13, 13, 14, 14,
273 9, 9, 10, 10, 11, 11, 11, 11,
274 11, 12, 12, 12, 13, 13, 14, 14,
275 10, 9, 10, 11, 11, 11, 12, 12,
276 12, 12, 13, 13, 13, 14, 16, 16,
277 9, 8, 9, 10, 10, 11, 11, 12,
278 12, 12, 12, 13, 13, 14, 15, 15,
279 10, 9, 10, 10, 11, 11, 11, 13,
280 12, 13, 13, 14, 14, 14, 16, 15,
281 10, 10, 10, 11, 11, 12, 12, 13,
282 12, 13, 14, 13, 14, 15, 16, 17,
283 11, 10, 10, 11, 12, 12, 12, 12,
284 13, 13, 13, 14, 15, 15, 15, 16,
285 11, 11, 11, 12, 12, 13, 12, 13,
286 14, 14, 15, 15, 15, 16, 16, 16,
287 12, 11, 12, 13, 13, 13, 14, 14,
288 14, 14, 14, 15, 16, 15, 16, 16,
289 13, 12, 12, 13, 13, 13, 15, 14,
290 14, 17, 15, 15, 15, 17, 16, 16,
291 12, 12, 13, 14, 14, 14, 15, 14,
292 15, 15, 16, 16, 19, 18, 19, 16,
295 static const uint16_t mpa_huffcodes_15[256] = {
296 0x0007, 0x000c, 0x0012, 0x0035, 0x002f, 0x004c, 0x007c, 0x006c,
297 0x0059, 0x007b, 0x006c, 0x0077, 0x006b, 0x0051, 0x007a, 0x003f,
298 0x000d, 0x0005, 0x0010, 0x001b, 0x002e, 0x0024, 0x003d, 0x0033,
299 0x002a, 0x0046, 0x0034, 0x0053, 0x0041, 0x0029, 0x003b, 0x0024,
300 0x0013, 0x0011, 0x000f, 0x0018, 0x0029, 0x0022, 0x003b, 0x0030,
301 0x0028, 0x0040, 0x0032, 0x004e, 0x003e, 0x0050, 0x0038, 0x0021,
302 0x001d, 0x001c, 0x0019, 0x002b, 0x0027, 0x003f, 0x0037, 0x005d,
303 0x004c, 0x003b, 0x005d, 0x0048, 0x0036, 0x004b, 0x0032, 0x001d,
304 0x0034, 0x0016, 0x002a, 0x0028, 0x0043, 0x0039, 0x005f, 0x004f,
305 0x0048, 0x0039, 0x0059, 0x0045, 0x0031, 0x0042, 0x002e, 0x001b,
306 0x004d, 0x0025, 0x0023, 0x0042, 0x003a, 0x0034, 0x005b, 0x004a,
307 0x003e, 0x0030, 0x004f, 0x003f, 0x005a, 0x003e, 0x0028, 0x0026,
308 0x007d, 0x0020, 0x003c, 0x0038, 0x0032, 0x005c, 0x004e, 0x0041,
309 0x0037, 0x0057, 0x0047, 0x0033, 0x0049, 0x0033, 0x0046, 0x001e,
310 0x006d, 0x0035, 0x0031, 0x005e, 0x0058, 0x004b, 0x0042, 0x007a,
311 0x005b, 0x0049, 0x0038, 0x002a, 0x0040, 0x002c, 0x0015, 0x0019,
312 0x005a, 0x002b, 0x0029, 0x004d, 0x0049, 0x003f, 0x0038, 0x005c,
313 0x004d, 0x0042, 0x002f, 0x0043, 0x0030, 0x0035, 0x0024, 0x0014,
314 0x0047, 0x0022, 0x0043, 0x003c, 0x003a, 0x0031, 0x0058, 0x004c,
315 0x0043, 0x006a, 0x0047, 0x0036, 0x0026, 0x0027, 0x0017, 0x000f,
316 0x006d, 0x0035, 0x0033, 0x002f, 0x005a, 0x0052, 0x003a, 0x0039,
317 0x0030, 0x0048, 0x0039, 0x0029, 0x0017, 0x001b, 0x003e, 0x0009,
318 0x0056, 0x002a, 0x0028, 0x0025, 0x0046, 0x0040, 0x0034, 0x002b,
319 0x0046, 0x0037, 0x002a, 0x0019, 0x001d, 0x0012, 0x000b, 0x000b,
320 0x0076, 0x0044, 0x001e, 0x0037, 0x0032, 0x002e, 0x004a, 0x0041,
321 0x0031, 0x0027, 0x0018, 0x0010, 0x0016, 0x000d, 0x000e, 0x0007,
322 0x005b, 0x002c, 0x0027, 0x0026, 0x0022, 0x003f, 0x0034, 0x002d,
323 0x001f, 0x0034, 0x001c, 0x0013, 0x000e, 0x0008, 0x0009, 0x0003,
324 0x007b, 0x003c, 0x003a, 0x0035, 0x002f, 0x002b, 0x0020, 0x0016,
325 0x0025, 0x0018, 0x0011, 0x000c, 0x000f, 0x000a, 0x0002, 0x0001,
326 0x0047, 0x0025, 0x0022, 0x001e, 0x001c, 0x0014, 0x0011, 0x001a,
327 0x0015, 0x0010, 0x000a, 0x0006, 0x0008, 0x0006, 0x0002, 0x0000,
330 static const uint8_t mpa_huffbits_15[256] = {
331 3, 4, 5, 7, 7, 8, 9, 9,
332 9, 10, 10, 11, 11, 11, 12, 13,
333 4, 3, 5, 6, 7, 7, 8, 8,
334 8, 9, 9, 10, 10, 10, 11, 11,
335 5, 5, 5, 6, 7, 7, 8, 8,
336 8, 9, 9, 10, 10, 11, 11, 11,
337 6, 6, 6, 7, 7, 8, 8, 9,
338 9, 9, 10, 10, 10, 11, 11, 11,
339 7, 6, 7, 7, 8, 8, 9, 9,
340 9, 9, 10, 10, 10, 11, 11, 11,
341 8, 7, 7, 8, 8, 8, 9, 9,
342 9, 9, 10, 10, 11, 11, 11, 12,
343 9, 7, 8, 8, 8, 9, 9, 9,
344 9, 10, 10, 10, 11, 11, 12, 12,
345 9, 8, 8, 9, 9, 9, 9, 10,
346 10, 10, 10, 10, 11, 11, 11, 12,
347 9, 8, 8, 9, 9, 9, 9, 10,
348 10, 10, 10, 11, 11, 12, 12, 12,
349 9, 8, 9, 9, 9, 9, 10, 10,
350 10, 11, 11, 11, 11, 12, 12, 12,
351 10, 9, 9, 9, 10, 10, 10, 10,
352 10, 11, 11, 11, 11, 12, 13, 12,
353 10, 9, 9, 9, 10, 10, 10, 10,
354 11, 11, 11, 11, 12, 12, 12, 13,
355 11, 10, 9, 10, 10, 10, 11, 11,
356 11, 11, 11, 11, 12, 12, 13, 13,
357 11, 10, 10, 10, 10, 11, 11, 11,
358 11, 12, 12, 12, 12, 12, 13, 13,
359 12, 11, 11, 11, 11, 11, 11, 11,
360 12, 12, 12, 12, 13, 13, 12, 13,
361 12, 11, 11, 11, 11, 11, 11, 12,
362 12, 12, 12, 12, 13, 13, 13, 13,
365 static const uint16_t mpa_huffcodes_16[256] = {
366 0x0001, 0x0005, 0x000e, 0x002c, 0x004a, 0x003f, 0x006e, 0x005d,
367 0x00ac, 0x0095, 0x008a, 0x00f2, 0x00e1, 0x00c3, 0x0178, 0x0011,
368 0x0003, 0x0004, 0x000c, 0x0014, 0x0023, 0x003e, 0x0035, 0x002f,
369 0x0053, 0x004b, 0x0044, 0x0077, 0x00c9, 0x006b, 0x00cf, 0x0009,
370 0x000f, 0x000d, 0x0017, 0x0026, 0x0043, 0x003a, 0x0067, 0x005a,
371 0x00a1, 0x0048, 0x007f, 0x0075, 0x006e, 0x00d1, 0x00ce, 0x0010,
372 0x002d, 0x0015, 0x0027, 0x0045, 0x0040, 0x0072, 0x0063, 0x0057,
373 0x009e, 0x008c, 0x00fc, 0x00d4, 0x00c7, 0x0183, 0x016d, 0x001a,
374 0x004b, 0x0024, 0x0044, 0x0041, 0x0073, 0x0065, 0x00b3, 0x00a4,
375 0x009b, 0x0108, 0x00f6, 0x00e2, 0x018b, 0x017e, 0x016a, 0x0009,
376 0x0042, 0x001e, 0x003b, 0x0038, 0x0066, 0x00b9, 0x00ad, 0x0109,
377 0x008e, 0x00fd, 0x00e8, 0x0190, 0x0184, 0x017a, 0x01bd, 0x0010,
378 0x006f, 0x0036, 0x0034, 0x0064, 0x00b8, 0x00b2, 0x00a0, 0x0085,
379 0x0101, 0x00f4, 0x00e4, 0x00d9, 0x0181, 0x016e, 0x02cb, 0x000a,
380 0x0062, 0x0030, 0x005b, 0x0058, 0x00a5, 0x009d, 0x0094, 0x0105,
381 0x00f8, 0x0197, 0x018d, 0x0174, 0x017c, 0x0379, 0x0374, 0x0008,
382 0x0055, 0x0054, 0x0051, 0x009f, 0x009c, 0x008f, 0x0104, 0x00f9,
383 0x01ab, 0x0191, 0x0188, 0x017f, 0x02d7, 0x02c9, 0x02c4, 0x0007,
384 0x009a, 0x004c, 0x0049, 0x008d, 0x0083, 0x0100, 0x00f5, 0x01aa,
385 0x0196, 0x018a, 0x0180, 0x02df, 0x0167, 0x02c6, 0x0160, 0x000b,
386 0x008b, 0x0081, 0x0043, 0x007d, 0x00f7, 0x00e9, 0x00e5, 0x00db,
387 0x0189, 0x02e7, 0x02e1, 0x02d0, 0x0375, 0x0372, 0x01b7, 0x0004,
388 0x00f3, 0x0078, 0x0076, 0x0073, 0x00e3, 0x00df, 0x018c, 0x02ea,
389 0x02e6, 0x02e0, 0x02d1, 0x02c8, 0x02c2, 0x00df, 0x01b4, 0x0006,
390 0x00ca, 0x00e0, 0x00de, 0x00da, 0x00d8, 0x0185, 0x0182, 0x017d,
391 0x016c, 0x0378, 0x01bb, 0x02c3, 0x01b8, 0x01b5, 0x06c0, 0x0004,
392 0x02eb, 0x00d3, 0x00d2, 0x00d0, 0x0172, 0x017b, 0x02de, 0x02d3,
393 0x02ca, 0x06c7, 0x0373, 0x036d, 0x036c, 0x0d83, 0x0361, 0x0002,
394 0x0179, 0x0171, 0x0066, 0x00bb, 0x02d6, 0x02d2, 0x0166, 0x02c7,
395 0x02c5, 0x0362, 0x06c6, 0x0367, 0x0d82, 0x0366, 0x01b2, 0x0000,
396 0x000c, 0x000a, 0x0007, 0x000b, 0x000a, 0x0011, 0x000b, 0x0009,
397 0x000d, 0x000c, 0x000a, 0x0007, 0x0005, 0x0003, 0x0001, 0x0003,
400 static const uint8_t mpa_huffbits_16[256] = {
401 1, 4, 6, 8, 9, 9, 10, 10,
402 11, 11, 11, 12, 12, 12, 13, 9,
403 3, 4, 6, 7, 8, 9, 9, 9,
404 10, 10, 10, 11, 12, 11, 12, 8,
405 6, 6, 7, 8, 9, 9, 10, 10,
406 11, 10, 11, 11, 11, 12, 12, 9,
407 8, 7, 8, 9, 9, 10, 10, 10,
408 11, 11, 12, 12, 12, 13, 13, 10,
409 9, 8, 9, 9, 10, 10, 11, 11,
410 11, 12, 12, 12, 13, 13, 13, 9,
411 9, 8, 9, 9, 10, 11, 11, 12,
412 11, 12, 12, 13, 13, 13, 14, 10,
413 10, 9, 9, 10, 11, 11, 11, 11,
414 12, 12, 12, 12, 13, 13, 14, 10,
415 10, 9, 10, 10, 11, 11, 11, 12,
416 12, 13, 13, 13, 13, 15, 15, 10,
417 10, 10, 10, 11, 11, 11, 12, 12,
418 13, 13, 13, 13, 14, 14, 14, 10,
419 11, 10, 10, 11, 11, 12, 12, 13,
420 13, 13, 13, 14, 13, 14, 13, 11,
421 11, 11, 10, 11, 12, 12, 12, 12,
422 13, 14, 14, 14, 15, 15, 14, 10,
423 12, 11, 11, 11, 12, 12, 13, 14,
424 14, 14, 14, 14, 14, 13, 14, 11,
425 12, 12, 12, 12, 12, 13, 13, 13,
426 13, 15, 14, 14, 14, 14, 16, 11,
427 14, 12, 12, 12, 13, 13, 14, 14,
428 14, 16, 15, 15, 15, 17, 15, 11,
429 13, 13, 11, 12, 14, 14, 13, 14,
430 14, 15, 16, 15, 17, 15, 14, 11,
431 9, 8, 8, 9, 9, 10, 10, 10,
432 11, 11, 11, 11, 11, 11, 11, 8,
435 static const uint16_t mpa_huffcodes_24[256] = {
436 0x000f, 0x000d, 0x002e, 0x0050, 0x0092, 0x0106, 0x00f8, 0x01b2,
437 0x01aa, 0x029d, 0x028d, 0x0289, 0x026d, 0x0205, 0x0408, 0x0058,
438 0x000e, 0x000c, 0x0015, 0x0026, 0x0047, 0x0082, 0x007a, 0x00d8,
439 0x00d1, 0x00c6, 0x0147, 0x0159, 0x013f, 0x0129, 0x0117, 0x002a,
440 0x002f, 0x0016, 0x0029, 0x004a, 0x0044, 0x0080, 0x0078, 0x00dd,
441 0x00cf, 0x00c2, 0x00b6, 0x0154, 0x013b, 0x0127, 0x021d, 0x0012,
442 0x0051, 0x0027, 0x004b, 0x0046, 0x0086, 0x007d, 0x0074, 0x00dc,
443 0x00cc, 0x00be, 0x00b2, 0x0145, 0x0137, 0x0125, 0x010f, 0x0010,
444 0x0093, 0x0048, 0x0045, 0x0087, 0x007f, 0x0076, 0x0070, 0x00d2,
445 0x00c8, 0x00bc, 0x0160, 0x0143, 0x0132, 0x011d, 0x021c, 0x000e,
446 0x0107, 0x0042, 0x0081, 0x007e, 0x0077, 0x0072, 0x00d6, 0x00ca,
447 0x00c0, 0x00b4, 0x0155, 0x013d, 0x012d, 0x0119, 0x0106, 0x000c,
448 0x00f9, 0x007b, 0x0079, 0x0075, 0x0071, 0x00d7, 0x00ce, 0x00c3,
449 0x00b9, 0x015b, 0x014a, 0x0134, 0x0123, 0x0110, 0x0208, 0x000a,
450 0x01b3, 0x0073, 0x006f, 0x006d, 0x00d3, 0x00cb, 0x00c4, 0x00bb,
451 0x0161, 0x014c, 0x0139, 0x012a, 0x011b, 0x0213, 0x017d, 0x0011,
452 0x01ab, 0x00d4, 0x00d0, 0x00cd, 0x00c9, 0x00c1, 0x00ba, 0x00b1,
453 0x00a9, 0x0140, 0x012f, 0x011e, 0x010c, 0x0202, 0x0179, 0x0010,
454 0x014f, 0x00c7, 0x00c5, 0x00bf, 0x00bd, 0x00b5, 0x00ae, 0x014d,
455 0x0141, 0x0131, 0x0121, 0x0113, 0x0209, 0x017b, 0x0173, 0x000b,
456 0x029c, 0x00b8, 0x00b7, 0x00b3, 0x00af, 0x0158, 0x014b, 0x013a,
457 0x0130, 0x0122, 0x0115, 0x0212, 0x017f, 0x0175, 0x016e, 0x000a,
458 0x028c, 0x015a, 0x00ab, 0x00a8, 0x00a4, 0x013e, 0x0135, 0x012b,
459 0x011f, 0x0114, 0x0107, 0x0201, 0x0177, 0x0170, 0x016a, 0x0006,
460 0x0288, 0x0142, 0x013c, 0x0138, 0x0133, 0x012e, 0x0124, 0x011c,
461 0x010d, 0x0105, 0x0200, 0x0178, 0x0172, 0x016c, 0x0167, 0x0004,
462 0x026c, 0x012c, 0x0128, 0x0126, 0x0120, 0x011a, 0x0111, 0x010a,
463 0x0203, 0x017c, 0x0176, 0x0171, 0x016d, 0x0169, 0x0165, 0x0002,
464 0x0409, 0x0118, 0x0116, 0x0112, 0x010b, 0x0108, 0x0103, 0x017e,
465 0x017a, 0x0174, 0x016f, 0x016b, 0x0168, 0x0166, 0x0164, 0x0000,
466 0x002b, 0x0014, 0x0013, 0x0011, 0x000f, 0x000d, 0x000b, 0x0009,
467 0x0007, 0x0006, 0x0004, 0x0007, 0x0005, 0x0003, 0x0001, 0x0003,
470 static const uint8_t mpa_huffbits_24[256] = {
471 4, 4, 6, 7, 8, 9, 9, 10,
472 10, 11, 11, 11, 11, 11, 12, 9,
473 4, 4, 5, 6, 7, 8, 8, 9,
474 9, 9, 10, 10, 10, 10, 10, 8,
475 6, 5, 6, 7, 7, 8, 8, 9,
476 9, 9, 9, 10, 10, 10, 11, 7,
477 7, 6, 7, 7, 8, 8, 8, 9,
478 9, 9, 9, 10, 10, 10, 10, 7,
479 8, 7, 7, 8, 8, 8, 8, 9,
480 9, 9, 10, 10, 10, 10, 11, 7,
481 9, 7, 8, 8, 8, 8, 9, 9,
482 9, 9, 10, 10, 10, 10, 10, 7,
483 9, 8, 8, 8, 8, 9, 9, 9,
484 9, 10, 10, 10, 10, 10, 11, 7,
485 10, 8, 8, 8, 9, 9, 9, 9,
486 10, 10, 10, 10, 10, 11, 11, 8,
487 10, 9, 9, 9, 9, 9, 9, 9,
488 9, 10, 10, 10, 10, 11, 11, 8,
489 10, 9, 9, 9, 9, 9, 9, 10,
490 10, 10, 10, 10, 11, 11, 11, 8,
491 11, 9, 9, 9, 9, 10, 10, 10,
492 10, 10, 10, 11, 11, 11, 11, 8,
493 11, 10, 9, 9, 9, 10, 10, 10,
494 10, 10, 10, 11, 11, 11, 11, 8,
495 11, 10, 10, 10, 10, 10, 10, 10,
496 10, 10, 11, 11, 11, 11, 11, 8,
497 11, 10, 10, 10, 10, 10, 10, 10,
498 11, 11, 11, 11, 11, 11, 11, 8,
499 12, 10, 10, 10, 10, 10, 10, 11,
500 11, 11, 11, 11, 11, 11, 11, 8,
501 8, 7, 7, 7, 7, 7, 7, 7,
502 7, 7, 7, 8, 8, 8, 8, 4,
505 static const HuffTable mpa_huff_tables[16] = {
506 { 1, NULL, NULL },
507 { 2, mpa_huffbits_1, mpa_huffcodes_1 },
508 { 3, mpa_huffbits_2, mpa_huffcodes_2 },
509 { 3, mpa_huffbits_3, mpa_huffcodes_3 },
510 { 4, mpa_huffbits_5, mpa_huffcodes_5 },
511 { 4, mpa_huffbits_6, mpa_huffcodes_6 },
512 { 6, mpa_huffbits_7, mpa_huffcodes_7 },
513 { 6, mpa_huffbits_8, mpa_huffcodes_8 },
514 { 6, mpa_huffbits_9, mpa_huffcodes_9 },
515 { 8, mpa_huffbits_10, mpa_huffcodes_10 },
516 { 8, mpa_huffbits_11, mpa_huffcodes_11 },
517 { 8, mpa_huffbits_12, mpa_huffcodes_12 },
518 { 16, mpa_huffbits_13, mpa_huffcodes_13 },
519 { 16, mpa_huffbits_15, mpa_huffcodes_15 },
520 { 16, mpa_huffbits_16, mpa_huffcodes_16 },
521 { 16, mpa_huffbits_24, mpa_huffcodes_24 },
524 static const uint8_t mpa_huff_data[32][2] = {
525 { 0, 0 },
526 { 1, 0 },
527 { 2, 0 },
528 { 3, 0 },
529 { 0, 0 },
530 { 4, 0 },
531 { 5, 0 },
532 { 6, 0 },
533 { 7, 0 },
534 { 8, 0 },
535 { 9, 0 },
536 { 10, 0 },
537 { 11, 0 },
538 { 12, 0 },
539 { 0, 0 },
540 { 13, 0 },
541 { 14, 1 },
542 { 14, 2 },
543 { 14, 3 },
544 { 14, 4 },
545 { 14, 6 },
546 { 14, 8 },
547 { 14, 10 },
548 { 14, 13 },
549 { 15, 4 },
550 { 15, 5 },
551 { 15, 6 },
552 { 15, 7 },
553 { 15, 8 },
554 { 15, 9 },
555 { 15, 11 },
556 { 15, 13 },
560 /* huffman tables for quadrules */
561 static const uint8_t mpa_quad_codes[2][16] = {
562 { 1, 5, 4, 5, 6, 5, 4, 4, 7, 3, 6, 0, 7, 2, 3, 1, },
563 { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, },
566 static const uint8_t mpa_quad_bits[2][16] = {
567 { 1, 4, 4, 5, 4, 6, 5, 6, 4, 5, 5, 6, 5, 6, 6, 6, },
568 { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, },
571 /* band size tables */
572 static const uint8_t band_size_long[9][22] = {
573 { 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10,
574 12, 16, 20, 24, 28, 34, 42, 50, 54, 76, 158, }, /* 44100 */
575 { 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 10,
576 12, 16, 18, 22, 28, 34, 40, 46, 54, 54, 192, }, /* 48000 */
577 { 4, 4, 4, 4, 4, 4, 6, 6, 8, 10, 12,
578 16, 20, 24, 30, 38, 46, 56, 68, 84, 102, 26, }, /* 32000 */
579 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
580 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 22050 */
581 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
582 18, 22, 26, 32, 38, 46, 52, 64, 70, 76, 36, }, /* 24000 */
583 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
584 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 16000 */
585 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
586 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 11025 */
587 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
588 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 12000 */
589 { 12, 12, 12, 12, 12, 12, 16, 20, 24, 28, 32,
590 40, 48, 56, 64, 76, 90, 2, 2, 2, 2, 2, }, /* 8000 */
593 static const uint8_t band_size_short[9][13] = {
594 { 4, 4, 4, 4, 6, 8, 10, 12, 14, 18, 22, 30, 56, }, /* 44100 */
595 { 4, 4, 4, 4, 6, 6, 10, 12, 14, 16, 20, 26, 66, }, /* 48000 */
596 { 4, 4, 4, 4, 6, 8, 12, 16, 20, 26, 34, 42, 12, }, /* 32000 */
597 { 4, 4, 4, 6, 6, 8, 10, 14, 18, 26, 32, 42, 18, }, /* 22050 */
598 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 32, 44, 12, }, /* 24000 */
599 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 16000 */
600 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 11025 */
601 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 12000 */
602 { 8, 8, 8, 12, 16, 20, 24, 28, 36, 2, 2, 2, 26, }, /* 8000 */
605 static const uint8_t mpa_pretab[2][22] = {
606 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
607 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0 },
610 /* table for alias reduction (XXX: store it as integer !) */
611 static const float ci_table[8] = {
612 -0.6, -0.535, -0.33, -0.185, -0.095, -0.041, -0.0142, -0.0037,
615 #endif /* AVCODEC_MPEGAUDIODECTAB_H */