Statistics
| Branch: | Revision:

ffmpeg / libavcodec / mpegaudiodectab.h @ 983e3246

History | View | Annotate | Download (29.2 KB)

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
};