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