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