Imported Debian version 2.5.3~trusty1
[deb_ffmpeg.git] / ffmpeg / libavcodec / mpegaudiodectab.h
CommitLineData
2ba45a60
DM
1/*
2 * MPEG Audio decoder
3 * copyright (c) 2002 Fabrice Bellard
4 *
5 * This file is part of FFmpeg.
6 *
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.
11 *
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.
16 *
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
20 */
21
22/**
23 * @file
24 * mpeg audio layer decoder tables.
25 */
26
27#ifndef AVCODEC_MPEGAUDIODECTAB_H
28#define AVCODEC_MPEGAUDIODECTAB_H
29
30#include <stddef.h>
31#include <stdint.h>
32
33#include "mpegaudio.h"
34
35/*******************************************************/
36/* layer 3 tables */
37
38/* layer 3 huffman tables */
39typedef struct HuffTable {
40 int xsize;
41 const uint8_t *bits;
42 const uint16_t *codes;
43} HuffTable;
44
45/* layer3 scale factor size */
46static 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 },
49};
50
51/* number of lsf scale factors for a given size */
52static 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 } },
59};
60
61/* mpegaudio layer 3 huffman tables */
62
63static const uint16_t mpa_huffcodes_1[4] = {
64 0x0001, 0x0001, 0x0001, 0x0000,
65};
66
67static const uint8_t mpa_huffbits_1[4] = {
68 1, 3, 2, 3,
69};
70
71static const uint16_t mpa_huffcodes_2[9] = {
72 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0001, 0x0003, 0x0002,
73 0x0000,
74};
75
76static const uint8_t mpa_huffbits_2[9] = {
77 1, 3, 6, 3, 3, 5, 5, 5,
78 6,
79};
80
81static const uint16_t mpa_huffcodes_3[9] = {
82 0x0003, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0003, 0x0002,
83 0x0000,
84};
85
86static const uint8_t mpa_huffbits_3[9] = {
87 2, 2, 6, 3, 2, 5, 5, 5,
88 6,
89};
90
91static 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,
94};
95
96static 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,
99};
100
101static 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,
104};
105
106static 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,
109};
110
111static 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,
117};
118
119static 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,
125};
126
127static 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,
133};
134
135static 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,
141};
142
143static 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,
149};
150
151static 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,
157};
158
159static 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,
168};
169
170static 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,
179};
180
181static 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,
190};
191
192static 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,
201};
202
203static 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,
212};
213
214static 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,
223};
224
225static 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,
258};
259
260static 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,
293};
294
295static 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,
328};
329
330static 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,
363};
364
365static 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,
398};
399
400static 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,
433};
434
435static 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,
468};
469
470static 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,
503};
504
505static 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 },
522};
523
524static 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 },
557};
558
559
560/* huffman tables for quadrules */
561static 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, },
564};
565
566static 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, },
569};
570
571/* band size tables */
572static 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 */
591};
592
593static 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 */
603};
604
605static 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 },
608};
609
610/* table for alias reduction (XXX: store it as integer !) */
611static const float ci_table[8] = {
612 -0.6, -0.535, -0.33, -0.185, -0.095, -0.041, -0.0142, -0.0037,
613};
614
615#endif /* AVCODEC_MPEGAUDIODECTAB_H */