]> 4ch.mooo.com Git - 16.git/blob - src/lib/doslib/ext/lame/tables.c
a0230999f2fec9958051014afec855e6ce6debb5
[16.git] / src / lib / doslib / ext / lame / tables.c
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: tables.c,v 1.29 2011/05/07 16:05:17 rbrito Exp $ */
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 {
541     if (0 <= mpeg_version && mpeg_version <= 2) {
542         if (0 <= table_index && table_index <= 15) {
543             return bitrate_table[mpeg_version][table_index];
544         }
545     }
546     return -1;
547 }
548
549 int
550 lame_get_samplerate(int mpeg_version, int table_index)
551 {
552     if (0 <= mpeg_version && mpeg_version <= 2) {
553         if (0 <= table_index && table_index <= 3) {
554             return samplerate_table[mpeg_version][table_index];
555         }
556     }
557     return -1;
558 }
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 */