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