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