comparison mpegaudiodectab.h @ 83:2969a96650e5 libavcodec

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