Statistics
| Branch: | Revision:

ffmpeg / libavcodec / mpegaudiodectab.h @ 2912e87a

History | View | Annotate | Download (23.1 KB)

1
/*
2
 * MPEG Audio decoder
3
 * copyright (c) 2002 Fabrice Bellard
4
 *
5
 * This file is part of Libav.
6
 *
7
 * Libav is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU Lesser General Public
9
 * License as published by the Free Software Foundation; either
10
 * version 2.1 of the License, or (at your option) any later version.
11
 *
12
 * Libav is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
 * Lesser General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Lesser General Public
18
 * License along with Libav; if not, write to the Free Software
19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
 */
21

    
22
/**
23
 * @file
24
 * mpeg audio layer decoder tables.
25
 */
26

    
27
#ifndef AVCODEC_MPEGAUDIODECTAB_H
28
#define AVCODEC_MPEGAUDIODECTAB_H
29

    
30
#include <stdint.h>
31
#include "mpegaudio.h"
32

    
33
/*******************************************************/
34
/* layer 3 tables */
35

    
36
/* layer3 scale factor size */
37
static const uint8_t slen_table[2][16] = {
38
    { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 },
39
    { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 },
40
};
41

    
42
/* number of lsf scale factors for a given size */
43
static const uint8_t lsf_nsf_table[6][3][4] = {
44
    { {  6,  5,  5, 5 }, {  9,  9,  9, 9 }, {  6,  9,  9, 9 } },
45
    { {  6,  5,  7, 3 }, {  9,  9, 12, 6 }, {  6,  9, 12, 6 } },
46
    { { 11, 10,  0, 0 }, { 18, 18,  0, 0 }, { 15, 18,  0, 0 } },
47
    { {  7,  7,  7, 0 }, { 12, 12, 12, 0 }, {  6, 15, 12, 0 } },
48
    { {  6,  6,  6, 3 }, { 12,  9,  9, 6 }, {  6, 12,  9, 6 } },
49
    { {  8,  8,  5, 0 }, { 15, 12,  9, 0 }, {  6, 18,  9, 0 } },
50
};
51

    
52
/* mpegaudio layer 3 huffman tables */
53

    
54
static const uint16_t mpa_huffcodes_1[4] = {
55
 0x0001, 0x0001, 0x0001, 0x0000,
56
};
57

    
58
static const uint8_t mpa_huffbits_1[4] = {
59
  1,  3,  2,  3,
60
};
61

    
62
static const uint16_t mpa_huffcodes_2[9] = {
63
 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0001, 0x0003, 0x0002,
64
 0x0000,
65
};
66

    
67
static const uint8_t mpa_huffbits_2[9] = {
68
  1,  3,  6,  3,  3,  5,  5,  5,
69
  6,
70
};
71

    
72
static const uint16_t mpa_huffcodes_3[9] = {
73
 0x0003, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0003, 0x0002,
74
 0x0000,
75
};
76

    
77
static const uint8_t mpa_huffbits_3[9] = {
78
  2,  2,  6,  3,  2,  5,  5,  5,
79
  6,
80
};
81

    
82
static const uint16_t mpa_huffcodes_5[16] = {
83
 0x0001, 0x0002, 0x0006, 0x0005, 0x0003, 0x0001, 0x0004, 0x0004,
84
 0x0007, 0x0005, 0x0007, 0x0001, 0x0006, 0x0001, 0x0001, 0x0000,
85
};
86

    
87
static const uint8_t mpa_huffbits_5[16] = {
88
  1,  3,  6,  7,  3,  3,  6,  7,
89
  6,  6,  7,  8,  7,  6,  7,  8,
90
};
91

    
92
static const uint16_t mpa_huffcodes_6[16] = {
93
 0x0007, 0x0003, 0x0005, 0x0001, 0x0006, 0x0002, 0x0003, 0x0002,
94
 0x0005, 0x0004, 0x0004, 0x0001, 0x0003, 0x0003, 0x0002, 0x0000,
95
};
96

    
97
static const uint8_t mpa_huffbits_6[16] = {
98
  3,  3,  5,  7,  3,  2,  4,  5,
99
  4,  4,  5,  6,  6,  5,  6,  7,
100
};
101

    
102
static const uint16_t mpa_huffcodes_7[36] = {
103
 0x0001, 0x0002, 0x000a, 0x0013, 0x0010, 0x000a, 0x0003, 0x0003,
104
 0x0007, 0x000a, 0x0005, 0x0003, 0x000b, 0x0004, 0x000d, 0x0011,
105
 0x0008, 0x0004, 0x000c, 0x000b, 0x0012, 0x000f, 0x000b, 0x0002,
106
 0x0007, 0x0006, 0x0009, 0x000e, 0x0003, 0x0001, 0x0006, 0x0004,
107
 0x0005, 0x0003, 0x0002, 0x0000,
108
};
109

    
110
static const uint8_t mpa_huffbits_7[36] = {
111
  1,  3,  6,  8,  8,  9,  3,  4,
112
  6,  7,  7,  8,  6,  5,  7,  8,
113
  8,  9,  7,  7,  8,  9,  9,  9,
114
  7,  7,  8,  9,  9, 10,  8,  8,
115
  9, 10, 10, 10,
116
};
117

    
118
static const uint16_t mpa_huffcodes_8[36] = {
119
 0x0003, 0x0004, 0x0006, 0x0012, 0x000c, 0x0005, 0x0005, 0x0001,
120
 0x0002, 0x0010, 0x0009, 0x0003, 0x0007, 0x0003, 0x0005, 0x000e,
121
 0x0007, 0x0003, 0x0013, 0x0011, 0x000f, 0x000d, 0x000a, 0x0004,
122
 0x000d, 0x0005, 0x0008, 0x000b, 0x0005, 0x0001, 0x000c, 0x0004,
123
 0x0004, 0x0001, 0x0001, 0x0000,
124
};
125

    
126
static const uint8_t mpa_huffbits_8[36] = {
127
  2,  3,  6,  8,  8,  9,  3,  2,
128
  4,  8,  8,  8,  6,  4,  6,  8,
129
  8,  9,  8,  8,  8,  9,  9, 10,
130
  8,  7,  8,  9, 10, 10,  9,  8,
131
  9,  9, 11, 11,
132
};
133

    
134
static const uint16_t mpa_huffcodes_9[36] = {
135
 0x0007, 0x0005, 0x0009, 0x000e, 0x000f, 0x0007, 0x0006, 0x0004,
136
 0x0005, 0x0005, 0x0006, 0x0007, 0x0007, 0x0006, 0x0008, 0x0008,
137
 0x0008, 0x0005, 0x000f, 0x0006, 0x0009, 0x000a, 0x0005, 0x0001,
138
 0x000b, 0x0007, 0x0009, 0x0006, 0x0004, 0x0001, 0x000e, 0x0004,
139
 0x0006, 0x0002, 0x0006, 0x0000,
140
};
141

    
142
static const uint8_t mpa_huffbits_9[36] = {
143
  3,  3,  5,  6,  8,  9,  3,  3,
144
  4,  5,  6,  8,  4,  4,  5,  6,
145
  7,  8,  6,  5,  6,  7,  7,  8,
146
  7,  6,  7,  7,  8,  9,  8,  7,
147
  8,  8,  9,  9,
148
};
149

    
150
static const uint16_t mpa_huffcodes_10[64] = {
151
 0x0001, 0x0002, 0x000a, 0x0017, 0x0023, 0x001e, 0x000c, 0x0011,
152
 0x0003, 0x0003, 0x0008, 0x000c, 0x0012, 0x0015, 0x000c, 0x0007,
153
 0x000b, 0x0009, 0x000f, 0x0015, 0x0020, 0x0028, 0x0013, 0x0006,
154
 0x000e, 0x000d, 0x0016, 0x0022, 0x002e, 0x0017, 0x0012, 0x0007,
155
 0x0014, 0x0013, 0x0021, 0x002f, 0x001b, 0x0016, 0x0009, 0x0003,
156
 0x001f, 0x0016, 0x0029, 0x001a, 0x0015, 0x0014, 0x0005, 0x0003,
157
 0x000e, 0x000d, 0x000a, 0x000b, 0x0010, 0x0006, 0x0005, 0x0001,
158
 0x0009, 0x0008, 0x0007, 0x0008, 0x0004, 0x0004, 0x0002, 0x0000,
159
};
160

    
161
static const uint8_t mpa_huffbits_10[64] = {
162
  1,  3,  6,  8,  9,  9,  9, 10,
163
  3,  4,  6,  7,  8,  9,  8,  8,
164
  6,  6,  7,  8,  9, 10,  9,  9,
165
  7,  7,  8,  9, 10, 10,  9, 10,
166
  8,  8,  9, 10, 10, 10, 10, 10,
167
  9,  9, 10, 10, 11, 11, 10, 11,
168
  8,  8,  9, 10, 10, 10, 11, 11,
169
  9,  8,  9, 10, 10, 11, 11, 11,
170
};
171

    
172
static const uint16_t mpa_huffcodes_11[64] = {
173
 0x0003, 0x0004, 0x000a, 0x0018, 0x0022, 0x0021, 0x0015, 0x000f,
174
 0x0005, 0x0003, 0x0004, 0x000a, 0x0020, 0x0011, 0x000b, 0x000a,
175
 0x000b, 0x0007, 0x000d, 0x0012, 0x001e, 0x001f, 0x0014, 0x0005,
176
 0x0019, 0x000b, 0x0013, 0x003b, 0x001b, 0x0012, 0x000c, 0x0005,
177
 0x0023, 0x0021, 0x001f, 0x003a, 0x001e, 0x0010, 0x0007, 0x0005,
178
 0x001c, 0x001a, 0x0020, 0x0013, 0x0011, 0x000f, 0x0008, 0x000e,
179
 0x000e, 0x000c, 0x0009, 0x000d, 0x000e, 0x0009, 0x0004, 0x0001,
180
 0x000b, 0x0004, 0x0006, 0x0006, 0x0006, 0x0003, 0x0002, 0x0000,
181
};
182

    
183
static const uint8_t mpa_huffbits_11[64] = {
184
  2,  3,  5,  7,  8,  9,  8,  9,
185
  3,  3,  4,  6,  8,  8,  7,  8,
186
  5,  5,  6,  7,  8,  9,  8,  8,
187
  7,  6,  7,  9,  8, 10,  8,  9,
188
  8,  8,  8,  9,  9, 10,  9, 10,
189
  8,  8,  9, 10, 10, 11, 10, 11,
190
  8,  7,  7,  8,  9, 10, 10, 10,
191
  8,  7,  8,  9, 10, 10, 10, 10,
192
};
193

    
194
static const uint16_t mpa_huffcodes_12[64] = {
195
 0x0009, 0x0006, 0x0010, 0x0021, 0x0029, 0x0027, 0x0026, 0x001a,
196
 0x0007, 0x0005, 0x0006, 0x0009, 0x0017, 0x0010, 0x001a, 0x000b,
197
 0x0011, 0x0007, 0x000b, 0x000e, 0x0015, 0x001e, 0x000a, 0x0007,
198
 0x0011, 0x000a, 0x000f, 0x000c, 0x0012, 0x001c, 0x000e, 0x0005,
199
 0x0020, 0x000d, 0x0016, 0x0013, 0x0012, 0x0010, 0x0009, 0x0005,
200
 0x0028, 0x0011, 0x001f, 0x001d, 0x0011, 0x000d, 0x0004, 0x0002,
201
 0x001b, 0x000c, 0x000b, 0x000f, 0x000a, 0x0007, 0x0004, 0x0001,
202
 0x001b, 0x000c, 0x0008, 0x000c, 0x0006, 0x0003, 0x0001, 0x0000,
203
};
204

    
205
static const uint8_t mpa_huffbits_12[64] = {
206
  4,  3,  5,  7,  8,  9,  9,  9,
207
  3,  3,  4,  5,  7,  7,  8,  8,
208
  5,  4,  5,  6,  7,  8,  7,  8,
209
  6,  5,  6,  6,  7,  8,  8,  8,
210
  7,  6,  7,  7,  8,  8,  8,  9,
211
  8,  7,  8,  8,  8,  9,  8,  9,
212
  8,  7,  7,  8,  8,  9,  9, 10,
213
  9,  8,  8,  9,  9,  9,  9, 10,
214
};
215

    
216
static const uint16_t mpa_huffcodes_13[256] = {
217
 0x0001, 0x0005, 0x000e, 0x0015, 0x0022, 0x0033, 0x002e, 0x0047,
218
 0x002a, 0x0034, 0x0044, 0x0034, 0x0043, 0x002c, 0x002b, 0x0013,
219
 0x0003, 0x0004, 0x000c, 0x0013, 0x001f, 0x001a, 0x002c, 0x0021,
220
 0x001f, 0x0018, 0x0020, 0x0018, 0x001f, 0x0023, 0x0016, 0x000e,
221
 0x000f, 0x000d, 0x0017, 0x0024, 0x003b, 0x0031, 0x004d, 0x0041,
222
 0x001d, 0x0028, 0x001e, 0x0028, 0x001b, 0x0021, 0x002a, 0x0010,
223
 0x0016, 0x0014, 0x0025, 0x003d, 0x0038, 0x004f, 0x0049, 0x0040,
224
 0x002b, 0x004c, 0x0038, 0x0025, 0x001a, 0x001f, 0x0019, 0x000e,
225
 0x0023, 0x0010, 0x003c, 0x0039, 0x0061, 0x004b, 0x0072, 0x005b,
226
 0x0036, 0x0049, 0x0037, 0x0029, 0x0030, 0x0035, 0x0017, 0x0018,
227
 0x003a, 0x001b, 0x0032, 0x0060, 0x004c, 0x0046, 0x005d, 0x0054,
228
 0x004d, 0x003a, 0x004f, 0x001d, 0x004a, 0x0031, 0x0029, 0x0011,
229
 0x002f, 0x002d, 0x004e, 0x004a, 0x0073, 0x005e, 0x005a, 0x004f,
230
 0x0045, 0x0053, 0x0047, 0x0032, 0x003b, 0x0026, 0x0024, 0x000f,
231
 0x0048, 0x0022, 0x0038, 0x005f, 0x005c, 0x0055, 0x005b, 0x005a,
232
 0x0056, 0x0049, 0x004d, 0x0041, 0x0033, 0x002c, 0x002b, 0x002a,
233
 0x002b, 0x0014, 0x001e, 0x002c, 0x0037, 0x004e, 0x0048, 0x0057,
234
 0x004e, 0x003d, 0x002e, 0x0036, 0x0025, 0x001e, 0x0014, 0x0010,
235
 0x0035, 0x0019, 0x0029, 0x0025, 0x002c, 0x003b, 0x0036, 0x0051,
236
 0x0042, 0x004c, 0x0039, 0x0036, 0x0025, 0x0012, 0x0027, 0x000b,
237
 0x0023, 0x0021, 0x001f, 0x0039, 0x002a, 0x0052, 0x0048, 0x0050,
238
 0x002f, 0x003a, 0x0037, 0x0015, 0x0016, 0x001a, 0x0026, 0x0016,
239
 0x0035, 0x0019, 0x0017, 0x0026, 0x0046, 0x003c, 0x0033, 0x0024,
240
 0x0037, 0x001a, 0x0022, 0x0017, 0x001b, 0x000e, 0x0009, 0x0007,
241
 0x0022, 0x0020, 0x001c, 0x0027, 0x0031, 0x004b, 0x001e, 0x0034,
242
 0x0030, 0x0028, 0x0034, 0x001c, 0x0012, 0x0011, 0x0009, 0x0005,
243
 0x002d, 0x0015, 0x0022, 0x0040, 0x0038, 0x0032, 0x0031, 0x002d,
244
 0x001f, 0x0013, 0x000c, 0x000f, 0x000a, 0x0007, 0x0006, 0x0003,
245
 0x0030, 0x0017, 0x0014, 0x0027, 0x0024, 0x0023, 0x0035, 0x0015,
246
 0x0010, 0x0017, 0x000d, 0x000a, 0x0006, 0x0001, 0x0004, 0x0002,
247
 0x0010, 0x000f, 0x0011, 0x001b, 0x0019, 0x0014, 0x001d, 0x000b,
248
 0x0011, 0x000c, 0x0010, 0x0008, 0x0001, 0x0001, 0x0000, 0x0001,
249
};
250

    
251
static const uint8_t mpa_huffbits_13[256] = {
252
  1,  4,  6,  7,  8,  9,  9, 10,
253
  9, 10, 11, 11, 12, 12, 13, 13,
254
  3,  4,  6,  7,  8,  8,  9,  9,
255
  9,  9, 10, 10, 11, 12, 12, 12,
256
  6,  6,  7,  8,  9,  9, 10, 10,
257
  9, 10, 10, 11, 11, 12, 13, 13,
258
  7,  7,  8,  9,  9, 10, 10, 10,
259
 10, 11, 11, 11, 11, 12, 13, 13,
260
  8,  7,  9,  9, 10, 10, 11, 11,
261
 10, 11, 11, 12, 12, 13, 13, 14,
262
  9,  8,  9, 10, 10, 10, 11, 11,
263
 11, 11, 12, 11, 13, 13, 14, 14,
264
  9,  9, 10, 10, 11, 11, 11, 11,
265
 11, 12, 12, 12, 13, 13, 14, 14,
266
 10,  9, 10, 11, 11, 11, 12, 12,
267
 12, 12, 13, 13, 13, 14, 16, 16,
268
  9,  8,  9, 10, 10, 11, 11, 12,
269
 12, 12, 12, 13, 13, 14, 15, 15,
270
 10,  9, 10, 10, 11, 11, 11, 13,
271
 12, 13, 13, 14, 14, 14, 16, 15,
272
 10, 10, 10, 11, 11, 12, 12, 13,
273
 12, 13, 14, 13, 14, 15, 16, 17,
274
 11, 10, 10, 11, 12, 12, 12, 12,
275
 13, 13, 13, 14, 15, 15, 15, 16,
276
 11, 11, 11, 12, 12, 13, 12, 13,
277
 14, 14, 15, 15, 15, 16, 16, 16,
278
 12, 11, 12, 13, 13, 13, 14, 14,
279
 14, 14, 14, 15, 16, 15, 16, 16,
280
 13, 12, 12, 13, 13, 13, 15, 14,
281
 14, 17, 15, 15, 15, 17, 16, 16,
282
 12, 12, 13, 14, 14, 14, 15, 14,
283
 15, 15, 16, 16, 19, 18, 19, 16,
284
};
285

    
286
static const uint16_t mpa_huffcodes_15[256] = {
287
 0x0007, 0x000c, 0x0012, 0x0035, 0x002f, 0x004c, 0x007c, 0x006c,
288
 0x0059, 0x007b, 0x006c, 0x0077, 0x006b, 0x0051, 0x007a, 0x003f,
289
 0x000d, 0x0005, 0x0010, 0x001b, 0x002e, 0x0024, 0x003d, 0x0033,
290
 0x002a, 0x0046, 0x0034, 0x0053, 0x0041, 0x0029, 0x003b, 0x0024,
291
 0x0013, 0x0011, 0x000f, 0x0018, 0x0029, 0x0022, 0x003b, 0x0030,
292
 0x0028, 0x0040, 0x0032, 0x004e, 0x003e, 0x0050, 0x0038, 0x0021,
293
 0x001d, 0x001c, 0x0019, 0x002b, 0x0027, 0x003f, 0x0037, 0x005d,
294
 0x004c, 0x003b, 0x005d, 0x0048, 0x0036, 0x004b, 0x0032, 0x001d,
295
 0x0034, 0x0016, 0x002a, 0x0028, 0x0043, 0x0039, 0x005f, 0x004f,
296
 0x0048, 0x0039, 0x0059, 0x0045, 0x0031, 0x0042, 0x002e, 0x001b,
297
 0x004d, 0x0025, 0x0023, 0x0042, 0x003a, 0x0034, 0x005b, 0x004a,
298
 0x003e, 0x0030, 0x004f, 0x003f, 0x005a, 0x003e, 0x0028, 0x0026,
299
 0x007d, 0x0020, 0x003c, 0x0038, 0x0032, 0x005c, 0x004e, 0x0041,
300
 0x0037, 0x0057, 0x0047, 0x0033, 0x0049, 0x0033, 0x0046, 0x001e,
301
 0x006d, 0x0035, 0x0031, 0x005e, 0x0058, 0x004b, 0x0042, 0x007a,
302
 0x005b, 0x0049, 0x0038, 0x002a, 0x0040, 0x002c, 0x0015, 0x0019,
303
 0x005a, 0x002b, 0x0029, 0x004d, 0x0049, 0x003f, 0x0038, 0x005c,
304
 0x004d, 0x0042, 0x002f, 0x0043, 0x0030, 0x0035, 0x0024, 0x0014,
305
 0x0047, 0x0022, 0x0043, 0x003c, 0x003a, 0x0031, 0x0058, 0x004c,
306
 0x0043, 0x006a, 0x0047, 0x0036, 0x0026, 0x0027, 0x0017, 0x000f,
307
 0x006d, 0x0035, 0x0033, 0x002f, 0x005a, 0x0052, 0x003a, 0x0039,
308
 0x0030, 0x0048, 0x0039, 0x0029, 0x0017, 0x001b, 0x003e, 0x0009,
309
 0x0056, 0x002a, 0x0028, 0x0025, 0x0046, 0x0040, 0x0034, 0x002b,
310
 0x0046, 0x0037, 0x002a, 0x0019, 0x001d, 0x0012, 0x000b, 0x000b,
311
 0x0076, 0x0044, 0x001e, 0x0037, 0x0032, 0x002e, 0x004a, 0x0041,
312
 0x0031, 0x0027, 0x0018, 0x0010, 0x0016, 0x000d, 0x000e, 0x0007,
313
 0x005b, 0x002c, 0x0027, 0x0026, 0x0022, 0x003f, 0x0034, 0x002d,
314
 0x001f, 0x0034, 0x001c, 0x0013, 0x000e, 0x0008, 0x0009, 0x0003,
315
 0x007b, 0x003c, 0x003a, 0x0035, 0x002f, 0x002b, 0x0020, 0x0016,
316
 0x0025, 0x0018, 0x0011, 0x000c, 0x000f, 0x000a, 0x0002, 0x0001,
317
 0x0047, 0x0025, 0x0022, 0x001e, 0x001c, 0x0014, 0x0011, 0x001a,
318
 0x0015, 0x0010, 0x000a, 0x0006, 0x0008, 0x0006, 0x0002, 0x0000,
319
};
320

    
321
static const uint8_t mpa_huffbits_15[256] = {
322
  3,  4,  5,  7,  7,  8,  9,  9,
323
  9, 10, 10, 11, 11, 11, 12, 13,
324
  4,  3,  5,  6,  7,  7,  8,  8,
325
  8,  9,  9, 10, 10, 10, 11, 11,
326
  5,  5,  5,  6,  7,  7,  8,  8,
327
  8,  9,  9, 10, 10, 11, 11, 11,
328
  6,  6,  6,  7,  7,  8,  8,  9,
329
  9,  9, 10, 10, 10, 11, 11, 11,
330
  7,  6,  7,  7,  8,  8,  9,  9,
331
  9,  9, 10, 10, 10, 11, 11, 11,
332
  8,  7,  7,  8,  8,  8,  9,  9,
333
  9,  9, 10, 10, 11, 11, 11, 12,
334
  9,  7,  8,  8,  8,  9,  9,  9,
335
  9, 10, 10, 10, 11, 11, 12, 12,
336
  9,  8,  8,  9,  9,  9,  9, 10,
337
 10, 10, 10, 10, 11, 11, 11, 12,
338
  9,  8,  8,  9,  9,  9,  9, 10,
339
 10, 10, 10, 11, 11, 12, 12, 12,
340
  9,  8,  9,  9,  9,  9, 10, 10,
341
 10, 11, 11, 11, 11, 12, 12, 12,
342
 10,  9,  9,  9, 10, 10, 10, 10,
343
 10, 11, 11, 11, 11, 12, 13, 12,
344
 10,  9,  9,  9, 10, 10, 10, 10,
345
 11, 11, 11, 11, 12, 12, 12, 13,
346
 11, 10,  9, 10, 10, 10, 11, 11,
347
 11, 11, 11, 11, 12, 12, 13, 13,
348
 11, 10, 10, 10, 10, 11, 11, 11,
349
 11, 12, 12, 12, 12, 12, 13, 13,
350
 12, 11, 11, 11, 11, 11, 11, 11,
351
 12, 12, 12, 12, 13, 13, 12, 13,
352
 12, 11, 11, 11, 11, 11, 11, 12,
353
 12, 12, 12, 12, 13, 13, 13, 13,
354
};
355

    
356
static const uint16_t mpa_huffcodes_16[256] = {
357
 0x0001, 0x0005, 0x000e, 0x002c, 0x004a, 0x003f, 0x006e, 0x005d,
358
 0x00ac, 0x0095, 0x008a, 0x00f2, 0x00e1, 0x00c3, 0x0178, 0x0011,
359
 0x0003, 0x0004, 0x000c, 0x0014, 0x0023, 0x003e, 0x0035, 0x002f,
360
 0x0053, 0x004b, 0x0044, 0x0077, 0x00c9, 0x006b, 0x00cf, 0x0009,
361
 0x000f, 0x000d, 0x0017, 0x0026, 0x0043, 0x003a, 0x0067, 0x005a,
362
 0x00a1, 0x0048, 0x007f, 0x0075, 0x006e, 0x00d1, 0x00ce, 0x0010,
363
 0x002d, 0x0015, 0x0027, 0x0045, 0x0040, 0x0072, 0x0063, 0x0057,
364
 0x009e, 0x008c, 0x00fc, 0x00d4, 0x00c7, 0x0183, 0x016d, 0x001a,
365
 0x004b, 0x0024, 0x0044, 0x0041, 0x0073, 0x0065, 0x00b3, 0x00a4,
366
 0x009b, 0x0108, 0x00f6, 0x00e2, 0x018b, 0x017e, 0x016a, 0x0009,
367
 0x0042, 0x001e, 0x003b, 0x0038, 0x0066, 0x00b9, 0x00ad, 0x0109,
368
 0x008e, 0x00fd, 0x00e8, 0x0190, 0x0184, 0x017a, 0x01bd, 0x0010,
369
 0x006f, 0x0036, 0x0034, 0x0064, 0x00b8, 0x00b2, 0x00a0, 0x0085,
370
 0x0101, 0x00f4, 0x00e4, 0x00d9, 0x0181, 0x016e, 0x02cb, 0x000a,
371
 0x0062, 0x0030, 0x005b, 0x0058, 0x00a5, 0x009d, 0x0094, 0x0105,
372
 0x00f8, 0x0197, 0x018d, 0x0174, 0x017c, 0x0379, 0x0374, 0x0008,
373
 0x0055, 0x0054, 0x0051, 0x009f, 0x009c, 0x008f, 0x0104, 0x00f9,
374
 0x01ab, 0x0191, 0x0188, 0x017f, 0x02d7, 0x02c9, 0x02c4, 0x0007,
375
 0x009a, 0x004c, 0x0049, 0x008d, 0x0083, 0x0100, 0x00f5, 0x01aa,
376
 0x0196, 0x018a, 0x0180, 0x02df, 0x0167, 0x02c6, 0x0160, 0x000b,
377
 0x008b, 0x0081, 0x0043, 0x007d, 0x00f7, 0x00e9, 0x00e5, 0x00db,
378
 0x0189, 0x02e7, 0x02e1, 0x02d0, 0x0375, 0x0372, 0x01b7, 0x0004,
379
 0x00f3, 0x0078, 0x0076, 0x0073, 0x00e3, 0x00df, 0x018c, 0x02ea,
380
 0x02e6, 0x02e0, 0x02d1, 0x02c8, 0x02c2, 0x00df, 0x01b4, 0x0006,
381
 0x00ca, 0x00e0, 0x00de, 0x00da, 0x00d8, 0x0185, 0x0182, 0x017d,
382
 0x016c, 0x0378, 0x01bb, 0x02c3, 0x01b8, 0x01b5, 0x06c0, 0x0004,
383
 0x02eb, 0x00d3, 0x00d2, 0x00d0, 0x0172, 0x017b, 0x02de, 0x02d3,
384
 0x02ca, 0x06c7, 0x0373, 0x036d, 0x036c, 0x0d83, 0x0361, 0x0002,
385
 0x0179, 0x0171, 0x0066, 0x00bb, 0x02d6, 0x02d2, 0x0166, 0x02c7,
386
 0x02c5, 0x0362, 0x06c6, 0x0367, 0x0d82, 0x0366, 0x01b2, 0x0000,
387
 0x000c, 0x000a, 0x0007, 0x000b, 0x000a, 0x0011, 0x000b, 0x0009,
388
 0x000d, 0x000c, 0x000a, 0x0007, 0x0005, 0x0003, 0x0001, 0x0003,
389
};
390

    
391
static const uint8_t mpa_huffbits_16[256] = {
392
  1,  4,  6,  8,  9,  9, 10, 10,
393
 11, 11, 11, 12, 12, 12, 13,  9,
394
  3,  4,  6,  7,  8,  9,  9,  9,
395
 10, 10, 10, 11, 12, 11, 12,  8,
396
  6,  6,  7,  8,  9,  9, 10, 10,
397
 11, 10, 11, 11, 11, 12, 12,  9,
398
  8,  7,  8,  9,  9, 10, 10, 10,
399
 11, 11, 12, 12, 12, 13, 13, 10,
400
  9,  8,  9,  9, 10, 10, 11, 11,
401
 11, 12, 12, 12, 13, 13, 13,  9,
402
  9,  8,  9,  9, 10, 11, 11, 12,
403
 11, 12, 12, 13, 13, 13, 14, 10,
404
 10,  9,  9, 10, 11, 11, 11, 11,
405
 12, 12, 12, 12, 13, 13, 14, 10,
406
 10,  9, 10, 10, 11, 11, 11, 12,
407
 12, 13, 13, 13, 13, 15, 15, 10,
408
 10, 10, 10, 11, 11, 11, 12, 12,
409
 13, 13, 13, 13, 14, 14, 14, 10,
410
 11, 10, 10, 11, 11, 12, 12, 13,
411
 13, 13, 13, 14, 13, 14, 13, 11,
412
 11, 11, 10, 11, 12, 12, 12, 12,
413
 13, 14, 14, 14, 15, 15, 14, 10,
414
 12, 11, 11, 11, 12, 12, 13, 14,
415
 14, 14, 14, 14, 14, 13, 14, 11,
416
 12, 12, 12, 12, 12, 13, 13, 13,
417
 13, 15, 14, 14, 14, 14, 16, 11,
418
 14, 12, 12, 12, 13, 13, 14, 14,
419
 14, 16, 15, 15, 15, 17, 15, 11,
420
 13, 13, 11, 12, 14, 14, 13, 14,
421
 14, 15, 16, 15, 17, 15, 14, 11,
422
  9,  8,  8,  9,  9, 10, 10, 10,
423
 11, 11, 11, 11, 11, 11, 11,  8,
424
};
425

    
426
static const uint16_t mpa_huffcodes_24[256] = {
427
 0x000f, 0x000d, 0x002e, 0x0050, 0x0092, 0x0106, 0x00f8, 0x01b2,
428
 0x01aa, 0x029d, 0x028d, 0x0289, 0x026d, 0x0205, 0x0408, 0x0058,
429
 0x000e, 0x000c, 0x0015, 0x0026, 0x0047, 0x0082, 0x007a, 0x00d8,
430
 0x00d1, 0x00c6, 0x0147, 0x0159, 0x013f, 0x0129, 0x0117, 0x002a,
431
 0x002f, 0x0016, 0x0029, 0x004a, 0x0044, 0x0080, 0x0078, 0x00dd,
432
 0x00cf, 0x00c2, 0x00b6, 0x0154, 0x013b, 0x0127, 0x021d, 0x0012,
433
 0x0051, 0x0027, 0x004b, 0x0046, 0x0086, 0x007d, 0x0074, 0x00dc,
434
 0x00cc, 0x00be, 0x00b2, 0x0145, 0x0137, 0x0125, 0x010f, 0x0010,
435
 0x0093, 0x0048, 0x0045, 0x0087, 0x007f, 0x0076, 0x0070, 0x00d2,
436
 0x00c8, 0x00bc, 0x0160, 0x0143, 0x0132, 0x011d, 0x021c, 0x000e,
437
 0x0107, 0x0042, 0x0081, 0x007e, 0x0077, 0x0072, 0x00d6, 0x00ca,
438
 0x00c0, 0x00b4, 0x0155, 0x013d, 0x012d, 0x0119, 0x0106, 0x000c,
439
 0x00f9, 0x007b, 0x0079, 0x0075, 0x0071, 0x00d7, 0x00ce, 0x00c3,
440
 0x00b9, 0x015b, 0x014a, 0x0134, 0x0123, 0x0110, 0x0208, 0x000a,
441
 0x01b3, 0x0073, 0x006f, 0x006d, 0x00d3, 0x00cb, 0x00c4, 0x00bb,
442
 0x0161, 0x014c, 0x0139, 0x012a, 0x011b, 0x0213, 0x017d, 0x0011,
443
 0x01ab, 0x00d4, 0x00d0, 0x00cd, 0x00c9, 0x00c1, 0x00ba, 0x00b1,
444
 0x00a9, 0x0140, 0x012f, 0x011e, 0x010c, 0x0202, 0x0179, 0x0010,
445
 0x014f, 0x00c7, 0x00c5, 0x00bf, 0x00bd, 0x00b5, 0x00ae, 0x014d,
446
 0x0141, 0x0131, 0x0121, 0x0113, 0x0209, 0x017b, 0x0173, 0x000b,
447
 0x029c, 0x00b8, 0x00b7, 0x00b3, 0x00af, 0x0158, 0x014b, 0x013a,
448
 0x0130, 0x0122, 0x0115, 0x0212, 0x017f, 0x0175, 0x016e, 0x000a,
449
 0x028c, 0x015a, 0x00ab, 0x00a8, 0x00a4, 0x013e, 0x0135, 0x012b,
450
 0x011f, 0x0114, 0x0107, 0x0201, 0x0177, 0x0170, 0x016a, 0x0006,
451
 0x0288, 0x0142, 0x013c, 0x0138, 0x0133, 0x012e, 0x0124, 0x011c,
452
 0x010d, 0x0105, 0x0200, 0x0178, 0x0172, 0x016c, 0x0167, 0x0004,
453
 0x026c, 0x012c, 0x0128, 0x0126, 0x0120, 0x011a, 0x0111, 0x010a,
454
 0x0203, 0x017c, 0x0176, 0x0171, 0x016d, 0x0169, 0x0165, 0x0002,
455
 0x0409, 0x0118, 0x0116, 0x0112, 0x010b, 0x0108, 0x0103, 0x017e,
456
 0x017a, 0x0174, 0x016f, 0x016b, 0x0168, 0x0166, 0x0164, 0x0000,
457
 0x002b, 0x0014, 0x0013, 0x0011, 0x000f, 0x000d, 0x000b, 0x0009,
458
 0x0007, 0x0006, 0x0004, 0x0007, 0x0005, 0x0003, 0x0001, 0x0003,
459
};
460

    
461
static const uint8_t mpa_huffbits_24[256] = {
462
  4,  4,  6,  7,  8,  9,  9, 10,
463
 10, 11, 11, 11, 11, 11, 12,  9,
464
  4,  4,  5,  6,  7,  8,  8,  9,
465
  9,  9, 10, 10, 10, 10, 10,  8,
466
  6,  5,  6,  7,  7,  8,  8,  9,
467
  9,  9,  9, 10, 10, 10, 11,  7,
468
  7,  6,  7,  7,  8,  8,  8,  9,
469
  9,  9,  9, 10, 10, 10, 10,  7,
470
  8,  7,  7,  8,  8,  8,  8,  9,
471
  9,  9, 10, 10, 10, 10, 11,  7,
472
  9,  7,  8,  8,  8,  8,  9,  9,
473
  9,  9, 10, 10, 10, 10, 10,  7,
474
  9,  8,  8,  8,  8,  9,  9,  9,
475
  9, 10, 10, 10, 10, 10, 11,  7,
476
 10,  8,  8,  8,  9,  9,  9,  9,
477
 10, 10, 10, 10, 10, 11, 11,  8,
478
 10,  9,  9,  9,  9,  9,  9,  9,
479
  9, 10, 10, 10, 10, 11, 11,  8,
480
 10,  9,  9,  9,  9,  9,  9, 10,
481
 10, 10, 10, 10, 11, 11, 11,  8,
482
 11,  9,  9,  9,  9, 10, 10, 10,
483
 10, 10, 10, 11, 11, 11, 11,  8,
484
 11, 10,  9,  9,  9, 10, 10, 10,
485
 10, 10, 10, 11, 11, 11, 11,  8,
486
 11, 10, 10, 10, 10, 10, 10, 10,
487
 10, 10, 11, 11, 11, 11, 11,  8,
488
 11, 10, 10, 10, 10, 10, 10, 10,
489
 11, 11, 11, 11, 11, 11, 11,  8,
490
 12, 10, 10, 10, 10, 10, 10, 11,
491
 11, 11, 11, 11, 11, 11, 11,  8,
492
  8,  7,  7,  7,  7,  7,  7,  7,
493
  7,  7,  7,  8,  8,  8,  8,  4,
494
};
495

    
496
static const HuffTable mpa_huff_tables[16] = {
497
{ 1, NULL, NULL },
498
{ 2, mpa_huffbits_1, mpa_huffcodes_1 },
499
{ 3, mpa_huffbits_2, mpa_huffcodes_2 },
500
{ 3, mpa_huffbits_3, mpa_huffcodes_3 },
501
{ 4, mpa_huffbits_5, mpa_huffcodes_5 },
502
{ 4, mpa_huffbits_6, mpa_huffcodes_6 },
503
{ 6, mpa_huffbits_7, mpa_huffcodes_7 },
504
{ 6, mpa_huffbits_8, mpa_huffcodes_8 },
505
{ 6, mpa_huffbits_9, mpa_huffcodes_9 },
506
{ 8, mpa_huffbits_10, mpa_huffcodes_10 },
507
{ 8, mpa_huffbits_11, mpa_huffcodes_11 },
508
{ 8, mpa_huffbits_12, mpa_huffcodes_12 },
509
{ 16, mpa_huffbits_13, mpa_huffcodes_13 },
510
{ 16, mpa_huffbits_15, mpa_huffcodes_15 },
511
{ 16, mpa_huffbits_16, mpa_huffcodes_16 },
512
{ 16, mpa_huffbits_24, mpa_huffcodes_24 },
513
};
514

    
515
static const uint8_t mpa_huff_data[32][2] = {
516
{ 0, 0 },
517
{ 1, 0 },
518
{ 2, 0 },
519
{ 3, 0 },
520
{ 0, 0 },
521
{ 4, 0 },
522
{ 5, 0 },
523
{ 6, 0 },
524
{ 7, 0 },
525
{ 8, 0 },
526
{ 9, 0 },
527
{ 10, 0 },
528
{ 11, 0 },
529
{ 12, 0 },
530
{ 0, 0 },
531
{ 13, 0 },
532
{ 14, 1 },
533
{ 14, 2 },
534
{ 14, 3 },
535
{ 14, 4 },
536
{ 14, 6 },
537
{ 14, 8 },
538
{ 14, 10 },
539
{ 14, 13 },
540
{ 15, 4 },
541
{ 15, 5 },
542
{ 15, 6 },
543
{ 15, 7 },
544
{ 15, 8 },
545
{ 15, 9 },
546
{ 15, 11 },
547
{ 15, 13 },
548
};
549

    
550

    
551
/* huffman tables for quadrules */
552
static const uint8_t mpa_quad_codes[2][16] = {
553
    {  1,  5,  4,  5,  6,  5,  4,  4, 7,  3,  6,  0,  7,  2,  3,  1, },
554
    { 15, 14, 13, 12, 11, 10,  9,  8, 7,  6,  5,  4,  3,  2,  1,  0, },
555
};
556

    
557
static const uint8_t mpa_quad_bits[2][16] = {
558
    { 1, 4, 4, 5, 4, 6, 5, 6, 4, 5, 5, 6, 5, 6, 6, 6, },
559
    { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, },
560
};
561

    
562
/* band size tables */
563
static const uint8_t band_size_long[9][22] = {
564
{ 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10,
565
  12, 16, 20, 24, 28, 34, 42, 50, 54, 76, 158, }, /* 44100 */
566
{ 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 10,
567
  12, 16, 18, 22, 28, 34, 40, 46, 54, 54, 192, }, /* 48000 */
568
{ 4, 4, 4, 4, 4, 4, 6, 6, 8, 10, 12,
569
  16, 20, 24, 30, 38, 46, 56, 68, 84, 102, 26, }, /* 32000 */
570
{ 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
571
  20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 22050 */
572
{ 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
573
  18, 22, 26, 32, 38, 46, 52, 64, 70, 76, 36, }, /* 24000 */
574
{ 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
575
  20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 16000 */
576
{ 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
577
  20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 11025 */
578
{ 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
579
  20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 12000 */
580
{ 12, 12, 12, 12, 12, 12, 16, 20, 24, 28, 32,
581
  40, 48, 56, 64, 76, 90, 2, 2, 2, 2, 2, }, /* 8000 */
582
};
583

    
584
static const uint8_t band_size_short[9][13] = {
585
{ 4, 4, 4, 4, 6, 8, 10, 12, 14, 18, 22, 30, 56, }, /* 44100 */
586
{ 4, 4, 4, 4, 6, 6, 10, 12, 14, 16, 20, 26, 66, }, /* 48000 */
587
{ 4, 4, 4, 4, 6, 8, 12, 16, 20, 26, 34, 42, 12, }, /* 32000 */
588
{ 4, 4, 4, 6, 6, 8, 10, 14, 18, 26, 32, 42, 18, }, /* 22050 */
589
{ 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 32, 44, 12, }, /* 24000 */
590
{ 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 16000 */
591
{ 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 11025 */
592
{ 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 12000 */
593
{ 8, 8, 8, 12, 16, 20, 24, 28, 36, 2, 2, 2, 26, }, /* 8000 */
594
};
595

    
596
static const uint8_t mpa_pretab[2][22] = {
597
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
598
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0 },
599
};
600

    
601
/* table for alias reduction (XXX: store it as integer !) */
602
static const float ci_table[8] = {
603
    -0.6, -0.535, -0.33, -0.185, -0.095, -0.041, -0.0142, -0.0037,
604
};
605

    
606
#endif /* AVCODEC_MPEGAUDIODECTAB_H */