Coverage Report

Created: 2024-11-21 06:52

/src/lame/libmp3lame/tables.c
Line
Count
Source (jump to first uncovered line)
1
/*
2
 *  MPEG layer 3 tables source file
3
 *
4
 *  Copyright (c) 1999 Albert L Faber
5
 *
6
 * This library is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU Library General Public
8
 * License as published by the Free Software Foundation; either
9
 * version 2 of the License, or (at your option) any later version.
10
 *
11
 * This library is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
 * Library General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU Library General Public
17
 * License along with this library; if not, write to the
18
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19
 * Boston, MA 02111-1307, USA.
20
 */
21
22
/* $Id$ */
23
24
#ifdef HAVE_CONFIG_H
25
# include <config.h>
26
#endif
27
28
#include "machine.h"
29
30
#include "lame.h"
31
#include "tables.h"
32
33
34
static const uint16_t t1HB[] = {
35
    1, 1,
36
    1, 0
37
};
38
39
static const uint16_t t2HB[] = {
40
    1, 2, 1,
41
    3, 1, 1,
42
    3, 2, 0
43
};
44
45
static const uint16_t t3HB[] = {
46
    3, 2, 1,
47
    1, 1, 1,
48
    3, 2, 0
49
};
50
51
static const uint16_t t5HB[] = {
52
    1, 2, 6, 5,
53
    3, 1, 4, 4,
54
    7, 5, 7, 1,
55
    6, 1, 1, 0
56
};
57
58
static const uint16_t t6HB[] = {
59
    7, 3, 5, 1,
60
    6, 2, 3, 2,
61
    5, 4, 4, 1,
62
    3, 3, 2, 0
63
};
64
65
static const uint16_t t7HB[] = {
66
    1, 2, 10, 19, 16, 10,
67
    3, 3, 7, 10, 5, 3,
68
    11, 4, 13, 17, 8, 4,
69
    12, 11, 18, 15, 11, 2,
70
    7, 6, 9, 14, 3, 1,
71
    6, 4, 5, 3, 2, 0
72
};
73
74
static const uint16_t t8HB[] = {
75
    3, 4, 6, 18, 12, 5,
76
    5, 1, 2, 16, 9, 3,
77
    7, 3, 5, 14, 7, 3,
78
    19, 17, 15, 13, 10, 4,
79
    13, 5, 8, 11, 5, 1,
80
    12, 4, 4, 1, 1, 0
81
};
82
83
static const uint16_t t9HB[] = {
84
    7, 5, 9, 14, 15, 7,
85
    6, 4, 5, 5, 6, 7,
86
    7, 6, 8, 8, 8, 5,
87
    15, 6, 9, 10, 5, 1,
88
    11, 7, 9, 6, 4, 1,
89
    14, 4, 6, 2, 6, 0
90
};
91
92
static const uint16_t t10HB[] = {
93
    1, 2, 10, 23, 35, 30, 12, 17,
94
    3, 3, 8, 12, 18, 21, 12, 7,
95
    11, 9, 15, 21, 32, 40, 19, 6,
96
    14, 13, 22, 34, 46, 23, 18, 7,
97
    20, 19, 33, 47, 27, 22, 9, 3,
98
    31, 22, 41, 26, 21, 20, 5, 3,
99
    14, 13, 10, 11, 16, 6, 5, 1,
100
    9, 8, 7, 8, 4, 4, 2, 0
101
};
102
103
static const uint16_t t11HB[] = {
104
    3, 4, 10, 24, 34, 33, 21, 15,
105
    5, 3, 4, 10, 32, 17, 11, 10,
106
    11, 7, 13, 18, 30, 31, 20, 5,
107
    25, 11, 19, 59, 27, 18, 12, 5,
108
    35, 33, 31, 58, 30, 16, 7, 5,
109
    28, 26, 32, 19, 17, 15, 8, 14,
110
    14, 12, 9, 13, 14, 9, 4, 1,
111
    11, 4, 6, 6, 6, 3, 2, 0
112
};
113
114
static const uint16_t t12HB[] = {
115
    9, 6, 16, 33, 41, 39, 38, 26,
116
    7, 5, 6, 9, 23, 16, 26, 11,
117
    17, 7, 11, 14, 21, 30, 10, 7,
118
    17, 10, 15, 12, 18, 28, 14, 5,
119
    32, 13, 22, 19, 18, 16, 9, 5,
120
    40, 17, 31, 29, 17, 13, 4, 2,
121
    27, 12, 11, 15, 10, 7, 4, 1,
122
    27, 12, 8, 12, 6, 3, 1, 0
123
};
124
125
static const uint16_t t13HB[] = {
126
    1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19,
127
    3, 4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14,
128
    15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16,
129
    22, 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14,
130
    35, 16, 60, 57, 97, 75, 114, 91, 54, 73, 55, 41, 48, 53, 23, 24,
131
    58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17,
132
    47, 45, 78, 74, 115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15,
133
    72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42,
134
    43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16,
135
    53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11,
136
    35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22,
137
    53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7,
138
    34, 32, 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17, 9, 5,
139
    45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10, 7, 6, 3,
140
    48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10, 6, 1, 4, 2,
141
    16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16, 8, 1, 1, 0, 1
142
};
143
144
static const uint16_t t15HB[] = {
145
    7, 12, 18, 53, 47, 76, 124, 108, 89, 123, 108, 119, 107, 81, 122, 63,
146
    13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36,
147
    19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33,
148
    29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29,
149
    52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27,
150
    77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38,
151
    125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30,
152
    109, 53, 49, 94, 88, 75, 66, 122, 91, 73, 56, 42, 64, 44, 21, 25,
153
    90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20,
154
    71, 34, 67, 60, 58, 49, 88, 76, 67, 106, 71, 54, 38, 39, 23, 15,
155
    109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9,
156
    86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11,
157
    118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7,
158
    91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3,
159
    123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1,
160
    71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0
161
};
162
163
static const uint16_t t16HB[] = {
164
    1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17,
165
    3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119, 201, 107, 207, 9,
166
    15, 13, 23, 38, 67, 58, 103, 90, 161, 72, 127, 117, 110, 209, 206, 16,
167
    45, 21, 39, 69, 64, 114, 99, 87, 158, 140, 252, 212, 199, 387, 365, 26,
168
    75, 36, 68, 65, 115, 101, 179, 164, 155, 264, 246, 226, 395, 382, 362, 9,
169
    66, 30, 59, 56, 102, 185, 173, 265, 142, 253, 232, 400, 388, 378, 445, 16,
170
    111, 54, 52, 100, 184, 178, 160, 133, 257, 244, 228, 217, 385, 366, 715, 10,
171
    98, 48, 91, 88, 165, 157, 148, 261, 248, 407, 397, 372, 380, 889, 884, 8,
172
    85, 84, 81, 159, 156, 143, 260, 249, 427, 401, 392, 383, 727, 713, 708, 7,
173
    154, 76, 73, 141, 131, 256, 245, 426, 406, 394, 384, 735, 359, 710, 352, 11,
174
    139, 129, 67, 125, 247, 233, 229, 219, 393, 743, 737, 720, 885, 882, 439, 4,
175
    243, 120, 118, 115, 227, 223, 396, 746, 742, 736, 721, 712, 706, 223, 436, 6,
176
    202, 224, 222, 218, 216, 389, 386, 381, 364, 888, 443, 707, 440, 437, 1728, 4,
177
    747, 211, 210, 208, 370, 379, 734, 723, 714, 1735, 883, 877, 876, 3459, 865, 2,
178
    377, 369, 102, 187, 726, 722, 358, 711, 709, 866, 1734, 871, 3458, 870, 434, 0,
179
    12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7, 5, 3, 1, 3
180
};
181
182
static const uint16_t t24HB[] = {
183
    15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88,
184
    14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297, 279, 42,
185
    47, 22, 41, 74, 68, 128, 120, 221, 207, 194, 182, 340, 315, 295, 541, 18,
186
    81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293, 271, 16,
187
    147, 72, 69, 135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285, 540, 14,
188
    263, 66, 129, 126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281, 262, 12,
189
    249, 123, 121, 117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272, 520, 10,
190
    435, 115, 111, 109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531, 381, 17,
191
    427, 212, 208, 205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514, 377, 16,
192
    335, 199, 197, 191, 189, 181, 174, 333, 321, 305, 289, 275, 521, 379, 371, 11,
193
    668, 184, 183, 179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10,
194
    652, 346, 171, 168, 164, 318, 309, 299, 287, 276, 263, 513, 375, 368, 362, 6,
195
    648, 322, 316, 312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4,
196
    620, 300, 296, 294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2,
197
    1033, 280, 278, 274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0,
198
    43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1, 3
199
};
200
201
static const uint16_t t32HB[] = {
202
    1 << 0, 5 << 1, 4 << 1, 5 << 2, 6 << 1, 5 << 2, 4 << 2, 4 << 3,
203
    7 << 1, 3 << 2, 6 << 2, 0 << 3, 7 << 2, 2 << 3, 3 << 3, 1 << 4
204
};
205
206
static const uint16_t t33HB[] = {
207
    15 << 0, 14 << 1, 13 << 1, 12 << 2, 11 << 1, 10 << 2, 9 << 2, 8 << 3,
208
    7 << 1, 6 << 2, 5 << 2, 4 << 3, 3 << 2, 2 << 3, 1 << 3, 0 << 4
209
};
210
211
212
const uint8_t t1l[] = {
213
    1, 4,
214
    3, 5
215
};
216
217
static const uint8_t t2l[] = {
218
    1, 4, 7,
219
    4, 5, 7,
220
    6, 7, 8
221
};
222
223
static const uint8_t t3l[] = {
224
    2, 3, 7,
225
    4, 4, 7,
226
    6, 7, 8
227
};
228
229
static const uint8_t t5l[] = {
230
    1, 4, 7, 8,
231
    4, 5, 8, 9,
232
    7, 8, 9, 10,
233
    8, 8, 9, 10
234
};
235
236
static const uint8_t t6l[] = {
237
    3, 4, 6, 8,
238
    4, 4, 6, 7,
239
    5, 6, 7, 8,
240
    7, 7, 8, 9
241
};
242
243
static const uint8_t t7l[] = {
244
    1, 4, 7, 9, 9, 10,
245
    4, 6, 8, 9, 9, 10,
246
    7, 7, 9, 10, 10, 11,
247
    8, 9, 10, 11, 11, 11,
248
    8, 9, 10, 11, 11, 12,
249
    9, 10, 11, 12, 12, 12
250
};
251
252
static const uint8_t t8l[] = {
253
    2, 4, 7, 9, 9, 10,
254
    4, 4, 6, 10, 10, 10,
255
    7, 6, 8, 10, 10, 11,
256
    9, 10, 10, 11, 11, 12,
257
    9, 9, 10, 11, 12, 12,
258
    10, 10, 11, 11, 13, 13
259
};
260
261
static const uint8_t t9l[] = {
262
    3, 4, 6, 7, 9, 10,
263
    4, 5, 6, 7, 8, 10,
264
    5, 6, 7, 8, 9, 10,
265
    7, 7, 8, 9, 9, 10,
266
    8, 8, 9, 9, 10, 11,
267
    9, 9, 10, 10, 11, 11
268
};
269
270
static const uint8_t t10l[] = {
271
    1, 4, 7, 9, 10, 10, 10, 11,
272
    4, 6, 8, 9, 10, 11, 10, 10,
273
    7, 8, 9, 10, 11, 12, 11, 11,
274
    8, 9, 10, 11, 12, 12, 11, 12,
275
    9, 10, 11, 12, 12, 12, 12, 12,
276
    10, 11, 12, 12, 13, 13, 12, 13,
277
    9, 10, 11, 12, 12, 12, 13, 13,
278
    10, 10, 11, 12, 12, 13, 13, 13
279
};
280
281
static const uint8_t t11l[] = {
282
    2, 4, 6, 8, 9, 10, 9, 10,
283
    4, 5, 6, 8, 10, 10, 9, 10,
284
    6, 7, 8, 9, 10, 11, 10, 10,
285
    8, 8, 9, 11, 10, 12, 10, 11,
286
    9, 10, 10, 11, 11, 12, 11, 12,
287
    9, 10, 11, 12, 12, 13, 12, 13,
288
    9, 9, 9, 10, 11, 12, 12, 12,
289
    9, 9, 10, 11, 12, 12, 12, 12
290
};
291
292
static const uint8_t t12l[] = {
293
    4, 4, 6, 8, 9, 10, 10, 10,
294
    4, 5, 6, 7, 9, 9, 10, 10,
295
    6, 6, 7, 8, 9, 10, 9, 10,
296
    7, 7, 8, 8, 9, 10, 10, 10,
297
    8, 8, 9, 9, 10, 10, 10, 11,
298
    9, 9, 10, 10, 10, 11, 10, 11,
299
    9, 9, 9, 10, 10, 11, 11, 12,
300
    10, 10, 10, 11, 11, 11, 11, 12
301
};
302
303
static const uint8_t t13l[] = {
304
    1, 5, 7, 8, 9, 10, 10, 11, 10, 11, 12, 12, 13, 13, 14, 14,
305
    4, 6, 8, 9, 10, 10, 11, 11, 11, 11, 12, 12, 13, 14, 14, 14,
306
    7, 8, 9, 10, 11, 11, 12, 12, 11, 12, 12, 13, 13, 14, 15, 15,
307
    8, 9, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 15,
308
    9, 9, 11, 11, 12, 12, 13, 13, 12, 13, 13, 14, 14, 15, 15, 16,
309
    10, 10, 11, 12, 12, 12, 13, 13, 13, 13, 14, 13, 15, 15, 16, 16,
310
    10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 15, 15, 16, 16,
311
    11, 11, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 18, 18,
312
    10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17,
313
    11, 11, 12, 12, 13, 13, 13, 15, 14, 15, 15, 16, 16, 16, 18, 17,
314
    11, 12, 12, 13, 13, 14, 14, 15, 14, 15, 16, 15, 16, 17, 18, 19,
315
    12, 12, 12, 13, 14, 14, 14, 14, 15, 15, 15, 16, 17, 17, 17, 18,
316
    12, 13, 13, 14, 14, 15, 14, 15, 16, 16, 17, 17, 17, 18, 18, 18,
317
    13, 13, 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 18, 17, 18, 18,
318
    14, 14, 14, 15, 15, 15, 17, 16, 16, 19, 17, 17, 17, 19, 18, 18,
319
    13, 14, 15, 16, 16, 16, 17, 16, 17, 17, 18, 18, 21, 20, 21, 18
320
};
321
322
static const uint8_t t15l[] = {
323
    3, 5, 6, 8, 8, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 14,
324
    5, 5, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13,
325
    6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13,
326
    7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13,
327
    8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13,
328
    9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14,
329
    10, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14,
330
    10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14,
331
    10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 14, 14,
332
    10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14,
333
    11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 14,
334
    11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15,
335
    12, 12, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 15, 15,
336
    12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15,
337
    13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 14, 15,
338
    13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 15
339
};
340
341
static const uint8_t t16_5l[] = {
342
    1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 11,
343
    4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 11,
344
    7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 12,
345
    9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 13,
346
    10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 12,
347
    10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 13,
348
    11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 13,
349
    11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 13,
350
    11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 13,
351
    12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 14,
352
    12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 13,
353
    13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 14,
354
    13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 14,
355
    15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 14,
356
    14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 14,
357
    11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 12
358
};
359
360
static const uint8_t t16l[] = {
361
    1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 10,
362
    4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 10,
363
    7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 11,
364
    9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 12,
365
    10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 11,
366
    10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 12,
367
    11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 12,
368
    11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 12,
369
    11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 12,
370
    12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 13,
371
    12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 12,
372
    13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 13,
373
    13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 13,
374
    15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 13,
375
    14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 13,
376
    10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10
377
};
378
379
static const uint8_t t24l[] = {
380
    4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 13, 10,
381
    5, 6, 7, 8, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 10,
382
    7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 9,
383
    8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 9,
384
    9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 9,
385
    10, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 9,
386
    10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 9,
387
    11, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 10,
388
    11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 10,
389
    11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 10,
390
    12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10,
391
    12, 12, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10,
392
    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 10,
393
    12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10,
394
    13, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 10,
395
    9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 6
396
};
397
398
const uint8_t t32l[] = {
399
    1 + 0, 4 + 1, 4 + 1, 5 + 2, 4 + 1, 6 + 2, 5 + 2, 6 + 3,
400
    4 + 1, 5 + 2, 5 + 2, 6 + 3, 5 + 2, 6 + 3, 6 + 3, 6 + 4
401
};
402
403
const uint8_t t33l[] = {
404
    4 + 0, 4 + 1, 4 + 1, 4 + 2, 4 + 1, 4 + 2, 4 + 2, 4 + 3,
405
    4 + 1, 4 + 2, 4 + 2, 4 + 3, 4 + 2, 4 + 3, 4 + 3, 4 + 4
406
};
407
408
409
const struct huffcodetab ht[HTN] = {
410
    /* xlen, linmax, table, hlen */
411
    {0, 0, NULL, NULL},
412
    {2, 0, t1HB, t1l},
413
    {3, 0, t2HB, t2l},
414
    {3, 0, t3HB, t3l},
415
    {0, 0, NULL, NULL}, /* Apparently not used */
416
    {4, 0, t5HB, t5l},
417
    {4, 0, t6HB, t6l},
418
    {6, 0, t7HB, t7l},
419
    {6, 0, t8HB, t8l},
420
    {6, 0, t9HB, t9l},
421
    {8, 0, t10HB, t10l},
422
    {8, 0, t11HB, t11l},
423
    {8, 0, t12HB, t12l},
424
    {16, 0, t13HB, t13l},
425
    {0, 0, NULL, t16_5l}, /* Apparently not used */
426
    {16, 0, t15HB, t15l},
427
428
    {1, 1, t16HB, t16l},
429
    {2, 3, t16HB, t16l},
430
    {3, 7, t16HB, t16l},
431
    {4, 15, t16HB, t16l},
432
    {6, 63, t16HB, t16l},
433
    {8, 255, t16HB, t16l},
434
    {10, 1023, t16HB, t16l},
435
    {13, 8191, t16HB, t16l},
436
437
    {4, 15, t24HB, t24l},
438
    {5, 31, t24HB, t24l},
439
    {6, 63, t24HB, t24l},
440
    {7, 127, t24HB, t24l},
441
    {8, 255, t24HB, t24l},
442
    {9, 511, t24HB, t24l},
443
    {11, 2047, t24HB, t24l},
444
    {13, 8191, t24HB, t24l},
445
446
    {0, 0, t32HB, t32l},
447
    {0, 0, t33HB, t33l},
448
};
449
450
451
452
453
454
/*  for (i = 0; i < 16*16; i++) {
455
 *      largetbl[i] = ((ht[16].hlen[i]) << 16) + ht[24].hlen[i];
456
 *  }
457
 */
458
const uint32_t largetbl[16 * 16] = {
459
    0x010004, 0x050005, 0x070007, 0x090008, 0x0a0009, 0x0a000a, 0x0b000a, 0x0b000b,
460
    0x0c000b, 0x0c000c, 0x0c000c, 0x0d000c, 0x0d000c, 0x0d000c, 0x0e000d, 0x0a000a,
461
    0x040005, 0x060006, 0x080007, 0x090008, 0x0a0009, 0x0b000a, 0x0b000a, 0x0b000b,
462
    0x0c000b, 0x0c000b, 0x0c000c, 0x0d000c, 0x0e000c, 0x0d000c, 0x0e000c, 0x0a000a,
463
    0x070007, 0x080007, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000b,
464
    0x0d000b, 0x0c000b, 0x0d000b, 0x0d000c, 0x0d000c, 0x0e000c, 0x0e000d, 0x0b0009,
465
    0x090008, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0c000b,
466
    0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0c0009,
467
    0x0a0009, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000a, 0x0d000b,
468
    0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000d, 0x0b0009,
469
    0x0a000a, 0x0a0009, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0e000b,
470
    0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0c0009,
471
    0x0b000a, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0d000b, 0x0d000b,
472
    0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000d, 0x0c0009,
473
    0x0b000b, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b,
474
    0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x11000d, 0x11000d, 0x0c000a,
475
    0x0b000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b,
476
    0x0f000b, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000d, 0x10000d, 0x0c000a,
477
    0x0c000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, 0x0f000c,
478
    0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0f000d, 0x10000d, 0x0f000d, 0x0d000a,
479
    0x0c000c, 0x0d000b, 0x0c000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c,
480
    0x0f000c, 0x10000c, 0x10000c, 0x10000d, 0x11000d, 0x11000d, 0x10000d, 0x0c000a,
481
    0x0d000c, 0x0d000c, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x10000c,
482
    0x10000c, 0x10000c, 0x10000c, 0x10000d, 0x10000d, 0x0f000d, 0x10000d, 0x0d000a,
483
    0x0d000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c,
484
    0x0f000c, 0x11000c, 0x10000d, 0x10000d, 0x10000d, 0x10000d, 0x12000d, 0x0d000a,
485
    0x0f000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000c,
486
    0x10000d, 0x12000d, 0x11000d, 0x11000d, 0x11000d, 0x13000d, 0x11000d, 0x0d000a,
487
    0x0e000d, 0x0f000c, 0x0d000c, 0x0e000c, 0x10000c, 0x10000c, 0x0f000c, 0x10000d,
488
    0x10000d, 0x11000d, 0x12000d, 0x11000d, 0x13000d, 0x11000d, 0x10000d, 0x0d000a,
489
    0x0a0009, 0x0a0009, 0x0a0009, 0x0b0009, 0x0b0009, 0x0c0009, 0x0c0009, 0x0c0009,
490
    0x0d0009, 0x0d0009, 0x0d0009, 0x0d000a, 0x0d000a, 0x0d000a, 0x0d000a, 0x0a0006
491
};
492
493
/*  for (i = 0; i < 3*3; i++) {
494
 *      table23[i] = ((ht[2].hlen[i]) << 16) + ht[3].hlen[i];
495
 *  }
496
 */
497
const uint32_t table23[3 * 3] = {
498
    0x010002, 0x040003, 0x070007,
499
    0x040004, 0x050004, 0x070007,
500
    0x060006, 0x070007, 0x080008
501
};
502
503
/*   for (i = 0; i < 4*4; i++) {
504
 *       table56[i] = ((ht[5].hlen[i]) << 16) + ht[6].hlen[i];
505
 *   }
506
 */
507
const uint32_t table56[4 * 4] = {
508
    0x010003, 0x040004, 0x070006, 0x080008, 0x040004, 0x050004, 0x080006, 0x090007,
509
    0x070005, 0x080006, 0x090007, 0x0a0008, 0x080007, 0x080007, 0x090008, 0x0a0009
510
};
511
512
513
514
/* 
515
 * 0: MPEG-2 LSF
516
 * 1: MPEG-1
517
 * 2: MPEG-2.5 LSF FhG extention                  (1995-07-11 shn)
518
 */
519
520
typedef enum {
521
    MPEG_2 = 0,
522
    MPEG_1 = 1,
523
    MPEG_25 = 2
524
} MPEG_t;
525
526
const int bitrate_table[3][16] = {
527
    {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1}, /* MPEG 2 */
528
    {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1}, /* MPEG 1 */
529
    {0, 8, 16, 24, 32, 40, 48, 56, 64, -1, -1, -1, -1, -1, -1, -1}, /* MPEG 2.5 */
530
};
531
532
const int samplerate_table[3][4] = {
533
    {22050, 24000, 16000, -1}, /* MPEG 2 */
534
    {44100, 48000, 32000, -1}, /* MPEG 1 */
535
    {11025, 12000, 8000, -1}, /* MPEG 2.5 */
536
};
537
538
int
539
lame_get_bitrate(int mpeg_version, int table_index)
540
0
{
541
0
    if (0 <= mpeg_version && mpeg_version <= 2) {
542
0
        if (0 <= table_index && table_index <= 15) {
543
0
            return bitrate_table[mpeg_version][table_index];
544
0
        }
545
0
    }
546
0
    return -1;
547
0
}
548
549
int
550
lame_get_samplerate(int mpeg_version, int table_index)
551
0
{
552
0
    if (0 <= mpeg_version && mpeg_version <= 2) {
553
0
        if (0 <= table_index && table_index <= 3) {
554
0
            return samplerate_table[mpeg_version][table_index];
555
0
        }
556
0
    }
557
0
    return -1;
558
0
}
559
560
561
/* This is the scfsi_band table from 2.4.2.7 of the IS */
562
const int scfsi_band[5] = { 0, 6, 11, 16, 21 };
563
564
/* end of tables.c */