Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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 */