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 */
|