moved fix for short definebitslossless tags to ../rfxswf.c.
[swftools.git] / lib / 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.1 2002/04/28 17:30:29 kramm Exp $ */
23
24 #include "config_static.h"
25
26 #include "util.h"
27 #include "tables.h"
28
29 #ifdef WITH_DMALLOC
30 #include <dmalloc.h>
31 #endif
32
33 static const short      t1HB[]   = {
34   1, 1, 
35   1, 0};
36
37 static const short      t2HB[]   = {
38   1, 2, 1,
39   3, 1, 1,
40   3, 2, 0};
41
42 static const short      t3HB[]   = {
43   3, 2, 1,
44   1, 1, 1,
45   3, 2, 0};
46
47 static const short      t5HB[]   = {
48   1, 2, 6, 5,
49   3, 1, 4, 4,
50   7, 5, 7, 1,
51   6, 1, 1, 0};
52
53 static const short      t6HB[]   = {
54   7, 3, 5, 1,
55   6, 2, 3, 2,
56   5, 4, 4, 1,
57   3, 3, 2, 0};
58
59 static const short      t7HB[]   = {
60    1, 2,10,19,16,10,
61    3, 3, 7,10, 5, 3,
62   11, 4,13,17, 8, 4,
63   12,11,18,15,11, 2,
64    7, 6, 9,14, 3, 1,
65    6, 4, 5, 3, 2, 0};
66
67 static const short      t8HB[]   = {
68   3, 4, 6, 18,12, 5,
69   5, 1, 2, 16, 9, 3,
70   7, 3, 5, 14, 7, 3,
71  19,17,15, 13,10, 4,
72  13, 5, 8, 11, 5, 1,
73  12, 4, 4,  1, 1, 0};
74
75 static const short      t9HB[]   = {
76   7, 5, 9, 14, 15, 7,
77   6, 4, 5,  5,  6, 7,
78   7, 6, 8,  8,  8, 5,
79  15, 6, 9, 10,  5, 1,
80  11, 7, 9,  6,  4, 1,
81  14, 4, 6,  2,  6, 0};
82
83 static const short      t10HB[]   = {
84   1, 2, 10, 23, 35, 30, 12, 17,
85   3, 3,  8, 12, 18, 21, 12,  7,
86  11, 9, 15, 21, 32, 40, 19,  6,
87  14,13, 22, 34, 46, 23, 18,  7,
88  20,19, 33, 47, 27, 22,  9,  3,
89  31,22, 41, 26, 21, 20,  5,  3,
90  14,13, 10, 11, 16,  6,  5,  1,
91   9, 8,  7,  8,  4,  4,  2,  0};
92
93 static const short      t11HB[]   = {
94   3, 4, 10, 24, 34, 33, 21, 15,
95   5, 3,  4, 10, 32, 17, 11, 10,
96  11, 7, 13, 18, 30, 31, 20,  5,
97  25,11, 19, 59, 27, 18, 12,  5,
98  35,33, 31, 58, 30, 16,  7,  5,
99  28,26, 32, 19, 17, 15,  8, 14,
100  14,12,  9, 13, 14,  9,  4,  1,
101  11, 4,  6,  6,  6,  3,  2,  0};
102
103 static const short      t12HB[]   = {
104   9,  6, 16, 33, 41, 39, 38,26,
105   7,  5,  6,  9, 23, 16, 26,11,
106  17,  7, 11, 14, 21, 30, 10, 7,
107  17, 10, 15, 12, 18, 28, 14, 5,
108  32, 13, 22, 19, 18, 16,  9, 5,
109  40, 17, 31, 29, 17, 13,  4, 2,
110  27, 12, 11, 15, 10,  7,  4, 1,
111  27, 12,  8, 12,  6,  3,  1, 0};
112
113 static const short      t13HB[]   = {
114   1,  5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19,
115   3,  4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14,
116  15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16,
117  22, 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14,
118  35, 16, 60, 57, 97, 75,114, 91, 54, 73, 55, 41, 48, 53, 23, 24,
119  58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17,
120  47, 45, 78, 74,115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15,
121  72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42,
122  43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16,
123  53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11,
124  35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22,
125  53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14,  9,  7,
126  34, 32, 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17,  9,  5,
127  45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10,  7,  6,  3,
128  48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10,  6,  1,  4,  2,
129  16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16,  8,  1,  1,  0,  1};
130
131 static const short      t15HB[]   = {
132    7, 12, 18, 53, 47, 76,124,108, 89,123,108,119,107, 81,122, 63,
133   13,  5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36,
134   19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33,
135   29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29,
136   52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27,
137   77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38,
138  125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30,
139  109, 53, 49, 94, 88, 75, 66,122, 91, 73, 56, 42, 64, 44, 21, 25,
140   90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20,
141   71, 34, 67, 60, 58, 49, 88, 76, 67,106, 71, 54, 38, 39, 23, 15,
142  109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62,  9,
143   86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11, 
144  118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14,  7,
145   91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14,  8,  9,  3,
146  123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10,  2,  1,
147   71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10,  6,  8,  6,  2,  0};
148
149 static const short      t16HB[]   = {
150    1,   5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17,
151    3,   4, 12, 20, 35, 62,  53, 47,  83,  75,  68, 119, 201, 107, 207,  9,
152   15,  13, 23, 38, 67, 58, 103, 90, 161,  72, 127, 117, 110, 209, 206, 16,
153   45,  21, 39, 69, 64,114,  99, 87, 158, 140, 252, 212, 199, 387, 365, 26,
154   75,  36, 68, 65,115,101, 179,164, 155, 264, 246, 226, 395, 382, 362,  9,
155   66,  30, 59, 56,102,185, 173,265, 142, 253, 232, 400, 388, 378, 445, 16,
156  111,  54, 52,100,184,178, 160,133, 257, 244, 228, 217, 385, 366, 715, 10,
157   98,  48, 91, 88,165,157, 148,261, 248, 407, 397, 372, 380, 889, 884,  8,
158   85,  84, 81,159,156,143, 260,249, 427, 401, 392, 383, 727, 713, 708,  7,
159  154,  76, 73,141,131,256, 245,426, 406, 394, 384, 735, 359, 710, 352, 11,
160  139, 129, 67,125,247,233, 229,219, 393, 743, 737, 720, 885, 882, 439,  4,
161  243, 120,118,115,227,223, 396,746, 742, 736, 721, 712, 706, 223, 436,  6,
162  202, 224,222,218,216,389, 386,381, 364, 888, 443, 707, 440, 437,1728,  4,
163  747, 211,210,208,370,379, 734,723, 714,1735, 883, 877, 876,3459, 865,  2,
164  377, 369,102,187,726,722, 358,711, 709, 866,1734, 871,3458, 870, 434,  0,
165   12,  10,  7, 11, 10, 17,  11,  9,  13,  12,  10,   7,   5,   3,   1,  3};
166
167 static const short      t24HB[]   = {
168    15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88,
169    14, 12, 21, 38,  71, 130, 122, 216, 209, 198, 327, 345, 319, 297,  279, 42,
170    47, 22, 41, 74,  68, 128, 120, 221, 207, 194, 182, 340, 315, 295,  541, 18,
171    81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293,  271, 16,
172   147, 72, 69,135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285,  540, 14,
173   263, 66,129,126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281,  262, 12,
174   249,123,121,117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272,  520, 10,
175   435,115,111,109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531,  381, 17,
176   427,212,208,205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514,  377, 16,
177   335,199,197,191, 189, 181, 174, 333, 321, 305, 289, 275, 521, 379,  371, 11,
178   668,184,183,179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373,  366, 10,
179   652,346,171,168, 164, 318, 309, 299, 287, 276, 263, 513, 375, 368,  362,  6,
180   648,322,316,312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364,  359,  4,
181   620,300,296,294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361,  357,  2,
182  1033,280,278,274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358,  356,  0,
183    43, 20, 19, 17,  15,  13,  11,   9,   7,   6,   4,   7,   5,   3,    1,  3};
184
185 static const short      t32HB[]   = {
186   1 << 0,  5 << 1,  4 << 1,  5 << 2,  6 << 1,  5 << 2,  4 << 2,  4 << 3,
187   7 << 1,  3 << 2,  6 << 2,  0 << 3,  7 << 2,  2 << 3,  3 << 3,  1 << 4};
188
189 static const short      t33HB[]   = {
190  15 << 0, 14 << 1, 13 << 1, 12 << 2, 11 << 1, 10 << 2,  9 << 2,  8 << 3,
191   7 << 1,  6 << 2,  5 << 2,  4 << 3,  3 << 2,  2 << 3,  1 << 3,  0 << 4};
192
193
194 const  char t1l[] = {
195  1,  4, 
196  3,  5};
197
198 const  char t2l[] = {
199  1,  4,  7, 
200  4,  5,  7, 
201  6,  7,  8};
202
203 const  char t3l[] = {
204  2,  3,  7, 
205  4,  4,  7, 
206  6,  7,  8};
207
208 const  char t5l[] = {
209  1,  4,  7,  8, 
210  4,  5,  8,  9, 
211  7,  8,  9, 10, 
212  8,  8,  9, 10};
213
214 const  char t6l[] = {
215  3,  4,  6,  8, 
216  4,  4,  6,  7, 
217  5,  6,  7,  8, 
218  7,  7,  8,  9};
219
220 const  char t7l[] = {
221  1,  4,  7,  9,  9, 10, 
222  4,  6,  8,  9,  9, 10, 
223  7,  7,  9, 10, 10, 11, 
224  8,  9, 10, 11, 11, 11, 
225  8,  9, 10, 11, 11, 12, 
226  9, 10, 11, 12, 12, 12};
227
228 const  char t8l[] = {
229  2,  4,  7,  9,  9, 10, 
230  4,  4,  6, 10, 10, 10, 
231  7,  6,  8, 10, 10, 11, 
232  9, 10, 10, 11, 11, 12, 
233  9,  9, 10, 11, 12, 12, 
234 10, 10, 11, 11, 13, 13};
235
236 const  char t9l[] = {
237  3,  4,  6,  7,  9, 10, 
238  4,  5,  6,  7,  8, 10, 
239  5,  6,  7,  8,  9, 10, 
240  7,  7,  8,  9,  9, 10, 
241  8,  8,  9,  9, 10, 11, 
242  9,  9, 10, 10, 11, 11};
243
244 const  char t10l[] = {
245  1,  4,  7,  9, 10, 10, 10, 11, 
246  4,  6,  8,  9, 10, 11, 10, 10, 
247  7,  8,  9, 10, 11, 12, 11, 11, 
248  8,  9, 10, 11, 12, 12, 11, 12, 
249  9, 10, 11, 12, 12, 12, 12, 12, 
250 10, 11, 12, 12, 13, 13, 12, 13, 
251  9, 10, 11, 12, 12, 12, 13, 13, 
252 10, 10, 11, 12, 12, 13, 13, 13};
253
254 const  char t11l[] = {
255  2,  4,  6,  8,  9, 10,  9, 10, 
256  4,  5,  6,  8, 10, 10,  9, 10, 
257  6,  7,  8,  9, 10, 11, 10, 10, 
258  8,  8,  9, 11, 10, 12, 10, 11, 
259  9, 10, 10, 11, 11, 12, 11, 12, 
260  9, 10, 11, 12, 12, 13, 12, 13, 
261  9,  9,  9, 10, 11, 12, 12, 12, 
262  9,  9, 10, 11, 12, 12, 12, 12};
263
264 const  char t12l[] = {
265  4,  4,  6,  8,  9, 10, 10, 10, 
266  4,  5,  6,  7,  9,  9, 10, 10, 
267  6,  6,  7,  8,  9, 10,  9, 10, 
268  7,  7,  8,  8,  9, 10, 10, 10, 
269  8,  8,  9,  9, 10, 10, 10, 11, 
270  9,  9, 10, 10, 10, 11, 10, 11, 
271  9,  9,  9, 10, 10, 11, 11, 12, 
272 10, 10, 10, 11, 11, 11, 11, 12};
273
274 const  char t13l[] = {
275  1,  5,  7,  8,  9, 10, 10, 11, 10, 11, 12, 12, 13, 13, 14, 14, 
276  4,  6,  8,  9, 10, 10, 11, 11, 11, 11, 12, 12, 13, 14, 14, 14, 
277  7,  8,  9, 10, 11, 11, 12, 12, 11, 12, 12, 13, 13, 14, 15, 15, 
278  8,  9, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 15, 
279  9,  9, 11, 11, 12, 12, 13, 13, 12, 13, 13, 14, 14, 15, 15, 16, 
280 10, 10, 11, 12, 12, 12, 13, 13, 13, 13, 14, 13, 15, 15, 16, 16, 
281 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 15, 15, 16, 16, 
282 11, 11, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 18, 18, 
283 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17, 
284 11, 11, 12, 12, 13, 13, 13, 15, 14, 15, 15, 16, 16, 16, 18, 17, 
285 11, 12, 12, 13, 13, 14, 14, 15, 14, 15, 16, 15, 16, 17, 18, 19, 
286 12, 12, 12, 13, 14, 14, 14, 14, 15, 15, 15, 16, 17, 17, 17, 18, 
287 12, 13, 13, 14, 14, 15, 14, 15, 16, 16, 17, 17, 17, 18, 18, 18, 
288 13, 13, 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 18, 17, 18, 18, 
289 14, 14, 14, 15, 15, 15, 17, 16, 16, 19, 17, 17, 17, 19, 18, 18, 
290 13, 14, 15, 16, 16, 16, 17, 16, 17, 17, 18, 18, 21, 20, 21, 18};
291
292 const  char t15l[] = {
293  3,  5,  6,  8,  8,  9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 14, 
294  5,  5,  7,  8,  9,  9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 
295  6,  7,  7,  8,  9,  9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13, 
296  7,  8,  8,  9,  9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 
297  8,  8,  9,  9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 
298  9,  9,  9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14, 
299 10,  9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14, 
300 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14, 
301 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 14, 14, 
302 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 
303 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 14, 
304 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, 
305 12, 12, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 15, 15, 
306 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 
307 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 14, 15, 
308 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 15};
309
310 const  char t16_5l[] = {
311  1,  5,  7,  9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 11, 
312  4,  6,  8,  9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 11, 
313  7,  8,  9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 12, 
314  9,  9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 13, 
315 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 12, 
316 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 13, 
317 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 13, 
318 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 13, 
319 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 13, 
320 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 14, 
321 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 13, 
322 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 14, 
323 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 14, 
324 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 14, 
325 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 14, 
326 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 12};
327
328 const  char t16l[] = {
329  1,  5,  7,  9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 10, 
330  4,  6,  8,  9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 10, 
331  7,  8,  9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 11, 
332  9,  9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 12, 
333 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 11, 
334 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 12, 
335 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 12, 
336 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 12, 
337 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 12, 
338 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 13, 
339 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 12, 
340 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 13, 
341 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 13, 
342 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 13, 
343 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 13, 
344 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10};
345
346 const  char t24l[] = {
347  4,  5,  7,  8,  9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 13, 10, 
348  5,  6,  7,  8,  9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 10, 
349  7,  7,  8,  9,  9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13,  9, 
350  8,  8,  9,  9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12,  9, 
351  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13,  9, 
352 10,  9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12,  9, 
353 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13,  9, 
354 11, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 10, 
355 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 10, 
356 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 10, 
357 12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10, 
358 12, 12, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10, 
359 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 10, 
360 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10, 
361 13, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 10, 
362  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10,  6};
363
364 const  char t32l[]  = {
365   1+0,  4+1,  4+1,  5+2,  4+1,  6+2,  5+2,  6+3,
366   4+1,  5+2,  5+2,  6+3,  5+2,  6+3,  6+3,  6+4};
367
368 const  char t33l[]  = {
369   4+0,  4+1,  4+1,  4+2,  4+1,  4+2,  4+2,  4+3,
370   4+1,  4+2,  4+2,  4+3,  4+2,  4+3,  4+3,  4+4};
371
372
373 const struct huffcodetab ht[HTN] =
374 {
375   /* xlen, linmax, table, hlen */
376   { 0,   0,NULL,NULL},
377   { 2,   0,t1HB, t1l},
378   { 3,   0,t2HB, t2l},
379   { 3,   0,t3HB, t3l},
380   { 0,   0,NULL,NULL},/* Apparently not used */
381   { 4,   0,t5HB, t5l},
382   { 4,   0,t6HB, t6l},
383   { 6,   0,t7HB, t7l},
384   { 6,   0,t8HB, t8l},
385   { 6,   0,t9HB, t9l},
386   { 8,   0,t10HB, t10l},
387   { 8,   0,t11HB, t11l},
388   { 8,   0,t12HB, t12l},
389   {16,   0,t13HB, t13l},
390   { 0,   0,NULL,  t16_5l},/* Apparently not used */
391   {16,   0,t15HB, t15l},
392
393   { 1,   1,t16HB, t16l},
394   { 2,   3,t16HB, t16l},
395   { 3,   7,t16HB, t16l},
396   { 4,  15,t16HB, t16l},
397   { 6,  63,t16HB, t16l},
398   { 8, 255,t16HB, t16l},
399   {10,1023,t16HB, t16l},
400   {13,8191,t16HB, t16l},
401
402   { 4,  15,t24HB, t24l},
403   { 5,  31,t24HB, t24l},
404   { 6,  63,t24HB, t24l},
405   { 7, 127,t24HB, t24l},
406   { 8, 255,t24HB, t24l},
407   { 9, 511,t24HB, t24l},
408   {11,2047,t24HB, t24l},
409   {13,8191,t24HB, t24l},
410
411   { 0,   0,t32HB, t32l},
412   { 0,   0,t33HB, t33l},
413 };
414
415
416
417
418
419 /*  for (i = 0; i < 16*16; i++) {
420  *      largetbl[i] = ((ht[16].hlen[i]) << 16) + ht[24].hlen[i];
421  *  }
422  */
423 const unsigned int largetbl[16*16] = {
424 0x010004, 0x050005, 0x070007, 0x090008, 0x0a0009, 0x0a000a, 0x0b000a, 0x0b000b,
425 0x0c000b, 0x0c000c, 0x0c000c, 0x0d000c, 0x0d000c, 0x0d000c, 0x0e000d, 0x0a000a,
426 0x040005, 0x060006, 0x080007, 0x090008, 0x0a0009, 0x0b000a, 0x0b000a, 0x0b000b,
427 0x0c000b, 0x0c000b, 0x0c000c, 0x0d000c, 0x0e000c, 0x0d000c, 0x0e000c, 0x0a000a,
428 0x070007, 0x080007, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000b,
429 0x0d000b, 0x0c000b, 0x0d000b, 0x0d000c, 0x0d000c, 0x0e000c, 0x0e000d, 0x0b0009,
430 0x090008, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0c000b,
431 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0c0009,
432 0x0a0009, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000a, 0x0d000b,
433 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000d, 0x0b0009,
434 0x0a000a, 0x0a0009, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0e000b,
435 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0c0009,
436 0x0b000a, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0d000b, 0x0d000b,
437 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000d, 0x0c0009,
438 0x0b000b, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b,
439 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x11000d, 0x11000d, 0x0c000a,
440 0x0b000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b,
441 0x0f000b, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000d, 0x10000d, 0x0c000a,
442 0x0c000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, 0x0f000c,
443 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0f000d, 0x10000d, 0x0f000d, 0x0d000a,
444 0x0c000c, 0x0d000b, 0x0c000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c,
445 0x0f000c, 0x10000c, 0x10000c, 0x10000d, 0x11000d, 0x11000d, 0x10000d, 0x0c000a,
446 0x0d000c, 0x0d000c, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x10000c,
447 0x10000c, 0x10000c, 0x10000c, 0x10000d, 0x10000d, 0x0f000d, 0x10000d, 0x0d000a,
448 0x0d000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c,
449 0x0f000c, 0x11000c, 0x10000d, 0x10000d, 0x10000d, 0x10000d, 0x12000d, 0x0d000a,
450 0x0f000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000c,
451 0x10000d, 0x12000d, 0x11000d, 0x11000d, 0x11000d, 0x13000d, 0x11000d, 0x0d000a,
452 0x0e000d, 0x0f000c, 0x0d000c, 0x0e000c, 0x10000c, 0x10000c, 0x0f000c, 0x10000d,
453 0x10000d, 0x11000d, 0x12000d, 0x11000d, 0x13000d, 0x11000d, 0x10000d, 0x0d000a,
454 0x0a0009, 0x0a0009, 0x0a0009, 0x0b0009, 0x0b0009, 0x0c0009, 0x0c0009, 0x0c0009,
455 0x0d0009, 0x0d0009, 0x0d0009, 0x0d000a, 0x0d000a, 0x0d000a, 0x0d000a, 0x0a0006
456 };
457
458 /*  for (i = 0; i < 3*3; i++) {
459  *      table23[i] = ((ht[2].hlen[i]) << 16) + ht[3].hlen[i];
460  *  }
461  */
462 const unsigned int table23[3*3] = {
463 0x010002, 0x040003, 0x070007,
464 0x040004, 0x050004, 0x070007, 
465 0x060006, 0x070007, 0x080008
466 };
467
468 /*   for (i = 0; i < 4*4; i++) {
469  *       table56[i] = ((ht[5].hlen[i]) << 16) + ht[6].hlen[i];
470  *   }
471  */
472 const unsigned int table56[4*4] = {
473 0x010003, 0x040004, 0x070006, 0x080008, 0x040004, 0x050004, 0x080006, 0x090007,
474 0x070005, 0x080006, 0x090007, 0x0a0008, 0x080007, 0x080007, 0x090008, 0x0a0009
475 };
476
477
478
479 /* 
480  * 0: MPEG-2 LSF
481  * 1: MPEG-1
482  * 2: MPEG-2.5 LSF FhG extention                  (1995-07-11 shn)
483  */
484
485 typedef enum {
486     MPEG_2  = 0,
487     MPEG_1  = 1,
488     MPEG_25 = 2
489 } MPEG_t;
490  
491 const int  bitrate_table    [3] [16] = {
492     { 0,  8, 16, 24, 32, 40, 48, 56,  64,  80,  96, 112, 128, 144, 160, -1 },
493     { 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1 },
494     { 0,  8, 16, 24, 32, 40, 48, 56,  64,  80,  96, 112, 128, 144, 160, -1 },
495 };
496
497 const int  samplerate_table [3]  [4] = { 
498     { 22050, 24000, 16000, -1 },      /* MPEG 2 */
499     { 44100, 48000, 32000, -1 },      /* MPEG 1 */  
500     { 11025, 12000,  8000, -1 },      /* MPEG 2.5 */
501 };
502
503 const char* version_string  [3] = { "2", "1", "2.5" };
504
505 const unsigned  header_word [3] = { 0xFFF00000, 0xFFF80000, 0xFFE00000 };
506
507 /* end of tables.h */