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