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