1 /* 2 * libmad - MPEG audio decoder library 3 * Copyright (C) 2000-2004 Underbit Technologies, Inc. 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 * 19 * $Id: huffman.c,v 1.10 2004/01/23 09:41:32 rob Exp $ 20 */ 21 22 # ifdef HAVE_CONFIG_H 23 # include "config.h" 24 # endif 25 26 # include "global.h" 27 28 # include "huffman.h" 29 30 /* 31 * These are the Huffman code words for Layer III. 32 * The data for these tables are derived from Table B.7 of ISO/IEC 11172-3. 33 * 34 * These tables support decoding up to 4 Huffman code bits at a time. 35 */ 36 37 #define PTR(OFFS, BITS) { .ptr = { .bits=BITS, .offset=OFFS } } 38 #define V(V, W, X, Y, HLEN) { .final = 1, .value = { .v=V, .w=W, .x=X, .y=Y, .hlen=HLEN } } 39 40 static 41 struct huffquad const hufftabA[] = { 42 /* 0000 */ PTR(16, 2), 43 /* 0001 */ PTR(20, 2), 44 /* 0010 */ PTR(24, 1), 45 /* 0011 */ PTR(26, 1), 46 /* 0100 */ V(0, 0, 1, 0, 4), 47 /* 0101 */ V(0, 0, 0, 1, 4), 48 /* 0110 */ V(0, 1, 0, 0, 4), 49 /* 0111 */ V(1, 0, 0, 0, 4), 50 /* 1000 */ V(0, 0, 0, 0, 1), 51 /* 1001 */ V(0, 0, 0, 0, 1), 52 /* 1010 */ V(0, 0, 0, 0, 1), 53 /* 1011 */ V(0, 0, 0, 0, 1), 54 /* 1100 */ V(0, 0, 0, 0, 1), 55 /* 1101 */ V(0, 0, 0, 0, 1), 56 /* 1110 */ V(0, 0, 0, 0, 1), 57 /* 1111 */ V(0, 0, 0, 0, 1), 58 59 /* 0000 ... */ 60 /* 00 */ V(1, 0, 1, 1, 2), /* 16 */ 61 /* 01 */ V(1, 1, 1, 1, 2), 62 /* 10 */ V(1, 1, 0, 1, 2), 63 /* 11 */ V(1, 1, 1, 0, 2), 64 65 /* 0001 ... */ 66 /* 00 */ V(0, 1, 1, 1, 2), /* 20 */ 67 /* 01 */ V(0, 1, 0, 1, 2), 68 /* 10 */ V(1, 0, 0, 1, 1), 69 /* 11 */ V(1, 0, 0, 1, 1), 70 71 /* 0010 ... */ 72 /* 0 */ V(0, 1, 1, 0, 1), /* 24 */ 73 /* 1 */ V(0, 0, 1, 1, 1), 74 75 /* 0011 ... */ 76 /* 0 */ V(1, 0, 1, 0, 1), /* 26 */ 77 /* 1 */ V(1, 1, 0, 0, 1) 78 }; 79 80 static 81 struct huffquad const hufftabB[] = { 82 /* 0000 */ V(1, 1, 1, 1, 4), 83 /* 0001 */ V(1, 1, 1, 0, 4), 84 /* 0010 */ V(1, 1, 0, 1, 4), 85 /* 0011 */ V(1, 1, 0, 0, 4), 86 /* 0100 */ V(1, 0, 1, 1, 4), 87 /* 0101 */ V(1, 0, 1, 0, 4), 88 /* 0110 */ V(1, 0, 0, 1, 4), 89 /* 0111 */ V(1, 0, 0, 0, 4), 90 /* 1000 */ V(0, 1, 1, 1, 4), 91 /* 1001 */ V(0, 1, 1, 0, 4), 92 /* 1010 */ V(0, 1, 0, 1, 4), 93 /* 1011 */ V(0, 1, 0, 0, 4), 94 /* 1100 */ V(0, 0, 1, 1, 4), 95 /* 1101 */ V(0, 0, 1, 0, 4), 96 /* 1110 */ V(0, 0, 0, 1, 4), 97 /* 1111 */ V(0, 0, 0, 0, 4) 98 }; 99 100 # undef V 101 # undef PTR 102 103 #define PTR(OFFS, BITS) { .ptr = { .bits=BITS, .offset=OFFS } } 104 #define V(X, Y, HLEN) { .final = 1, .value = { .x=X, .y=Y, .hlen=HLEN } } 105 106 static 107 struct huffpair const hufftab0[] = { 108 /* */ V(0, 0, 0) 109 }; 110 111 static 112 struct huffpair const hufftab1[] = { 113 /* 000 */ V(1, 1, 3), 114 /* 001 */ V(0, 1, 3), 115 /* 010 */ V(1, 0, 2), 116 /* 011 */ V(1, 0, 2), 117 /* 100 */ V(0, 0, 1), 118 /* 101 */ V(0, 0, 1), 119 /* 110 */ V(0, 0, 1), 120 /* 111 */ V(0, 0, 1) 121 }; 122 123 static 124 struct huffpair const hufftab2[] = { 125 /* 000 */ PTR(8, 3), 126 /* 001 */ V(1, 1, 3), 127 /* 010 */ V(0, 1, 3), 128 /* 011 */ V(1, 0, 3), 129 /* 100 */ V(0, 0, 1), 130 /* 101 */ V(0, 0, 1), 131 /* 110 */ V(0, 0, 1), 132 /* 111 */ V(0, 0, 1), 133 134 /* 000 ... */ 135 /* 000 */ V(2, 2, 3), /* 8 */ 136 /* 001 */ V(0, 2, 3), 137 /* 010 */ V(1, 2, 2), 138 /* 011 */ V(1, 2, 2), 139 /* 100 */ V(2, 1, 2), 140 /* 101 */ V(2, 1, 2), 141 /* 110 */ V(2, 0, 2), 142 /* 111 */ V(2, 0, 2) 143 }; 144 145 static 146 struct huffpair const hufftab3[] = { 147 /* 000 */ PTR(8, 3), 148 /* 001 */ V(1, 0, 3), 149 /* 010 */ V(1, 1, 2), 150 /* 011 */ V(1, 1, 2), 151 /* 100 */ V(0, 1, 2), 152 /* 101 */ V(0, 1, 2), 153 /* 110 */ V(0, 0, 2), 154 /* 111 */ V(0, 0, 2), 155 156 /* 000 ... */ 157 /* 000 */ V(2, 2, 3), /* 8 */ 158 /* 001 */ V(0, 2, 3), 159 /* 010 */ V(1, 2, 2), 160 /* 011 */ V(1, 2, 2), 161 /* 100 */ V(2, 1, 2), 162 /* 101 */ V(2, 1, 2), 163 /* 110 */ V(2, 0, 2), 164 /* 111 */ V(2, 0, 2) 165 }; 166 167 static 168 struct huffpair const hufftab5[] = { 169 /* 000 */ PTR(8, 4), 170 /* 001 */ V(1, 1, 3), 171 /* 010 */ V(0, 1, 3), 172 /* 011 */ V(1, 0, 3), 173 /* 100 */ V(0, 0, 1), 174 /* 101 */ V(0, 0, 1), 175 /* 110 */ V(0, 0, 1), 176 /* 111 */ V(0, 0, 1), 177 178 /* 000 ... */ 179 /* 0000 */ PTR(24, 1), /* 8 */ 180 /* 0001 */ V(3, 2, 4), 181 /* 0010 */ V(3, 1, 3), 182 /* 0011 */ V(3, 1, 3), 183 /* 0100 */ V(1, 3, 4), 184 /* 0101 */ V(0, 3, 4), 185 /* 0110 */ V(3, 0, 4), 186 /* 0111 */ V(2, 2, 4), 187 /* 1000 */ V(1, 2, 3), 188 /* 1001 */ V(1, 2, 3), 189 /* 1010 */ V(2, 1, 3), 190 /* 1011 */ V(2, 1, 3), 191 /* 1100 */ V(0, 2, 3), 192 /* 1101 */ V(0, 2, 3), 193 /* 1110 */ V(2, 0, 3), 194 /* 1111 */ V(2, 0, 3), 195 196 /* 000 0000 ... */ 197 /* 0 */ V(3, 3, 1), /* 24 */ 198 /* 1 */ V(2, 3, 1) 199 }; 200 201 static 202 struct huffpair const hufftab6[] = { 203 /* 0000 */ PTR(16, 3), 204 /* 0001 */ PTR(24, 1), 205 /* 0010 */ PTR(26, 1), 206 /* 0011 */ V(1, 2, 4), 207 /* 0100 */ V(2, 1, 4), 208 /* 0101 */ V(2, 0, 4), 209 /* 0110 */ V(0, 1, 3), 210 /* 0111 */ V(0, 1, 3), 211 /* 1000 */ V(1, 1, 2), 212 /* 1001 */ V(1, 1, 2), 213 /* 1010 */ V(1, 1, 2), 214 /* 1011 */ V(1, 1, 2), 215 /* 1100 */ V(1, 0, 3), 216 /* 1101 */ V(1, 0, 3), 217 /* 1110 */ V(0, 0, 3), 218 /* 1111 */ V(0, 0, 3), 219 220 /* 0000 ... */ 221 /* 000 */ V(3, 3, 3), /* 16 */ 222 /* 001 */ V(0, 3, 3), 223 /* 010 */ V(2, 3, 2), 224 /* 011 */ V(2, 3, 2), 225 /* 100 */ V(3, 2, 2), 226 /* 101 */ V(3, 2, 2), 227 /* 110 */ V(3, 0, 2), 228 /* 111 */ V(3, 0, 2), 229 230 /* 0001 ... */ 231 /* 0 */ V(1, 3, 1), /* 24 */ 232 /* 1 */ V(3, 1, 1), 233 234 /* 0010 ... */ 235 /* 0 */ V(2, 2, 1), /* 26 */ 236 /* 1 */ V(0, 2, 1) 237 }; 238 239 static 240 struct huffpair const hufftab7[] = { 241 /* 0000 */ PTR(16, 4), 242 /* 0001 */ PTR(32, 4), 243 /* 0010 */ PTR(48, 2), 244 /* 0011 */ V(1, 1, 4), 245 /* 0100 */ V(0, 1, 3), 246 /* 0101 */ V(0, 1, 3), 247 /* 0110 */ V(1, 0, 3), 248 /* 0111 */ V(1, 0, 3), 249 /* 1000 */ V(0, 0, 1), 250 /* 1001 */ V(0, 0, 1), 251 /* 1010 */ V(0, 0, 1), 252 /* 1011 */ V(0, 0, 1), 253 /* 1100 */ V(0, 0, 1), 254 /* 1101 */ V(0, 0, 1), 255 /* 1110 */ V(0, 0, 1), 256 /* 1111 */ V(0, 0, 1), 257 258 /* 0000 ... */ 259 /* 0000 */ PTR(52, 2), /* 16 */ 260 /* 0001 */ PTR(56, 1), 261 /* 0010 */ PTR(58, 1), 262 /* 0011 */ V(1, 5, 4), 263 /* 0100 */ V(5, 1, 4), 264 /* 0101 */ PTR(60, 1), 265 /* 0110 */ V(5, 0, 4), 266 /* 0111 */ PTR(62, 1), 267 /* 1000 */ V(2, 4, 4), 268 /* 1001 */ V(4, 2, 4), 269 /* 1010 */ V(1, 4, 3), 270 /* 1011 */ V(1, 4, 3), 271 /* 1100 */ V(4, 1, 3), 272 /* 1101 */ V(4, 1, 3), 273 /* 1110 */ V(4, 0, 3), 274 /* 1111 */ V(4, 0, 3), 275 276 /* 0001 ... */ 277 /* 0000 */ V(0, 4, 4), /* 32 */ 278 /* 0001 */ V(2, 3, 4), 279 /* 0010 */ V(3, 2, 4), 280 /* 0011 */ V(0, 3, 4), 281 /* 0100 */ V(1, 3, 3), 282 /* 0101 */ V(1, 3, 3), 283 /* 0110 */ V(3, 1, 3), 284 /* 0111 */ V(3, 1, 3), 285 /* 1000 */ V(3, 0, 3), 286 /* 1001 */ V(3, 0, 3), 287 /* 1010 */ V(2, 2, 3), 288 /* 1011 */ V(2, 2, 3), 289 /* 1100 */ V(1, 2, 2), 290 /* 1101 */ V(1, 2, 2), 291 /* 1110 */ V(1, 2, 2), 292 /* 1111 */ V(1, 2, 2), 293 294 /* 0010 ... */ 295 /* 00 */ V(2, 1, 1), /* 48 */ 296 /* 01 */ V(2, 1, 1), 297 /* 10 */ V(0, 2, 2), 298 /* 11 */ V(2, 0, 2), 299 300 /* 0000 0000 ... */ 301 /* 00 */ V(5, 5, 2), /* 52 */ 302 /* 01 */ V(4, 5, 2), 303 /* 10 */ V(5, 4, 2), 304 /* 11 */ V(5, 3, 2), 305 306 /* 0000 0001 ... */ 307 /* 0 */ V(3, 5, 1), /* 56 */ 308 /* 1 */ V(4, 4, 1), 309 310 /* 0000 0010 ... */ 311 /* 0 */ V(2, 5, 1), /* 58 */ 312 /* 1 */ V(5, 2, 1), 313 314 /* 0000 0101 ... */ 315 /* 0 */ V(0, 5, 1), /* 60 */ 316 /* 1 */ V(3, 4, 1), 317 318 /* 0000 0111 ... */ 319 /* 0 */ V(4, 3, 1), /* 62 */ 320 /* 1 */ V(3, 3, 1) 321 }; 322 323 # if 0 324 /* this version saves 8 entries (16 bytes) at the expense of 325 an extra lookup in 4 out of 36 cases */ 326 static 327 struct huffpair const hufftab8[] = { 328 /* 0000 */ PTR(16, 4), 329 /* 0001 */ PTR(32, 2), 330 /* 0010 */ V(1, 2, 4), 331 /* 0011 */ V(2, 1, 4), 332 /* 0100 */ V(1, 1, 2), 333 /* 0101 */ V(1, 1, 2), 334 /* 0110 */ V(1, 1, 2), 335 /* 0111 */ V(1, 1, 2), 336 /* 1000 */ V(0, 1, 3), 337 /* 1001 */ V(0, 1, 3), 338 /* 1010 */ V(1, 0, 3), 339 /* 1011 */ V(1, 0, 3), 340 /* 1100 */ V(0, 0, 2), 341 /* 1101 */ V(0, 0, 2), 342 /* 1110 */ V(0, 0, 2), 343 /* 1111 */ V(0, 0, 2), 344 345 /* 0000 ... */ 346 /* 0000 */ PTR(36, 3), /* 16 */ 347 /* 0001 */ PTR(44, 2), 348 /* 0010 */ PTR(48, 1), 349 /* 0011 */ V(1, 5, 4), 350 /* 0100 */ V(5, 1, 4), 351 /* 0101 */ PTR(50, 1), 352 /* 0110 */ PTR(52, 1), 353 /* 0111 */ V(2, 4, 4), 354 /* 1000 */ V(4, 2, 4), 355 /* 1001 */ V(1, 4, 4), 356 /* 1010 */ V(4, 1, 3), 357 /* 1011 */ V(4, 1, 3), 358 /* 1100 */ V(0, 4, 4), 359 /* 1101 */ V(4, 0, 4), 360 /* 1110 */ V(2, 3, 4), 361 /* 1111 */ V(3, 2, 4), 362 363 /* 0001 ... */ 364 /* 00 */ PTR(54, 2), /* 32 */ 365 /* 01 */ V(2, 2, 2), 366 /* 10 */ V(0, 2, 2), 367 /* 11 */ V(2, 0, 2), 368 369 /* 0000 0000 ... */ 370 /* 000 */ V(5, 5, 3), /* 36 */ 371 /* 001 */ V(5, 4, 3), 372 /* 010 */ V(4, 5, 2), 373 /* 011 */ V(4, 5, 2), 374 /* 100 */ V(5, 3, 1), 375 /* 101 */ V(5, 3, 1), 376 /* 110 */ V(5, 3, 1), 377 /* 111 */ V(5, 3, 1), 378 379 /* 0000 0001 ... */ 380 /* 00 */ V(3, 5, 2), /* 44 */ 381 /* 01 */ V(4, 4, 2), 382 /* 10 */ V(2, 5, 1), 383 /* 11 */ V(2, 5, 1), 384 385 /* 0000 0010 ... */ 386 /* 0 */ V(5, 2, 1), /* 48 */ 387 /* 1 */ V(0, 5, 1), 388 389 /* 0000 0101 ... */ 390 /* 0 */ V(3, 4, 1), /* 50 */ 391 /* 1 */ V(4, 3, 1), 392 393 /* 0000 0110 ... */ 394 /* 0 */ V(5, 0, 1), /* 52 */ 395 /* 1 */ V(3, 3, 1), 396 397 /* 0001 00 ... */ 398 /* 00 */ V(1, 3, 2), /* 54 */ 399 /* 01 */ V(3, 1, 2), 400 /* 10 */ V(0, 3, 2), 401 /* 11 */ V(3, 0, 2), 402 }; 403 # else 404 static 405 struct huffpair const hufftab8[] = { 406 /* 0000 */ PTR(16, 4), 407 /* 0001 */ PTR(32, 4), 408 /* 0010 */ V(1, 2, 4), 409 /* 0011 */ V(2, 1, 4), 410 /* 0100 */ V(1, 1, 2), 411 /* 0101 */ V(1, 1, 2), 412 /* 0110 */ V(1, 1, 2), 413 /* 0111 */ V(1, 1, 2), 414 /* 1000 */ V(0, 1, 3), 415 /* 1001 */ V(0, 1, 3), 416 /* 1010 */ V(1, 0, 3), 417 /* 1011 */ V(1, 0, 3), 418 /* 1100 */ V(0, 0, 2), 419 /* 1101 */ V(0, 0, 2), 420 /* 1110 */ V(0, 0, 2), 421 /* 1111 */ V(0, 0, 2), 422 423 /* 0000 ... */ 424 /* 0000 */ PTR(48, 3), /* 16 */ 425 /* 0001 */ PTR(56, 2), 426 /* 0010 */ PTR(60, 1), 427 /* 0011 */ V(1, 5, 4), 428 /* 0100 */ V(5, 1, 4), 429 /* 0101 */ PTR(62, 1), 430 /* 0110 */ PTR(64, 1), 431 /* 0111 */ V(2, 4, 4), 432 /* 1000 */ V(4, 2, 4), 433 /* 1001 */ V(1, 4, 4), 434 /* 1010 */ V(4, 1, 3), 435 /* 1011 */ V(4, 1, 3), 436 /* 1100 */ V(0, 4, 4), 437 /* 1101 */ V(4, 0, 4), 438 /* 1110 */ V(2, 3, 4), 439 /* 1111 */ V(3, 2, 4), 440 441 /* 0001 ... */ 442 /* 0000 */ V(1, 3, 4), /* 32 */ 443 /* 0001 */ V(3, 1, 4), 444 /* 0010 */ V(0, 3, 4), 445 /* 0011 */ V(3, 0, 4), 446 /* 0100 */ V(2, 2, 2), 447 /* 0101 */ V(2, 2, 2), 448 /* 0110 */ V(2, 2, 2), 449 /* 0111 */ V(2, 2, 2), 450 /* 1000 */ V(0, 2, 2), 451 /* 1001 */ V(0, 2, 2), 452 /* 1010 */ V(0, 2, 2), 453 /* 1011 */ V(0, 2, 2), 454 /* 1100 */ V(2, 0, 2), 455 /* 1101 */ V(2, 0, 2), 456 /* 1110 */ V(2, 0, 2), 457 /* 1111 */ V(2, 0, 2), 458 459 /* 0000 0000 ... */ 460 /* 000 */ V(5, 5, 3), /* 48 */ 461 /* 001 */ V(5, 4, 3), 462 /* 010 */ V(4, 5, 2), 463 /* 011 */ V(4, 5, 2), 464 /* 100 */ V(5, 3, 1), 465 /* 101 */ V(5, 3, 1), 466 /* 110 */ V(5, 3, 1), 467 /* 111 */ V(5, 3, 1), 468 469 /* 0000 0001 ... */ 470 /* 00 */ V(3, 5, 2), /* 56 */ 471 /* 01 */ V(4, 4, 2), 472 /* 10 */ V(2, 5, 1), 473 /* 11 */ V(2, 5, 1), 474 475 /* 0000 0010 ... */ 476 /* 0 */ V(5, 2, 1), /* 60 */ 477 /* 1 */ V(0, 5, 1), 478 479 /* 0000 0101 ... */ 480 /* 0 */ V(3, 4, 1), /* 62 */ 481 /* 1 */ V(4, 3, 1), 482 483 /* 0000 0110 ... */ 484 /* 0 */ V(5, 0, 1), /* 64 */ 485 /* 1 */ V(3, 3, 1) 486 }; 487 # endif 488 489 static 490 struct huffpair const hufftab9[] = { 491 /* 0000 */ PTR(16, 4), 492 /* 0001 */ PTR(32, 3), 493 /* 0010 */ PTR(40, 2), 494 /* 0011 */ PTR(44, 2), 495 /* 0100 */ PTR(48, 1), 496 /* 0101 */ V(1, 2, 4), 497 /* 0110 */ V(2, 1, 4), 498 /* 0111 */ V(2, 0, 4), 499 /* 1000 */ V(1, 1, 3), 500 /* 1001 */ V(1, 1, 3), 501 /* 1010 */ V(0, 1, 3), 502 /* 1011 */ V(0, 1, 3), 503 /* 1100 */ V(1, 0, 3), 504 /* 1101 */ V(1, 0, 3), 505 /* 1110 */ V(0, 0, 3), 506 /* 1111 */ V(0, 0, 3), 507 508 /* 0000 ... */ 509 /* 0000 */ PTR(50, 1), /* 16 */ 510 /* 0001 */ V(3, 5, 4), 511 /* 0010 */ V(5, 3, 4), 512 /* 0011 */ PTR(52, 1), 513 /* 0100 */ V(4, 4, 4), 514 /* 0101 */ V(2, 5, 4), 515 /* 0110 */ V(5, 2, 4), 516 /* 0111 */ V(1, 5, 4), 517 /* 1000 */ V(5, 1, 3), 518 /* 1001 */ V(5, 1, 3), 519 /* 1010 */ V(3, 4, 3), 520 /* 1011 */ V(3, 4, 3), 521 /* 1100 */ V(4, 3, 3), 522 /* 1101 */ V(4, 3, 3), 523 /* 1110 */ V(5, 0, 4), 524 /* 1111 */ V(0, 4, 4), 525 526 /* 0001 ... */ 527 /* 000 */ V(2, 4, 3), /* 32 */ 528 /* 001 */ V(4, 2, 3), 529 /* 010 */ V(3, 3, 3), 530 /* 011 */ V(4, 0, 3), 531 /* 100 */ V(1, 4, 2), 532 /* 101 */ V(1, 4, 2), 533 /* 110 */ V(4, 1, 2), 534 /* 111 */ V(4, 1, 2), 535 536 /* 0010 ... */ 537 /* 00 */ V(2, 3, 2), /* 40 */ 538 /* 01 */ V(3, 2, 2), 539 /* 10 */ V(1, 3, 1), 540 /* 11 */ V(1, 3, 1), 541 542 /* 0011 ... */ 543 /* 00 */ V(3, 1, 1), /* 44 */ 544 /* 01 */ V(3, 1, 1), 545 /* 10 */ V(0, 3, 2), 546 /* 11 */ V(3, 0, 2), 547 548 /* 0100 ... */ 549 /* 0 */ V(2, 2, 1), /* 48 */ 550 /* 1 */ V(0, 2, 1), 551 552 /* 0000 0000 ... */ 553 /* 0 */ V(5, 5, 1), /* 50 */ 554 /* 1 */ V(4, 5, 1), 555 556 /* 0000 0011 ... */ 557 /* 0 */ V(5, 4, 1), /* 52 */ 558 /* 1 */ V(0, 5, 1) 559 }; 560 561 static 562 struct huffpair const hufftab10[] = { 563 /* 0000 */ PTR(16, 4), 564 /* 0001 */ PTR(32, 4), 565 /* 0010 */ PTR(48, 2), 566 /* 0011 */ V(1, 1, 4), 567 /* 0100 */ V(0, 1, 3), 568 /* 0101 */ V(0, 1, 3), 569 /* 0110 */ V(1, 0, 3), 570 /* 0111 */ V(1, 0, 3), 571 /* 1000 */ V(0, 0, 1), 572 /* 1001 */ V(0, 0, 1), 573 /* 1010 */ V(0, 0, 1), 574 /* 1011 */ V(0, 0, 1), 575 /* 1100 */ V(0, 0, 1), 576 /* 1101 */ V(0, 0, 1), 577 /* 1110 */ V(0, 0, 1), 578 /* 1111 */ V(0, 0, 1), 579 580 /* 0000 ... */ 581 /* 0000 */ PTR(52, 3), /* 16 */ 582 /* 0001 */ PTR(60, 2), 583 /* 0010 */ PTR(64, 3), 584 /* 0011 */ PTR(72, 1), 585 /* 0100 */ PTR(74, 2), 586 /* 0101 */ PTR(78, 2), 587 /* 0110 */ PTR(82, 2), 588 /* 0111 */ V(1, 7, 4), 589 /* 1000 */ V(7, 1, 4), 590 /* 1001 */ PTR(86, 1), 591 /* 1010 */ PTR(88, 2), 592 /* 1011 */ PTR(92, 2), 593 /* 1100 */ V(1, 6, 4), 594 /* 1101 */ V(6, 1, 4), 595 /* 1110 */ V(6, 0, 4), 596 /* 1111 */ PTR(96, 1), 597 598 /* 0001 ... */ 599 /* 0000 */ PTR(98, 1), /* 32 */ 600 /* 0001 */ PTR(100, 1), 601 /* 0010 */ V(1, 4, 4), 602 /* 0011 */ V(4, 1, 4), 603 /* 0100 */ V(4, 0, 4), 604 /* 0101 */ V(2, 3, 4), 605 /* 0110 */ V(3, 2, 4), 606 /* 0111 */ V(0, 3, 4), 607 /* 1000 */ V(1, 3, 3), 608 /* 1001 */ V(1, 3, 3), 609 /* 1010 */ V(3, 1, 3), 610 /* 1011 */ V(3, 1, 3), 611 /* 1100 */ V(3, 0, 3), 612 /* 1101 */ V(3, 0, 3), 613 /* 1110 */ V(2, 2, 3), 614 /* 1111 */ V(2, 2, 3), 615 616 /* 0010 ... */ 617 /* 00 */ V(1, 2, 2), /* 48 */ 618 /* 01 */ V(2, 1, 2), 619 /* 10 */ V(0, 2, 2), 620 /* 11 */ V(2, 0, 2), 621 622 /* 0000 0000 ... */ 623 /* 000 */ V(7, 7, 3), /* 52 */ 624 /* 001 */ V(6, 7, 3), 625 /* 010 */ V(7, 6, 3), 626 /* 011 */ V(5, 7, 3), 627 /* 100 */ V(7, 5, 3), 628 /* 101 */ V(6, 6, 3), 629 /* 110 */ V(4, 7, 2), 630 /* 111 */ V(4, 7, 2), 631 632 /* 0000 0001 ... */ 633 /* 00 */ V(7, 4, 2), /* 60 */ 634 /* 01 */ V(5, 6, 2), 635 /* 10 */ V(6, 5, 2), 636 /* 11 */ V(3, 7, 2), 637 638 /* 0000 0010 ... */ 639 /* 000 */ V(7, 3, 2), /* 64 */ 640 /* 001 */ V(7, 3, 2), 641 /* 010 */ V(4, 6, 2), 642 /* 011 */ V(4, 6, 2), 643 /* 100 */ V(5, 5, 3), 644 /* 101 */ V(5, 4, 3), 645 /* 110 */ V(6, 3, 2), 646 /* 111 */ V(6, 3, 2), 647 648 /* 0000 0011 ... */ 649 /* 0 */ V(2, 7, 1), /* 72 */ 650 /* 1 */ V(7, 2, 1), 651 652 /* 0000 0100 ... */ 653 /* 00 */ V(6, 4, 2), /* 74 */ 654 /* 01 */ V(0, 7, 2), 655 /* 10 */ V(7, 0, 1), 656 /* 11 */ V(7, 0, 1), 657 658 /* 0000 0101 ... */ 659 /* 00 */ V(6, 2, 1), /* 78 */ 660 /* 01 */ V(6, 2, 1), 661 /* 10 */ V(4, 5, 2), 662 /* 11 */ V(3, 5, 2), 663 664 /* 0000 0110 ... */ 665 /* 00 */ V(0, 6, 1), /* 82 */ 666 /* 01 */ V(0, 6, 1), 667 /* 10 */ V(5, 3, 2), 668 /* 11 */ V(4, 4, 2), 669 670 /* 0000 1001 ... */ 671 /* 0 */ V(3, 6, 1), /* 86 */ 672 /* 1 */ V(2, 6, 1), 673 674 /* 0000 1010 ... */ 675 /* 00 */ V(2, 5, 2), /* 88 */ 676 /* 01 */ V(5, 2, 2), 677 /* 10 */ V(1, 5, 1), 678 /* 11 */ V(1, 5, 1), 679 680 /* 0000 1011 ... */ 681 /* 00 */ V(5, 1, 1), /* 92 */ 682 /* 01 */ V(5, 1, 1), 683 /* 10 */ V(3, 4, 2), 684 /* 11 */ V(4, 3, 2), 685 686 /* 0000 1111 ... */ 687 /* 0 */ V(0, 5, 1), /* 96 */ 688 /* 1 */ V(5, 0, 1), 689 690 /* 0001 0000 ... */ 691 /* 0 */ V(2, 4, 1), /* 98 */ 692 /* 1 */ V(4, 2, 1), 693 694 /* 0001 0001 ... */ 695 /* 0 */ V(3, 3, 1), /* 100 */ 696 /* 1 */ V(0, 4, 1) 697 }; 698 699 static 700 struct huffpair const hufftab11[] = { 701 /* 0000 */ PTR(16, 4), 702 /* 0001 */ PTR(32, 4), 703 /* 0010 */ PTR(48, 4), 704 /* 0011 */ PTR(64, 3), 705 /* 0100 */ V(1, 2, 4), 706 /* 0101 */ PTR(72, 1), 707 /* 0110 */ V(1, 1, 3), 708 /* 0111 */ V(1, 1, 3), 709 /* 1000 */ V(0, 1, 3), 710 /* 1001 */ V(0, 1, 3), 711 /* 1010 */ V(1, 0, 3), 712 /* 1011 */ V(1, 0, 3), 713 /* 1100 */ V(0, 0, 2), 714 /* 1101 */ V(0, 0, 2), 715 /* 1110 */ V(0, 0, 2), 716 /* 1111 */ V(0, 0, 2), 717 718 /* 0000 ... */ 719 /* 0000 */ PTR(74, 2), /* 16 */ 720 /* 0001 */ PTR(78, 3), 721 /* 0010 */ PTR(86, 2), 722 /* 0011 */ PTR(90, 1), 723 /* 0100 */ PTR(92, 2), 724 /* 0101 */ V(2, 7, 4), 725 /* 0110 */ V(7, 2, 4), 726 /* 0111 */ PTR(96, 1), 727 /* 1000 */ V(7, 1, 3), 728 /* 1001 */ V(7, 1, 3), 729 /* 1010 */ V(1, 7, 4), 730 /* 1011 */ V(7, 0, 4), 731 /* 1100 */ V(3, 6, 4), 732 /* 1101 */ V(6, 3, 4), 733 /* 1110 */ V(6, 0, 4), 734 /* 1111 */ PTR(98, 1), 735 736 /* 0001 ... */ 737 /* 0000 */ PTR(100, 1), /* 32 */ 738 /* 0001 */ V(1, 5, 4), 739 /* 0010 */ V(6, 2, 3), 740 /* 0011 */ V(6, 2, 3), 741 /* 0100 */ V(2, 6, 4), 742 /* 0101 */ V(0, 6, 4), 743 /* 0110 */ V(1, 6, 3), 744 /* 0111 */ V(1, 6, 3), 745 /* 1000 */ V(6, 1, 3), 746 /* 1001 */ V(6, 1, 3), 747 /* 1010 */ V(5, 1, 4), 748 /* 1011 */ V(3, 4, 4), 749 /* 1100 */ V(5, 0, 4), 750 /* 1101 */ PTR(102, 1), 751 /* 1110 */ V(2, 4, 4), 752 /* 1111 */ V(4, 2, 4), 753 754 /* 0010 ... */ 755 /* 0000 */ V(1, 4, 4), /* 48 */ 756 /* 0001 */ V(4, 1, 4), 757 /* 0010 */ V(0, 4, 4), 758 /* 0011 */ V(4, 0, 4), 759 /* 0100 */ V(2, 3, 3), 760 /* 0101 */ V(2, 3, 3), 761 /* 0110 */ V(3, 2, 3), 762 /* 0111 */ V(3, 2, 3), 763 /* 1000 */ V(1, 3, 2), 764 /* 1001 */ V(1, 3, 2), 765 /* 1010 */ V(1, 3, 2), 766 /* 1011 */ V(1, 3, 2), 767 /* 1100 */ V(3, 1, 2), 768 /* 1101 */ V(3, 1, 2), 769 /* 1110 */ V(3, 1, 2), 770 /* 1111 */ V(3, 1, 2), 771 772 /* 0011 ... */ 773 /* 000 */ V(0, 3, 3), /* 64 */ 774 /* 001 */ V(3, 0, 3), 775 /* 010 */ V(2, 2, 2), 776 /* 011 */ V(2, 2, 2), 777 /* 100 */ V(2, 1, 1), 778 /* 101 */ V(2, 1, 1), 779 /* 110 */ V(2, 1, 1), 780 /* 111 */ V(2, 1, 1), 781 782 /* 0101 ... */ 783 /* 0 */ V(0, 2, 1), /* 72 */ 784 /* 1 */ V(2, 0, 1), 785 786 /* 0000 0000 ... */ 787 /* 00 */ V(7, 7, 2), /* 74 */ 788 /* 01 */ V(6, 7, 2), 789 /* 10 */ V(7, 6, 2), 790 /* 11 */ V(7, 5, 2), 791 792 /* 0000 0001 ... */ 793 /* 000 */ V(6, 6, 2), /* 78 */ 794 /* 001 */ V(6, 6, 2), 795 /* 010 */ V(4, 7, 2), 796 /* 011 */ V(4, 7, 2), 797 /* 100 */ V(7, 4, 2), 798 /* 101 */ V(7, 4, 2), 799 /* 110 */ V(5, 7, 3), 800 /* 111 */ V(5, 5, 3), 801 802 /* 0000 0010 ... */ 803 /* 00 */ V(5, 6, 2), /* 86 */ 804 /* 01 */ V(6, 5, 2), 805 /* 10 */ V(3, 7, 1), 806 /* 11 */ V(3, 7, 1), 807 808 /* 0000 0011 ... */ 809 /* 0 */ V(7, 3, 1), /* 90 */ 810 /* 1 */ V(4, 6, 1), 811 812 /* 0000 0100 ... */ 813 /* 00 */ V(4, 5, 2), /* 92 */ 814 /* 01 */ V(5, 4, 2), 815 /* 10 */ V(3, 5, 2), 816 /* 11 */ V(5, 3, 2), 817 818 /* 0000 0111 ... */ 819 /* 0 */ V(6, 4, 1), /* 96 */ 820 /* 1 */ V(0, 7, 1), 821 822 /* 0000 1111 ... */ 823 /* 0 */ V(4, 4, 1), /* 98 */ 824 /* 1 */ V(2, 5, 1), 825 826 /* 0001 0000 ... */ 827 /* 0 */ V(5, 2, 1), /* 100 */ 828 /* 1 */ V(0, 5, 1), 829 830 /* 0001 1101 ... */ 831 /* 0 */ V(4, 3, 1), /* 102 */ 832 /* 1 */ V(3, 3, 1) 833 }; 834 835 static 836 struct huffpair const hufftab12[] = { 837 /* 0000 */ PTR(16, 4), 838 /* 0001 */ PTR(32, 4), 839 /* 0010 */ PTR(48, 4), 840 /* 0011 */ PTR(64, 2), 841 /* 0100 */ PTR(68, 3), 842 /* 0101 */ PTR(76, 1), 843 /* 0110 */ V(1, 2, 4), 844 /* 0111 */ V(2, 1, 4), 845 /* 1000 */ PTR(78, 1), 846 /* 1001 */ V(0, 0, 4), 847 /* 1010 */ V(1, 1, 3), 848 /* 1011 */ V(1, 1, 3), 849 /* 1100 */ V(0, 1, 3), 850 /* 1101 */ V(0, 1, 3), 851 /* 1110 */ V(1, 0, 3), 852 /* 1111 */ V(1, 0, 3), 853 854 /* 0000 ... */ 855 /* 0000 */ PTR(80, 2), /* 16 */ 856 /* 0001 */ PTR(84, 1), 857 /* 0010 */ PTR(86, 1), 858 /* 0011 */ PTR(88, 1), 859 /* 0100 */ V(5, 6, 4), 860 /* 0101 */ V(3, 7, 4), 861 /* 0110 */ PTR(90, 1), 862 /* 0111 */ V(2, 7, 4), 863 /* 1000 */ V(7, 2, 4), 864 /* 1001 */ V(4, 6, 4), 865 /* 1010 */ V(6, 4, 4), 866 /* 1011 */ V(1, 7, 4), 867 /* 1100 */ V(7, 1, 4), 868 /* 1101 */ PTR(92, 1), 869 /* 1110 */ V(3, 6, 4), 870 /* 1111 */ V(6, 3, 4), 871 872 /* 0001 ... */ 873 /* 0000 */ V(4, 5, 4), /* 32 */ 874 /* 0001 */ V(5, 4, 4), 875 /* 0010 */ V(4, 4, 4), 876 /* 0011 */ PTR(94, 1), 877 /* 0100 */ V(2, 6, 3), 878 /* 0101 */ V(2, 6, 3), 879 /* 0110 */ V(6, 2, 3), 880 /* 0111 */ V(6, 2, 3), 881 /* 1000 */ V(6, 1, 3), 882 /* 1001 */ V(6, 1, 3), 883 /* 1010 */ V(1, 6, 4), 884 /* 1011 */ V(6, 0, 4), 885 /* 1100 */ V(3, 5, 4), 886 /* 1101 */ V(5, 3, 4), 887 /* 1110 */ V(2, 5, 4), 888 /* 1111 */ V(5, 2, 4), 889 890 /* 0010 ... */ 891 /* 0000 */ V(1, 5, 3), /* 48 */ 892 /* 0001 */ V(1, 5, 3), 893 /* 0010 */ V(5, 1, 3), 894 /* 0011 */ V(5, 1, 3), 895 /* 0100 */ V(3, 4, 3), 896 /* 0101 */ V(3, 4, 3), 897 /* 0110 */ V(4, 3, 3), 898 /* 0111 */ V(4, 3, 3), 899 /* 1000 */ V(5, 0, 4), 900 /* 1001 */ V(0, 4, 4), 901 /* 1010 */ V(2, 4, 3), 902 /* 1011 */ V(2, 4, 3), 903 /* 1100 */ V(4, 2, 3), 904 /* 1101 */ V(4, 2, 3), 905 /* 1110 */ V(1, 4, 3), 906 /* 1111 */ V(1, 4, 3), 907 908 /* 0011 ... */ 909 /* 00 */ V(3, 3, 2), /* 64 */ 910 /* 01 */ V(4, 1, 2), 911 /* 10 */ V(2, 3, 2), 912 /* 11 */ V(3, 2, 2), 913 914 /* 0100 ... */ 915 /* 000 */ V(4, 0, 3), /* 68 */ 916 /* 001 */ V(0, 3, 3), 917 /* 010 */ V(3, 0, 2), 918 /* 011 */ V(3, 0, 2), 919 /* 100 */ V(1, 3, 1), 920 /* 101 */ V(1, 3, 1), 921 /* 110 */ V(1, 3, 1), 922 /* 111 */ V(1, 3, 1), 923 924 /* 0101 ... */ 925 /* 0 */ V(3, 1, 1), /* 76 */ 926 /* 1 */ V(2, 2, 1), 927 928 /* 1000 ... */ 929 /* 0 */ V(0, 2, 1), /* 78 */ 930 /* 1 */ V(2, 0, 1), 931 932 /* 0000 0000 ... */ 933 /* 00 */ V(7, 7, 2), /* 80 */ 934 /* 01 */ V(6, 7, 2), 935 /* 10 */ V(7, 6, 1), 936 /* 11 */ V(7, 6, 1), 937 938 /* 0000 0001 ... */ 939 /* 0 */ V(5, 7, 1), /* 84 */ 940 /* 1 */ V(7, 5, 1), 941 942 /* 0000 0010 ... */ 943 /* 0 */ V(6, 6, 1), /* 86 */ 944 /* 1 */ V(4, 7, 1), 945 946 /* 0000 0011 ... */ 947 /* 0 */ V(7, 4, 1), /* 88 */ 948 /* 1 */ V(6, 5, 1), 949 950 /* 0000 0110 ... */ 951 /* 0 */ V(7, 3, 1), /* 90 */ 952 /* 1 */ V(5, 5, 1), 953 954 /* 0000 1101 ... */ 955 /* 0 */ V(0, 7, 1), /* 92 */ 956 /* 1 */ V(7, 0, 1), 957 958 /* 0001 0011 ... */ 959 /* 0 */ V(0, 6, 1), /* 94 */ 960 /* 1 */ V(0, 5, 1) 961 }; 962 963 static 964 struct huffpair const hufftab13[] = { 965 /* 0000 */ PTR(16, 4), 966 /* 0001 */ PTR(32, 4), 967 /* 0010 */ PTR(48, 4), 968 /* 0011 */ PTR(64, 2), 969 /* 0100 */ V(1, 1, 4), 970 /* 0101 */ V(0, 1, 4), 971 /* 0110 */ V(1, 0, 3), 972 /* 0111 */ V(1, 0, 3), 973 /* 1000 */ V(0, 0, 1), 974 /* 1001 */ V(0, 0, 1), 975 /* 1010 */ V(0, 0, 1), 976 /* 1011 */ V(0, 0, 1), 977 /* 1100 */ V(0, 0, 1), 978 /* 1101 */ V(0, 0, 1), 979 /* 1110 */ V(0, 0, 1), 980 /* 1111 */ V(0, 0, 1), 981 982 /* 0000 ... */ 983 /* 0000 */ PTR(68, 4), /* 16 */ 984 /* 0001 */ PTR(84, 4), 985 /* 0010 */ PTR(100, 4), 986 /* 0011 */ PTR(116, 4), 987 /* 0100 */ PTR(132, 4), 988 /* 0101 */ PTR(148, 4), 989 /* 0110 */ PTR(164, 3), 990 /* 0111 */ PTR(172, 3), 991 /* 1000 */ PTR(180, 3), 992 /* 1001 */ PTR(188, 3), 993 /* 1010 */ PTR(196, 3), 994 /* 1011 */ PTR(204, 3), 995 /* 1100 */ PTR(212, 1), 996 /* 1101 */ PTR(214, 2), 997 /* 1110 */ PTR(218, 3), 998 /* 1111 */ PTR(226, 1), 999 1000 /* 0001 ... */ 1001 /* 0000 */ PTR(228, 2), /* 32 */ 1002 /* 0001 */ PTR(232, 2), 1003 /* 0010 */ PTR(236, 2), 1004 /* 0011 */ PTR(240, 2), 1005 /* 0100 */ V(8, 1, 4), 1006 /* 0101 */ PTR(244, 1), 1007 /* 0110 */ PTR(246, 1), 1008 /* 0111 */ PTR(248, 1), 1009 /* 1000 */ PTR(250, 2), 1010 /* 1001 */ PTR(254, 1), 1011 /* 1010 */ V(1, 5, 4), 1012 /* 1011 */ V(5, 1, 4), 1013 /* 1100 */ PTR(256, 1), 1014 /* 1101 */ PTR(258, 1), 1015 /* 1110 */ PTR(260, 1), 1016 /* 1111 */ V(1, 4, 4), 1017 1018 /* 0010 ... */ 1019 /* 0000 */ V(4, 1, 3), /* 48 */ 1020 /* 0001 */ V(4, 1, 3), 1021 /* 0010 */ V(0, 4, 4), 1022 /* 0011 */ V(4, 0, 4), 1023 /* 0100 */ V(2, 3, 4), 1024 /* 0101 */ V(3, 2, 4), 1025 /* 0110 */ V(1, 3, 3), 1026 /* 0111 */ V(1, 3, 3), 1027 /* 1000 */ V(3, 1, 3), 1028 /* 1001 */ V(3, 1, 3), 1029 /* 1010 */ V(0, 3, 3), 1030 /* 1011 */ V(0, 3, 3), 1031 /* 1100 */ V(3, 0, 3), 1032 /* 1101 */ V(3, 0, 3), 1033 /* 1110 */ V(2, 2, 3), 1034 /* 1111 */ V(2, 2, 3), 1035 1036 /* 0011 ... */ 1037 /* 00 */ V(1, 2, 2), /* 64 */ 1038 /* 01 */ V(2, 1, 2), 1039 /* 10 */ V(0, 2, 2), 1040 /* 11 */ V(2, 0, 2), 1041 1042 /* 0000 0000 ... */ 1043 /* 0000 */ PTR(262, 4), /* 68 */ 1044 /* 0001 */ PTR(278, 4), 1045 /* 0010 */ PTR(294, 4), 1046 /* 0011 */ PTR(310, 3), 1047 /* 0100 */ PTR(318, 2), 1048 /* 0101 */ PTR(322, 2), 1049 /* 0110 */ PTR(326, 3), 1050 /* 0111 */ PTR(334, 2), 1051 /* 1000 */ PTR(338, 1), 1052 /* 1001 */ PTR(340, 2), 1053 /* 1010 */ PTR(344, 2), 1054 /* 1011 */ PTR(348, 2), 1055 /* 1100 */ PTR(352, 2), 1056 /* 1101 */ PTR(356, 2), 1057 /* 1110 */ V(1, 15, 4), 1058 /* 1111 */ V(15, 1, 4), 1059 1060 /* 0000 0001 ... */ 1061 /* 0000 */ V(15, 0, 4), /* 84 */ 1062 /* 0001 */ PTR(360, 1), 1063 /* 0010 */ PTR(362, 1), 1064 /* 0011 */ PTR(364, 1), 1065 /* 0100 */ V(14, 2, 4), 1066 /* 0101 */ PTR(366, 1), 1067 /* 0110 */ V(1, 14, 4), 1068 /* 0111 */ V(14, 1, 4), 1069 /* 1000 */ PTR(368, 1), 1070 /* 1001 */ PTR(370, 1), 1071 /* 1010 */ PTR(372, 1), 1072 /* 1011 */ PTR(374, 1), 1073 /* 1100 */ PTR(376, 1), 1074 /* 1101 */ PTR(378, 1), 1075 /* 1110 */ V(12, 6, 4), 1076 /* 1111 */ V(3, 13, 4), 1077 1078 /* 0000 0010 ... */ 1079 /* 0000 */ PTR(380, 1), /* 100 */ 1080 /* 0001 */ V(2, 13, 4), 1081 /* 0010 */ V(13, 2, 4), 1082 /* 0011 */ V(1, 13, 4), 1083 /* 0100 */ V(11, 7, 4), 1084 /* 0101 */ PTR(382, 1), 1085 /* 0110 */ PTR(384, 1), 1086 /* 0111 */ V(12, 3, 4), 1087 /* 1000 */ PTR(386, 1), 1088 /* 1001 */ V(4, 11, 4), 1089 /* 1010 */ V(13, 1, 3), 1090 /* 1011 */ V(13, 1, 3), 1091 /* 1100 */ V(0, 13, 4), 1092 /* 1101 */ V(13, 0, 4), 1093 /* 1110 */ V(8, 10, 4), 1094 /* 1111 */ V(10, 8, 4), 1095 1096 /* 0000 0011 ... */ 1097 /* 0000 */ V(4, 12, 4), /* 116 */ 1098 /* 0001 */ V(12, 4, 4), 1099 /* 0010 */ V(6, 11, 4), 1100 /* 0011 */ V(11, 6, 4), 1101 /* 0100 */ V(3, 12, 3), 1102 /* 0101 */ V(3, 12, 3), 1103 /* 0110 */ V(2, 12, 3), 1104 /* 0111 */ V(2, 12, 3), 1105 /* 1000 */ V(12, 2, 3), 1106 /* 1001 */ V(12, 2, 3), 1107 /* 1010 */ V(5, 11, 3), 1108 /* 1011 */ V(5, 11, 3), 1109 /* 1100 */ V(11, 5, 4), 1110 /* 1101 */ V(8, 9, 4), 1111 /* 1110 */ V(1, 12, 3), 1112 /* 1111 */ V(1, 12, 3), 1113 1114 /* 0000 0100 ... */ 1115 /* 0000 */ V(12, 1, 3), /* 132 */ 1116 /* 0001 */ V(12, 1, 3), 1117 /* 0010 */ V(9, 8, 4), 1118 /* 0011 */ V(0, 12, 4), 1119 /* 0100 */ V(12, 0, 3), 1120 /* 0101 */ V(12, 0, 3), 1121 /* 0110 */ V(11, 4, 4), 1122 /* 0111 */ V(6, 10, 4), 1123 /* 1000 */ V(10, 6, 4), 1124 /* 1001 */ V(7, 9, 4), 1125 /* 1010 */ V(3, 11, 3), 1126 /* 1011 */ V(3, 11, 3), 1127 /* 1100 */ V(11, 3, 3), 1128 /* 1101 */ V(11, 3, 3), 1129 /* 1110 */ V(8, 8, 4), 1130 /* 1111 */ V(5, 10, 4), 1131 1132 /* 0000 0101 ... */ 1133 /* 0000 */ V(2, 11, 3), /* 148 */ 1134 /* 0001 */ V(2, 11, 3), 1135 /* 0010 */ V(10, 5, 4), 1136 /* 0011 */ V(6, 9, 4), 1137 /* 0100 */ V(10, 4, 3), 1138 /* 0101 */ V(10, 4, 3), 1139 /* 0110 */ V(7, 8, 4), 1140 /* 0111 */ V(8, 7, 4), 1141 /* 1000 */ V(9, 4, 3), 1142 /* 1001 */ V(9, 4, 3), 1143 /* 1010 */ V(7, 7, 4), 1144 /* 1011 */ V(7, 6, 4), 1145 /* 1100 */ V(11, 2, 2), 1146 /* 1101 */ V(11, 2, 2), 1147 /* 1110 */ V(11, 2, 2), 1148 /* 1111 */ V(11, 2, 2), 1149 1150 /* 0000 0110 ... */ 1151 /* 000 */ V(1, 11, 2), /* 164 */ 1152 /* 001 */ V(1, 11, 2), 1153 /* 010 */ V(11, 1, 2), 1154 /* 011 */ V(11, 1, 2), 1155 /* 100 */ V(0, 11, 3), 1156 /* 101 */ V(11, 0, 3), 1157 /* 110 */ V(9, 6, 3), 1158 /* 111 */ V(4, 10, 3), 1159 1160 /* 0000 0111 ... */ 1161 /* 000 */ V(3, 10, 3), /* 172 */ 1162 /* 001 */ V(10, 3, 3), 1163 /* 010 */ V(5, 9, 3), 1164 /* 011 */ V(9, 5, 3), 1165 /* 100 */ V(2, 10, 2), 1166 /* 101 */ V(2, 10, 2), 1167 /* 110 */ V(10, 2, 2), 1168 /* 111 */ V(10, 2, 2), 1169 1170 /* 0000 1000 ... */ 1171 /* 000 */ V(1, 10, 2), /* 180 */ 1172 /* 001 */ V(1, 10, 2), 1173 /* 010 */ V(10, 1, 2), 1174 /* 011 */ V(10, 1, 2), 1175 /* 100 */ V(0, 10, 3), 1176 /* 101 */ V(6, 8, 3), 1177 /* 110 */ V(10, 0, 2), 1178 /* 111 */ V(10, 0, 2), 1179 1180 /* 0000 1001 ... */ 1181 /* 000 */ V(8, 6, 3), /* 188 */ 1182 /* 001 */ V(4, 9, 3), 1183 /* 010 */ V(9, 3, 2), 1184 /* 011 */ V(9, 3, 2), 1185 /* 100 */ V(3, 9, 3), 1186 /* 101 */ V(5, 8, 3), 1187 /* 110 */ V(8, 5, 3), 1188 /* 111 */ V(6, 7, 3), 1189 1190 /* 0000 1010 ... */ 1191 /* 000 */ V(2, 9, 2), /* 196 */ 1192 /* 001 */ V(2, 9, 2), 1193 /* 010 */ V(9, 2, 2), 1194 /* 011 */ V(9, 2, 2), 1195 /* 100 */ V(5, 7, 3), 1196 /* 101 */ V(7, 5, 3), 1197 /* 110 */ V(3, 8, 2), 1198 /* 111 */ V(3, 8, 2), 1199 1200 /* 0000 1011 ... */ 1201 /* 000 */ V(8, 3, 2), /* 204 */ 1202 /* 001 */ V(8, 3, 2), 1203 /* 010 */ V(6, 6, 3), 1204 /* 011 */ V(4, 7, 3), 1205 /* 100 */ V(7, 4, 3), 1206 /* 101 */ V(5, 6, 3), 1207 /* 110 */ V(6, 5, 3), 1208 /* 111 */ V(7, 3, 3), 1209 1210 /* 0000 1100 ... */ 1211 /* 0 */ V(1, 9, 1), /* 212 */ 1212 /* 1 */ V(9, 1, 1), 1213 1214 /* 0000 1101 ... */ 1215 /* 00 */ V(0, 9, 2), /* 214 */ 1216 /* 01 */ V(9, 0, 2), 1217 /* 10 */ V(4, 8, 2), 1218 /* 11 */ V(8, 4, 2), 1219 1220 /* 0000 1110 ... */ 1221 /* 000 */ V(7, 2, 2), /* 218 */ 1222 /* 001 */ V(7, 2, 2), 1223 /* 010 */ V(4, 6, 3), 1224 /* 011 */ V(6, 4, 3), 1225 /* 100 */ V(2, 8, 1), 1226 /* 101 */ V(2, 8, 1), 1227 /* 110 */ V(2, 8, 1), 1228 /* 111 */ V(2, 8, 1), 1229 1230 /* 0000 1111 ... */ 1231 /* 0 */ V(8, 2, 1), /* 226 */ 1232 /* 1 */ V(1, 8, 1), 1233 1234 /* 0001 0000 ... */ 1235 /* 00 */ V(3, 7, 2), /* 228 */ 1236 /* 01 */ V(2, 7, 2), 1237 /* 10 */ V(1, 7, 1), 1238 /* 11 */ V(1, 7, 1), 1239 1240 /* 0001 0001 ... */ 1241 /* 00 */ V(7, 1, 1), /* 232 */ 1242 /* 01 */ V(7, 1, 1), 1243 /* 10 */ V(5, 5, 2), 1244 /* 11 */ V(0, 7, 2), 1245 1246 /* 0001 0010 ... */ 1247 /* 00 */ V(7, 0, 2), /* 236 */ 1248 /* 01 */ V(3, 6, 2), 1249 /* 10 */ V(6, 3, 2), 1250 /* 11 */ V(4, 5, 2), 1251 1252 /* 0001 0011 ... */ 1253 /* 00 */ V(5, 4, 2), /* 240 */ 1254 /* 01 */ V(2, 6, 2), 1255 /* 10 */ V(6, 2, 2), 1256 /* 11 */ V(3, 5, 2), 1257 1258 /* 0001 0101 ... */ 1259 /* 0 */ V(0, 8, 1), /* 244 */ 1260 /* 1 */ V(8, 0, 1), 1261 1262 /* 0001 0110 ... */ 1263 /* 0 */ V(1, 6, 1), /* 246 */ 1264 /* 1 */ V(6, 1, 1), 1265 1266 /* 0001 0111 ... */ 1267 /* 0 */ V(0, 6, 1), /* 248 */ 1268 /* 1 */ V(6, 0, 1), 1269 1270 /* 0001 1000 ... */ 1271 /* 00 */ V(5, 3, 2), /* 250 */ 1272 /* 01 */ V(4, 4, 2), 1273 /* 10 */ V(2, 5, 1), 1274 /* 11 */ V(2, 5, 1), 1275 1276 /* 0001 1001 ... */ 1277 /* 0 */ V(5, 2, 1), /* 254 */ 1278 /* 1 */ V(0, 5, 1), 1279 1280 /* 0001 1100 ... */ 1281 /* 0 */ V(3, 4, 1), /* 256 */ 1282 /* 1 */ V(4, 3, 1), 1283 1284 /* 0001 1101 ... */ 1285 /* 0 */ V(5, 0, 1), /* 258 */ 1286 /* 1 */ V(2, 4, 1), 1287 1288 /* 0001 1110 ... */ 1289 /* 0 */ V(4, 2, 1), /* 260 */ 1290 /* 1 */ V(3, 3, 1), 1291 1292 /* 0000 0000 0000 ... */ 1293 /* 0000 */ PTR(388, 3), /* 262 */ 1294 /* 0001 */ V(15, 15, 4), 1295 /* 0010 */ V(14, 15, 4), 1296 /* 0011 */ V(13, 15, 4), 1297 /* 0100 */ V(14, 14, 4), 1298 /* 0101 */ V(12, 15, 4), 1299 /* 0110 */ V(13, 14, 4), 1300 /* 0111 */ V(11, 15, 4), 1301 /* 1000 */ V(15, 11, 4), 1302 /* 1001 */ V(12, 14, 4), 1303 /* 1010 */ V(13, 12, 4), 1304 /* 1011 */ PTR(396, 1), 1305 /* 1100 */ V(14, 12, 3), 1306 /* 1101 */ V(14, 12, 3), 1307 /* 1110 */ V(13, 13, 3), 1308 /* 1111 */ V(13, 13, 3), 1309 1310 /* 0000 0000 0001 ... */ 1311 /* 0000 */ V(15, 10, 4), /* 278 */ 1312 /* 0001 */ V(12, 13, 4), 1313 /* 0010 */ V(11, 14, 3), 1314 /* 0011 */ V(11, 14, 3), 1315 /* 0100 */ V(14, 11, 3), 1316 /* 0101 */ V(14, 11, 3), 1317 /* 0110 */ V(9, 15, 3), 1318 /* 0111 */ V(9, 15, 3), 1319 /* 1000 */ V(15, 9, 3), 1320 /* 1001 */ V(15, 9, 3), 1321 /* 1010 */ V(14, 10, 3), 1322 /* 1011 */ V(14, 10, 3), 1323 /* 1100 */ V(11, 13, 3), 1324 /* 1101 */ V(11, 13, 3), 1325 /* 1110 */ V(13, 11, 3), 1326 /* 1111 */ V(13, 11, 3), 1327 1328 /* 0000 0000 0010 ... */ 1329 /* 0000 */ V(8, 15, 3), /* 294 */ 1330 /* 0001 */ V(8, 15, 3), 1331 /* 0010 */ V(15, 8, 3), 1332 /* 0011 */ V(15, 8, 3), 1333 /* 0100 */ V(12, 12, 3), 1334 /* 0101 */ V(12, 12, 3), 1335 /* 0110 */ V(10, 14, 4), 1336 /* 0111 */ V(9, 14, 4), 1337 /* 1000 */ V(8, 14, 3), 1338 /* 1001 */ V(8, 14, 3), 1339 /* 1010 */ V(7, 15, 4), 1340 /* 1011 */ V(7, 14, 4), 1341 /* 1100 */ V(15, 7, 2), 1342 /* 1101 */ V(15, 7, 2), 1343 /* 1110 */ V(15, 7, 2), 1344 /* 1111 */ V(15, 7, 2), 1345 1346 /* 0000 0000 0011 ... */ 1347 /* 000 */ V(13, 10, 2), /* 310 */ 1348 /* 001 */ V(13, 10, 2), 1349 /* 010 */ V(10, 13, 3), 1350 /* 011 */ V(11, 12, 3), 1351 /* 100 */ V(12, 11, 3), 1352 /* 101 */ V(15, 6, 3), 1353 /* 110 */ V(6, 15, 2), 1354 /* 111 */ V(6, 15, 2), 1355 1356 /* 0000 0000 0100 ... */ 1357 /* 00 */ V(14, 8, 2), /* 318 */ 1358 /* 01 */ V(5, 15, 2), 1359 /* 10 */ V(9, 13, 2), 1360 /* 11 */ V(13, 9, 2), 1361 1362 /* 0000 0000 0101 ... */ 1363 /* 00 */ V(15, 5, 2), /* 322 */ 1364 /* 01 */ V(14, 7, 2), 1365 /* 10 */ V(10, 12, 2), 1366 /* 11 */ V(11, 11, 2), 1367 1368 /* 0000 0000 0110 ... */ 1369 /* 000 */ V(4, 15, 2), /* 326 */ 1370 /* 001 */ V(4, 15, 2), 1371 /* 010 */ V(15, 4, 2), 1372 /* 011 */ V(15, 4, 2), 1373 /* 100 */ V(12, 10, 3), 1374 /* 101 */ V(14, 6, 3), 1375 /* 110 */ V(15, 3, 2), 1376 /* 111 */ V(15, 3, 2), 1377 1378 /* 0000 0000 0111 ... */ 1379 /* 00 */ V(3, 15, 1), /* 334 */ 1380 /* 01 */ V(3, 15, 1), 1381 /* 10 */ V(8, 13, 2), 1382 /* 11 */ V(13, 8, 2), 1383 1384 /* 0000 0000 1000 ... */ 1385 /* 0 */ V(2, 15, 1), /* 338 */ 1386 /* 1 */ V(15, 2, 1), 1387 1388 /* 0000 0000 1001 ... */ 1389 /* 00 */ V(6, 14, 2), /* 340 */ 1390 /* 01 */ V(9, 12, 2), 1391 /* 10 */ V(0, 15, 1), 1392 /* 11 */ V(0, 15, 1), 1393 1394 /* 0000 0000 1010 ... */ 1395 /* 00 */ V(12, 9, 2), /* 344 */ 1396 /* 01 */ V(5, 14, 2), 1397 /* 10 */ V(10, 11, 1), 1398 /* 11 */ V(10, 11, 1), 1399 1400 /* 0000 0000 1011 ... */ 1401 /* 00 */ V(7, 13, 2), /* 348 */ 1402 /* 01 */ V(13, 7, 2), 1403 /* 10 */ V(4, 14, 1), 1404 /* 11 */ V(4, 14, 1), 1405 1406 /* 0000 0000 1100 ... */ 1407 /* 00 */ V(12, 8, 2), /* 352 */ 1408 /* 01 */ V(13, 6, 2), 1409 /* 10 */ V(3, 14, 1), 1410 /* 11 */ V(3, 14, 1), 1411 1412 /* 0000 0000 1101 ... */ 1413 /* 00 */ V(11, 9, 1), /* 356 */ 1414 /* 01 */ V(11, 9, 1), 1415 /* 10 */ V(9, 11, 2), 1416 /* 11 */ V(10, 10, 2), 1417 1418 /* 0000 0001 0001 ... */ 1419 /* 0 */ V(11, 10, 1), /* 360 */ 1420 /* 1 */ V(14, 5, 1), 1421 1422 /* 0000 0001 0010 ... */ 1423 /* 0 */ V(14, 4, 1), /* 362 */ 1424 /* 1 */ V(8, 12, 1), 1425 1426 /* 0000 0001 0011 ... */ 1427 /* 0 */ V(6, 13, 1), /* 364 */ 1428 /* 1 */ V(14, 3, 1), 1429 1430 /* 0000 0001 0101 ... */ 1431 /* 0 */ V(2, 14, 1), /* 366 */ 1432 /* 1 */ V(0, 14, 1), 1433 1434 /* 0000 0001 1000 ... */ 1435 /* 0 */ V(14, 0, 1), /* 368 */ 1436 /* 1 */ V(5, 13, 1), 1437 1438 /* 0000 0001 1001 ... */ 1439 /* 0 */ V(13, 5, 1), /* 370 */ 1440 /* 1 */ V(7, 12, 1), 1441 1442 /* 0000 0001 1010 ... */ 1443 /* 0 */ V(12, 7, 1), /* 372 */ 1444 /* 1 */ V(4, 13, 1), 1445 1446 /* 0000 0001 1011 ... */ 1447 /* 0 */ V(8, 11, 1), /* 374 */ 1448 /* 1 */ V(11, 8, 1), 1449 1450 /* 0000 0001 1100 ... */ 1451 /* 0 */ V(13, 4, 1), /* 376 */ 1452 /* 1 */ V(9, 10, 1), 1453 1454 /* 0000 0001 1101 ... */ 1455 /* 0 */ V(10, 9, 1), /* 378 */ 1456 /* 1 */ V(6, 12, 1), 1457 1458 /* 0000 0010 0000 ... */ 1459 /* 0 */ V(13, 3, 1), /* 380 */ 1460 /* 1 */ V(7, 11, 1), 1461 1462 /* 0000 0010 0101 ... */ 1463 /* 0 */ V(5, 12, 1), /* 382 */ 1464 /* 1 */ V(12, 5, 1), 1465 1466 /* 0000 0010 0110 ... */ 1467 /* 0 */ V(9, 9, 1), /* 384 */ 1468 /* 1 */ V(7, 10, 1), 1469 1470 /* 0000 0010 1000 ... */ 1471 /* 0 */ V(10, 7, 1), /* 386 */ 1472 /* 1 */ V(9, 7, 1), 1473 1474 /* 0000 0000 0000 0000 ... */ 1475 /* 000 */ V(15, 14, 3), /* 388 */ 1476 /* 001 */ V(15, 12, 3), 1477 /* 010 */ V(15, 13, 2), 1478 /* 011 */ V(15, 13, 2), 1479 /* 100 */ V(14, 13, 1), 1480 /* 101 */ V(14, 13, 1), 1481 /* 110 */ V(14, 13, 1), 1482 /* 111 */ V(14, 13, 1), 1483 1484 /* 0000 0000 0000 1011 ... */ 1485 /* 0 */ V(10, 15, 1), /* 396 */ 1486 /* 1 */ V(14, 9, 1) 1487 }; 1488 1489 static 1490 struct huffpair const hufftab15[] = { 1491 /* 0000 */ PTR(16, 4), 1492 /* 0001 */ PTR(32, 4), 1493 /* 0010 */ PTR(48, 4), 1494 /* 0011 */ PTR(64, 4), 1495 /* 0100 */ PTR(80, 4), 1496 /* 0101 */ PTR(96, 3), 1497 /* 0110 */ PTR(104, 3), 1498 /* 0111 */ PTR(112, 2), 1499 /* 1000 */ PTR(116, 1), 1500 /* 1001 */ PTR(118, 1), 1501 /* 1010 */ V(1, 1, 3), 1502 /* 1011 */ V(1, 1, 3), 1503 /* 1100 */ V(0, 1, 4), 1504 /* 1101 */ V(1, 0, 4), 1505 /* 1110 */ V(0, 0, 3), 1506 /* 1111 */ V(0, 0, 3), 1507 1508 /* 0000 ... */ 1509 /* 0000 */ PTR(120, 4), /* 16 */ 1510 /* 0001 */ PTR(136, 4), 1511 /* 0010 */ PTR(152, 4), 1512 /* 0011 */ PTR(168, 4), 1513 /* 0100 */ PTR(184, 4), 1514 /* 0101 */ PTR(200, 3), 1515 /* 0110 */ PTR(208, 3), 1516 /* 0111 */ PTR(216, 4), 1517 /* 1000 */ PTR(232, 3), 1518 /* 1001 */ PTR(240, 3), 1519 /* 1010 */ PTR(248, 3), 1520 /* 1011 */ PTR(256, 3), 1521 /* 1100 */ PTR(264, 2), 1522 /* 1101 */ PTR(268, 3), 1523 /* 1110 */ PTR(276, 3), 1524 /* 1111 */ PTR(284, 2), 1525 1526 /* 0001 ... */ 1527 /* 0000 */ PTR(288, 2), /* 32 */ 1528 /* 0001 */ PTR(292, 2), 1529 /* 0010 */ PTR(296, 2), 1530 /* 0011 */ PTR(300, 2), 1531 /* 0100 */ PTR(304, 2), 1532 /* 0101 */ PTR(308, 2), 1533 /* 0110 */ PTR(312, 2), 1534 /* 0111 */ PTR(316, 2), 1535 /* 1000 */ PTR(320, 1), 1536 /* 1001 */ PTR(322, 1), 1537 /* 1010 */ PTR(324, 1), 1538 /* 1011 */ PTR(326, 2), 1539 /* 1100 */ PTR(330, 1), 1540 /* 1101 */ PTR(332, 1), 1541 /* 1110 */ PTR(334, 2), 1542 /* 1111 */ PTR(338, 1), 1543 1544 /* 0010 ... */ 1545 /* 0000 */ PTR(340, 1), /* 48 */ 1546 /* 0001 */ PTR(342, 1), 1547 /* 0010 */ V(9, 1, 4), 1548 /* 0011 */ PTR(344, 1), 1549 /* 0100 */ PTR(346, 1), 1550 /* 0101 */ PTR(348, 1), 1551 /* 0110 */ PTR(350, 1), 1552 /* 0111 */ PTR(352, 1), 1553 /* 1000 */ V(2, 8, 4), 1554 /* 1001 */ V(8, 2, 4), 1555 /* 1010 */ V(1, 8, 4), 1556 /* 1011 */ V(8, 1, 4), 1557 /* 1100 */ PTR(354, 1), 1558 /* 1101 */ PTR(356, 1), 1559 /* 1110 */ PTR(358, 1), 1560 /* 1111 */ PTR(360, 1), 1561 1562 /* 0011 ... */ 1563 /* 0000 */ V(2, 7, 4), /* 64 */ 1564 /* 0001 */ V(7, 2, 4), 1565 /* 0010 */ V(6, 4, 4), 1566 /* 0011 */ V(1, 7, 4), 1567 /* 0100 */ V(5, 5, 4), 1568 /* 0101 */ V(7, 1, 4), 1569 /* 0110 */ PTR(362, 1), 1570 /* 0111 */ V(3, 6, 4), 1571 /* 1000 */ V(6, 3, 4), 1572 /* 1001 */ V(4, 5, 4), 1573 /* 1010 */ V(5, 4, 4), 1574 /* 1011 */ V(2, 6, 4), 1575 /* 1100 */ V(6, 2, 4), 1576 /* 1101 */ V(1, 6, 4), 1577 /* 1110 */ PTR(364, 1), 1578 /* 1111 */ V(3, 5, 4), 1579 1580 /* 0100 ... */ 1581 /* 0000 */ V(6, 1, 3), /* 80 */ 1582 /* 0001 */ V(6, 1, 3), 1583 /* 0010 */ V(5, 3, 4), 1584 /* 0011 */ V(4, 4, 4), 1585 /* 0100 */ V(2, 5, 3), 1586 /* 0101 */ V(2, 5, 3), 1587 /* 0110 */ V(5, 2, 3), 1588 /* 0111 */ V(5, 2, 3), 1589 /* 1000 */ V(1, 5, 3), 1590 /* 1001 */ V(1, 5, 3), 1591 /* 1010 */ V(5, 1, 3), 1592 /* 1011 */ V(5, 1, 3), 1593 /* 1100 */ V(0, 5, 4), 1594 /* 1101 */ V(5, 0, 4), 1595 /* 1110 */ V(3, 4, 3), 1596 /* 1111 */ V(3, 4, 3), 1597 1598 /* 0101 ... */ 1599 /* 000 */ V(4, 3, 3), /* 96 */ 1600 /* 001 */ V(2, 4, 3), 1601 /* 010 */ V(4, 2, 3), 1602 /* 011 */ V(3, 3, 3), 1603 /* 100 */ V(4, 1, 2), 1604 /* 101 */ V(4, 1, 2), 1605 /* 110 */ V(1, 4, 3), 1606 /* 111 */ V(0, 4, 3), 1607 1608 /* 0110 ... */ 1609 /* 000 */ V(2, 3, 2), /* 104 */ 1610 /* 001 */ V(2, 3, 2), 1611 /* 010 */ V(3, 2, 2), 1612 /* 011 */ V(3, 2, 2), 1613 /* 100 */ V(4, 0, 3), 1614 /* 101 */ V(0, 3, 3), 1615 /* 110 */ V(1, 3, 2), 1616 /* 111 */ V(1, 3, 2), 1617 1618 /* 0111 ... */ 1619 /* 00 */ V(3, 1, 2), /* 112 */ 1620 /* 01 */ V(3, 0, 2), 1621 /* 10 */ V(2, 2, 1), 1622 /* 11 */ V(2, 2, 1), 1623 1624 /* 1000 ... */ 1625 /* 0 */ V(1, 2, 1), /* 116 */ 1626 /* 1 */ V(2, 1, 1), 1627 1628 /* 1001 ... */ 1629 /* 0 */ V(0, 2, 1), /* 118 */ 1630 /* 1 */ V(2, 0, 1), 1631 1632 /* 0000 0000 ... */ 1633 /* 0000 */ PTR(366, 1), /* 120 */ 1634 /* 0001 */ PTR(368, 1), 1635 /* 0010 */ V(14, 14, 4), 1636 /* 0011 */ PTR(370, 1), 1637 /* 0100 */ PTR(372, 1), 1638 /* 0101 */ PTR(374, 1), 1639 /* 0110 */ V(15, 11, 4), 1640 /* 0111 */ PTR(376, 1), 1641 /* 1000 */ V(13, 13, 4), 1642 /* 1001 */ V(10, 15, 4), 1643 /* 1010 */ V(15, 10, 4), 1644 /* 1011 */ V(11, 14, 4), 1645 /* 1100 */ V(14, 11, 4), 1646 /* 1101 */ V(12, 13, 4), 1647 /* 1110 */ V(13, 12, 4), 1648 /* 1111 */ V(9, 15, 4), 1649 1650 /* 0000 0001 ... */ 1651 /* 0000 */ V(15, 9, 4), /* 136 */ 1652 /* 0001 */ V(14, 10, 4), 1653 /* 0010 */ V(11, 13, 4), 1654 /* 0011 */ V(13, 11, 4), 1655 /* 0100 */ V(8, 15, 4), 1656 /* 0101 */ V(15, 8, 4), 1657 /* 0110 */ V(12, 12, 4), 1658 /* 0111 */ V(9, 14, 4), 1659 /* 1000 */ V(14, 9, 4), 1660 /* 1001 */ V(7, 15, 4), 1661 /* 1010 */ V(15, 7, 4), 1662 /* 1011 */ V(10, 13, 4), 1663 /* 1100 */ V(13, 10, 4), 1664 /* 1101 */ V(11, 12, 4), 1665 /* 1110 */ V(6, 15, 4), 1666 /* 1111 */ PTR(378, 1), 1667 1668 /* 0000 0010 ... */ 1669 /* 0000 */ V(12, 11, 3), /* 152 */ 1670 /* 0001 */ V(12, 11, 3), 1671 /* 0010 */ V(15, 6, 3), 1672 /* 0011 */ V(15, 6, 3), 1673 /* 0100 */ V(8, 14, 4), 1674 /* 0101 */ V(14, 8, 4), 1675 /* 0110 */ V(5, 15, 4), 1676 /* 0111 */ V(9, 13, 4), 1677 /* 1000 */ V(15, 5, 3), 1678 /* 1001 */ V(15, 5, 3), 1679 /* 1010 */ V(7, 14, 3), 1680 /* 1011 */ V(7, 14, 3), 1681 /* 1100 */ V(14, 7, 3), 1682 /* 1101 */ V(14, 7, 3), 1683 /* 1110 */ V(10, 12, 3), 1684 /* 1111 */ V(10, 12, 3), 1685 1686 /* 0000 0011 ... */ 1687 /* 0000 */ V(12, 10, 3), /* 168 */ 1688 /* 0001 */ V(12, 10, 3), 1689 /* 0010 */ V(11, 11, 3), 1690 /* 0011 */ V(11, 11, 3), 1691 /* 0100 */ V(13, 9, 4), 1692 /* 0101 */ V(8, 13, 4), 1693 /* 0110 */ V(4, 15, 3), 1694 /* 0111 */ V(4, 15, 3), 1695 /* 1000 */ V(15, 4, 3), 1696 /* 1001 */ V(15, 4, 3), 1697 /* 1010 */ V(3, 15, 3), 1698 /* 1011 */ V(3, 15, 3), 1699 /* 1100 */ V(15, 3, 3), 1700 /* 1101 */ V(15, 3, 3), 1701 /* 1110 */ V(13, 8, 3), 1702 /* 1111 */ V(13, 8, 3), 1703 1704 /* 0000 0100 ... */ 1705 /* 0000 */ V(14, 6, 3), /* 184 */ 1706 /* 0001 */ V(14, 6, 3), 1707 /* 0010 */ V(2, 15, 3), 1708 /* 0011 */ V(2, 15, 3), 1709 /* 0100 */ V(15, 2, 3), 1710 /* 0101 */ V(15, 2, 3), 1711 /* 0110 */ V(6, 14, 4), 1712 /* 0111 */ V(15, 0, 4), 1713 /* 1000 */ V(1, 15, 3), 1714 /* 1001 */ V(1, 15, 3), 1715 /* 1010 */ V(15, 1, 3), 1716 /* 1011 */ V(15, 1, 3), 1717 /* 1100 */ V(9, 12, 3), 1718 /* 1101 */ V(9, 12, 3), 1719 /* 1110 */ V(12, 9, 3), 1720 /* 1111 */ V(12, 9, 3), 1721 1722 /* 0000 0101 ... */ 1723 /* 000 */ V(5, 14, 3), /* 200 */ 1724 /* 001 */ V(10, 11, 3), 1725 /* 010 */ V(11, 10, 3), 1726 /* 011 */ V(14, 5, 3), 1727 /* 100 */ V(7, 13, 3), 1728 /* 101 */ V(13, 7, 3), 1729 /* 110 */ V(4, 14, 3), 1730 /* 111 */ V(14, 4, 3), 1731 1732 /* 0000 0110 ... */ 1733 /* 000 */ V(8, 12, 3), /* 208 */ 1734 /* 001 */ V(12, 8, 3), 1735 /* 010 */ V(3, 14, 3), 1736 /* 011 */ V(6, 13, 3), 1737 /* 100 */ V(13, 6, 3), 1738 /* 101 */ V(14, 3, 3), 1739 /* 110 */ V(9, 11, 3), 1740 /* 111 */ V(11, 9, 3), 1741 1742 /* 0000 0111 ... */ 1743 /* 0000 */ V(2, 14, 3), /* 216 */ 1744 /* 0001 */ V(2, 14, 3), 1745 /* 0010 */ V(10, 10, 3), 1746 /* 0011 */ V(10, 10, 3), 1747 /* 0100 */ V(14, 2, 3), 1748 /* 0101 */ V(14, 2, 3), 1749 /* 0110 */ V(1, 14, 3), 1750 /* 0111 */ V(1, 14, 3), 1751 /* 1000 */ V(14, 1, 3), 1752 /* 1001 */ V(14, 1, 3), 1753 /* 1010 */ V(0, 14, 4), 1754 /* 1011 */ V(14, 0, 4), 1755 /* 1100 */ V(5, 13, 3), 1756 /* 1101 */ V(5, 13, 3), 1757 /* 1110 */ V(13, 5, 3), 1758 /* 1111 */ V(13, 5, 3), 1759 1760 /* 0000 1000 ... */ 1761 /* 000 */ V(7, 12, 3), /* 232 */ 1762 /* 001 */ V(12, 7, 3), 1763 /* 010 */ V(4, 13, 3), 1764 /* 011 */ V(8, 11, 3), 1765 /* 100 */ V(13, 4, 2), 1766 /* 101 */ V(13, 4, 2), 1767 /* 110 */ V(11, 8, 3), 1768 /* 111 */ V(9, 10, 3), 1769 1770 /* 0000 1001 ... */ 1771 /* 000 */ V(10, 9, 3), /* 240 */ 1772 /* 001 */ V(6, 12, 3), 1773 /* 010 */ V(12, 6, 3), 1774 /* 011 */ V(3, 13, 3), 1775 /* 100 */ V(13, 3, 2), 1776 /* 101 */ V(13, 3, 2), 1777 /* 110 */ V(13, 2, 2), 1778 /* 111 */ V(13, 2, 2), 1779 1780 /* 0000 1010 ... */ 1781 /* 000 */ V(2, 13, 3), /* 248 */ 1782 /* 001 */ V(0, 13, 3), 1783 /* 010 */ V(1, 13, 2), 1784 /* 011 */ V(1, 13, 2), 1785 /* 100 */ V(7, 11, 2), 1786 /* 101 */ V(7, 11, 2), 1787 /* 110 */ V(11, 7, 2), 1788 /* 111 */ V(11, 7, 2), 1789 1790 /* 0000 1011 ... */ 1791 /* 000 */ V(13, 1, 2), /* 256 */ 1792 /* 001 */ V(13, 1, 2), 1793 /* 010 */ V(5, 12, 3), 1794 /* 011 */ V(13, 0, 3), 1795 /* 100 */ V(12, 5, 2), 1796 /* 101 */ V(12, 5, 2), 1797 /* 110 */ V(8, 10, 2), 1798 /* 111 */ V(8, 10, 2), 1799 1800 /* 0000 1100 ... */ 1801 /* 00 */ V(10, 8, 2), /* 264 */ 1802 /* 01 */ V(4, 12, 2), 1803 /* 10 */ V(12, 4, 2), 1804 /* 11 */ V(6, 11, 2), 1805 1806 /* 0000 1101 ... */ 1807 /* 000 */ V(11, 6, 2), /* 268 */ 1808 /* 001 */ V(11, 6, 2), 1809 /* 010 */ V(9, 9, 3), 1810 /* 011 */ V(0, 12, 3), 1811 /* 100 */ V(3, 12, 2), 1812 /* 101 */ V(3, 12, 2), 1813 /* 110 */ V(12, 3, 2), 1814 /* 111 */ V(12, 3, 2), 1815 1816 /* 0000 1110 ... */ 1817 /* 000 */ V(7, 10, 2), /* 276 */ 1818 /* 001 */ V(7, 10, 2), 1819 /* 010 */ V(10, 7, 2), 1820 /* 011 */ V(10, 7, 2), 1821 /* 100 */ V(10, 6, 2), 1822 /* 101 */ V(10, 6, 2), 1823 /* 110 */ V(12, 0, 3), 1824 /* 111 */ V(0, 11, 3), 1825 1826 /* 0000 1111 ... */ 1827 /* 00 */ V(12, 2, 1), /* 284 */ 1828 /* 01 */ V(12, 2, 1), 1829 /* 10 */ V(2, 12, 2), 1830 /* 11 */ V(5, 11, 2), 1831 1832 /* 0001 0000 ... */ 1833 /* 00 */ V(11, 5, 2), /* 288 */ 1834 /* 01 */ V(1, 12, 2), 1835 /* 10 */ V(8, 9, 2), 1836 /* 11 */ V(9, 8, 2), 1837 1838 /* 0001 0001 ... */ 1839 /* 00 */ V(12, 1, 2), /* 292 */ 1840 /* 01 */ V(4, 11, 2), 1841 /* 10 */ V(11, 4, 2), 1842 /* 11 */ V(6, 10, 2), 1843 1844 /* 0001 0010 ... */ 1845 /* 00 */ V(3, 11, 2), /* 296 */ 1846 /* 01 */ V(7, 9, 2), 1847 /* 10 */ V(11, 3, 1), 1848 /* 11 */ V(11, 3, 1), 1849 1850 /* 0001 0011 ... */ 1851 /* 00 */ V(9, 7, 2), /* 300 */ 1852 /* 01 */ V(8, 8, 2), 1853 /* 10 */ V(2, 11, 2), 1854 /* 11 */ V(5, 10, 2), 1855 1856 /* 0001 0100 ... */ 1857 /* 00 */ V(11, 2, 1), /* 304 */ 1858 /* 01 */ V(11, 2, 1), 1859 /* 10 */ V(10, 5, 2), 1860 /* 11 */ V(1, 11, 2), 1861 1862 /* 0001 0101 ... */ 1863 /* 00 */ V(11, 1, 1), /* 308 */ 1864 /* 01 */ V(11, 1, 1), 1865 /* 10 */ V(11, 0, 2), 1866 /* 11 */ V(6, 9, 2), 1867 1868 /* 0001 0110 ... */ 1869 /* 00 */ V(9, 6, 2), /* 312 */ 1870 /* 01 */ V(4, 10, 2), 1871 /* 10 */ V(10, 4, 2), 1872 /* 11 */ V(7, 8, 2), 1873 1874 /* 0001 0111 ... */ 1875 /* 00 */ V(8, 7, 2), /* 316 */ 1876 /* 01 */ V(3, 10, 2), 1877 /* 10 */ V(10, 3, 1), 1878 /* 11 */ V(10, 3, 1), 1879 1880 /* 0001 1000 ... */ 1881 /* 0 */ V(5, 9, 1), /* 320 */ 1882 /* 1 */ V(9, 5, 1), 1883 1884 /* 0001 1001 ... */ 1885 /* 0 */ V(2, 10, 1), /* 322 */ 1886 /* 1 */ V(10, 2, 1), 1887 1888 /* 0001 1010 ... */ 1889 /* 0 */ V(1, 10, 1), /* 324 */ 1890 /* 1 */ V(10, 1, 1), 1891 1892 /* 0001 1011 ... */ 1893 /* 00 */ V(0, 10, 2), /* 326 */ 1894 /* 01 */ V(10, 0, 2), 1895 /* 10 */ V(6, 8, 1), 1896 /* 11 */ V(6, 8, 1), 1897 1898 /* 0001 1100 ... */ 1899 /* 0 */ V(8, 6, 1), /* 330 */ 1900 /* 1 */ V(4, 9, 1), 1901 1902 /* 0001 1101 ... */ 1903 /* 0 */ V(9, 4, 1), /* 332 */ 1904 /* 1 */ V(3, 9, 1), 1905 1906 /* 0001 1110 ... */ 1907 /* 00 */ V(9, 3, 1), /* 334 */ 1908 /* 01 */ V(9, 3, 1), 1909 /* 10 */ V(7, 7, 2), 1910 /* 11 */ V(0, 9, 2), 1911 1912 /* 0001 1111 ... */ 1913 /* 0 */ V(5, 8, 1), /* 338 */ 1914 /* 1 */ V(8, 5, 1), 1915 1916 /* 0010 0000 ... */ 1917 /* 0 */ V(2, 9, 1), /* 340 */ 1918 /* 1 */ V(6, 7, 1), 1919 1920 /* 0010 0001 ... */ 1921 /* 0 */ V(7, 6, 1), /* 342 */ 1922 /* 1 */ V(9, 2, 1), 1923 1924 /* 0010 0011 ... */ 1925 /* 0 */ V(1, 9, 1), /* 344 */ 1926 /* 1 */ V(9, 0, 1), 1927 1928 /* 0010 0100 ... */ 1929 /* 0 */ V(4, 8, 1), /* 346 */ 1930 /* 1 */ V(8, 4, 1), 1931 1932 /* 0010 0101 ... */ 1933 /* 0 */ V(5, 7, 1), /* 348 */ 1934 /* 1 */ V(7, 5, 1), 1935 1936 /* 0010 0110 ... */ 1937 /* 0 */ V(3, 8, 1), /* 350 */ 1938 /* 1 */ V(8, 3, 1), 1939 1940 /* 0010 0111 ... */ 1941 /* 0 */ V(6, 6, 1), /* 352 */ 1942 /* 1 */ V(4, 7, 1), 1943 1944 /* 0010 1100 ... */ 1945 /* 0 */ V(7, 4, 1), /* 354 */ 1946 /* 1 */ V(0, 8, 1), 1947 1948 /* 0010 1101 ... */ 1949 /* 0 */ V(8, 0, 1), /* 356 */ 1950 /* 1 */ V(5, 6, 1), 1951 1952 /* 0010 1110 ... */ 1953 /* 0 */ V(6, 5, 1), /* 358 */ 1954 /* 1 */ V(3, 7, 1), 1955 1956 /* 0010 1111 ... */ 1957 /* 0 */ V(7, 3, 1), /* 360 */ 1958 /* 1 */ V(4, 6, 1), 1959 1960 /* 0011 0110 ... */ 1961 /* 0 */ V(0, 7, 1), /* 362 */ 1962 /* 1 */ V(7, 0, 1), 1963 1964 /* 0011 1110 ... */ 1965 /* 0 */ V(0, 6, 1), /* 364 */ 1966 /* 1 */ V(6, 0, 1), 1967 1968 /* 0000 0000 0000 ... */ 1969 /* 0 */ V(15, 15, 1), /* 366 */ 1970 /* 1 */ V(14, 15, 1), 1971 1972 /* 0000 0000 0001 ... */ 1973 /* 0 */ V(15, 14, 1), /* 368 */ 1974 /* 1 */ V(13, 15, 1), 1975 1976 /* 0000 0000 0011 ... */ 1977 /* 0 */ V(15, 13, 1), /* 370 */ 1978 /* 1 */ V(12, 15, 1), 1979 1980 /* 0000 0000 0100 ... */ 1981 /* 0 */ V(15, 12, 1), /* 372 */ 1982 /* 1 */ V(13, 14, 1), 1983 1984 /* 0000 0000 0101 ... */ 1985 /* 0 */ V(14, 13, 1), /* 374 */ 1986 /* 1 */ V(11, 15, 1), 1987 1988 /* 0000 0000 0111 ... */ 1989 /* 0 */ V(12, 14, 1), /* 376 */ 1990 /* 1 */ V(14, 12, 1), 1991 1992 /* 0000 0001 1111 ... */ 1993 /* 0 */ V(10, 14, 1), /* 378 */ 1994 /* 1 */ V(0, 15, 1) 1995 }; 1996 1997 static 1998 struct huffpair const hufftab16[] = { 1999 /* 0000 */ PTR(16, 4), 2000 /* 0001 */ PTR(32, 4), 2001 /* 0010 */ PTR(48, 4), 2002 /* 0011 */ PTR(64, 2), 2003 /* 0100 */ V(1, 1, 4), 2004 /* 0101 */ V(0, 1, 4), 2005 /* 0110 */ V(1, 0, 3), 2006 /* 0111 */ V(1, 0, 3), 2007 /* 1000 */ V(0, 0, 1), 2008 /* 1001 */ V(0, 0, 1), 2009 /* 1010 */ V(0, 0, 1), 2010 /* 1011 */ V(0, 0, 1), 2011 /* 1100 */ V(0, 0, 1), 2012 /* 1101 */ V(0, 0, 1), 2013 /* 1110 */ V(0, 0, 1), 2014 /* 1111 */ V(0, 0, 1), 2015 2016 /* 0000 ... */ 2017 /* 0000 */ PTR(68, 3), /* 16 */ 2018 /* 0001 */ PTR(76, 3), 2019 /* 0010 */ PTR(84, 2), 2020 /* 0011 */ V(15, 15, 4), 2021 /* 0100 */ PTR(88, 2), 2022 /* 0101 */ PTR(92, 1), 2023 /* 0110 */ PTR(94, 4), 2024 /* 0111 */ V(15, 2, 4), 2025 /* 1000 */ PTR(110, 1), 2026 /* 1001 */ V(1, 15, 4), 2027 /* 1010 */ V(15, 1, 4), 2028 /* 1011 */ PTR(112, 4), 2029 /* 1100 */ PTR(128, 4), 2030 /* 1101 */ PTR(144, 4), 2031 /* 1110 */ PTR(160, 4), 2032 /* 1111 */ PTR(176, 4), 2033 2034 /* 0001 ... */ 2035 /* 0000 */ PTR(192, 4), /* 32 */ 2036 /* 0001 */ PTR(208, 3), 2037 /* 0010 */ PTR(216, 3), 2038 /* 0011 */ PTR(224, 3), 2039 /* 0100 */ PTR(232, 3), 2040 /* 0101 */ PTR(240, 3), 2041 /* 0110 */ PTR(248, 3), 2042 /* 0111 */ PTR(256, 3), 2043 /* 1000 */ PTR(264, 2), 2044 /* 1001 */ PTR(268, 2), 2045 /* 1010 */ PTR(272, 1), 2046 /* 1011 */ PTR(274, 2), 2047 /* 1100 */ PTR(278, 2), 2048 /* 1101 */ PTR(282, 1), 2049 /* 1110 */ V(5, 1, 4), 2050 /* 1111 */ PTR(284, 1), 2051 2052 /* 0010 ... */ 2053 /* 0000 */ PTR(286, 1), /* 48 */ 2054 /* 0001 */ PTR(288, 1), 2055 /* 0010 */ PTR(290, 1), 2056 /* 0011 */ V(1, 4, 4), 2057 /* 0100 */ V(4, 1, 4), 2058 /* 0101 */ PTR(292, 1), 2059 /* 0110 */ V(2, 3, 4), 2060 /* 0111 */ V(3, 2, 4), 2061 /* 1000 */ V(1, 3, 3), 2062 /* 1001 */ V(1, 3, 3), 2063 /* 1010 */ V(3, 1, 3), 2064 /* 1011 */ V(3, 1, 3), 2065 /* 1100 */ V(0, 3, 4), 2066 /* 1101 */ V(3, 0, 4), 2067 /* 1110 */ V(2, 2, 3), 2068 /* 1111 */ V(2, 2, 3), 2069 2070 /* 0011 ... */ 2071 /* 00 */ V(1, 2, 2), /* 64 */ 2072 /* 01 */ V(2, 1, 2), 2073 /* 10 */ V(0, 2, 2), 2074 /* 11 */ V(2, 0, 2), 2075 2076 /* 0000 0000 ... */ 2077 /* 000 */ V(14, 15, 3), /* 68 */ 2078 /* 001 */ V(15, 14, 3), 2079 /* 010 */ V(13, 15, 3), 2080 /* 011 */ V(15, 13, 3), 2081 /* 100 */ V(12, 15, 3), 2082 /* 101 */ V(15, 12, 3), 2083 /* 110 */ V(11, 15, 3), 2084 /* 111 */ V(15, 11, 3), 2085 2086 /* 0000 0001 ... */ 2087 /* 000 */ V(10, 15, 2), /* 76 */ 2088 /* 001 */ V(10, 15, 2), 2089 /* 010 */ V(15, 10, 3), 2090 /* 011 */ V(9, 15, 3), 2091 /* 100 */ V(15, 9, 3), 2092 /* 101 */ V(15, 8, 3), 2093 /* 110 */ V(8, 15, 2), 2094 /* 111 */ V(8, 15, 2), 2095 2096 /* 0000 0010 ... */ 2097 /* 00 */ V(7, 15, 2), /* 84 */ 2098 /* 01 */ V(15, 7, 2), 2099 /* 10 */ V(6, 15, 2), 2100 /* 11 */ V(15, 6, 2), 2101 2102 /* 0000 0100 ... */ 2103 /* 00 */ V(5, 15, 2), /* 88 */ 2104 /* 01 */ V(15, 5, 2), 2105 /* 10 */ V(4, 15, 1), 2106 /* 11 */ V(4, 15, 1), 2107 2108 /* 0000 0101 ... */ 2109 /* 0 */ V(15, 4, 1), /* 92 */ 2110 /* 1 */ V(15, 3, 1), 2111 2112 /* 0000 0110 ... */ 2113 /* 0000 */ V(15, 0, 1), /* 94 */ 2114 /* 0001 */ V(15, 0, 1), 2115 /* 0010 */ V(15, 0, 1), 2116 /* 0011 */ V(15, 0, 1), 2117 /* 0100 */ V(15, 0, 1), 2118 /* 0101 */ V(15, 0, 1), 2119 /* 0110 */ V(15, 0, 1), 2120 /* 0111 */ V(15, 0, 1), 2121 /* 1000 */ V(3, 15, 2), 2122 /* 1001 */ V(3, 15, 2), 2123 /* 1010 */ V(3, 15, 2), 2124 /* 1011 */ V(3, 15, 2), 2125 /* 1100 */ PTR(294, 4), 2126 /* 1101 */ PTR(310, 3), 2127 /* 1110 */ PTR(318, 3), 2128 /* 1111 */ PTR(326, 3), 2129 2130 /* 0000 1000 ... */ 2131 /* 0 */ V(2, 15, 1), /* 110 */ 2132 /* 1 */ V(0, 15, 1), 2133 2134 /* 0000 1011 ... */ 2135 /* 0000 */ PTR(334, 2), /* 112 */ 2136 /* 0001 */ PTR(338, 2), 2137 /* 0010 */ PTR(342, 2), 2138 /* 0011 */ PTR(346, 1), 2139 /* 0100 */ PTR(348, 2), 2140 /* 0101 */ PTR(352, 2), 2141 /* 0110 */ PTR(356, 1), 2142 /* 0111 */ PTR(358, 2), 2143 /* 1000 */ PTR(362, 2), 2144 /* 1001 */ PTR(366, 2), 2145 /* 1010 */ PTR(370, 2), 2146 /* 1011 */ V(14, 3, 4), 2147 /* 1100 */ PTR(374, 1), 2148 /* 1101 */ PTR(376, 1), 2149 /* 1110 */ PTR(378, 1), 2150 /* 1111 */ PTR(380, 1), 2151 2152 /* 0000 1100 ... */ 2153 /* 0000 */ PTR(382, 1), /* 128 */ 2154 /* 0001 */ PTR(384, 1), 2155 /* 0010 */ PTR(386, 1), 2156 /* 0011 */ V(0, 13, 4), 2157 /* 0100 */ PTR(388, 1), 2158 /* 0101 */ PTR(390, 1), 2159 /* 0110 */ PTR(392, 1), 2160 /* 0111 */ V(3, 12, 4), 2161 /* 1000 */ PTR(394, 1), 2162 /* 1001 */ V(1, 12, 4), 2163 /* 1010 */ V(12, 0, 4), 2164 /* 1011 */ PTR(396, 1), 2165 /* 1100 */ V(14, 2, 3), 2166 /* 1101 */ V(14, 2, 3), 2167 /* 1110 */ V(2, 14, 4), 2168 /* 1111 */ V(1, 14, 4), 2169 2170 /* 0000 1101 ... */ 2171 /* 0000 */ V(13, 3, 4), /* 144 */ 2172 /* 0001 */ V(2, 13, 4), 2173 /* 0010 */ V(13, 2, 4), 2174 /* 0011 */ V(13, 1, 4), 2175 /* 0100 */ V(3, 11, 4), 2176 /* 0101 */ PTR(398, 1), 2177 /* 0110 */ V(1, 13, 3), 2178 /* 0111 */ V(1, 13, 3), 2179 /* 1000 */ V(12, 4, 4), 2180 /* 1001 */ V(6, 11, 4), 2181 /* 1010 */ V(12, 3, 4), 2182 /* 1011 */ V(10, 7, 4), 2183 /* 1100 */ V(2, 12, 3), 2184 /* 1101 */ V(2, 12, 3), 2185 /* 1110 */ V(12, 2, 4), 2186 /* 1111 */ V(11, 5, 4), 2187 2188 /* 0000 1110 ... */ 2189 /* 0000 */ V(12, 1, 4), /* 160 */ 2190 /* 0001 */ V(0, 12, 4), 2191 /* 0010 */ V(4, 11, 4), 2192 /* 0011 */ V(11, 4, 4), 2193 /* 0100 */ V(6, 10, 4), 2194 /* 0101 */ V(10, 6, 4), 2195 /* 0110 */ V(11, 3, 3), 2196 /* 0111 */ V(11, 3, 3), 2197 /* 1000 */ V(5, 10, 4), 2198 /* 1001 */ V(10, 5, 4), 2199 /* 1010 */ V(2, 11, 3), 2200 /* 1011 */ V(2, 11, 3), 2201 /* 1100 */ V(11, 2, 3), 2202 /* 1101 */ V(11, 2, 3), 2203 /* 1110 */ V(1, 11, 3), 2204 /* 1111 */ V(1, 11, 3), 2205 2206 /* 0000 1111 ... */ 2207 /* 0000 */ V(11, 1, 3), /* 176 */ 2208 /* 0001 */ V(11, 1, 3), 2209 /* 0010 */ V(0, 11, 4), 2210 /* 0011 */ V(11, 0, 4), 2211 /* 0100 */ V(6, 9, 4), 2212 /* 0101 */ V(9, 6, 4), 2213 /* 0110 */ V(4, 10, 4), 2214 /* 0111 */ V(10, 4, 4), 2215 /* 1000 */ V(7, 8, 4), 2216 /* 1001 */ V(8, 7, 4), 2217 /* 1010 */ V(10, 3, 3), 2218 /* 1011 */ V(10, 3, 3), 2219 /* 1100 */ V(3, 10, 4), 2220 /* 1101 */ V(5, 9, 4), 2221 /* 1110 */ V(2, 10, 3), 2222 /* 1111 */ V(2, 10, 3), 2223 2224 /* 0001 0000 ... */ 2225 /* 0000 */ V(9, 5, 4), /* 192 */ 2226 /* 0001 */ V(6, 8, 4), 2227 /* 0010 */ V(10, 1, 3), 2228 /* 0011 */ V(10, 1, 3), 2229 /* 0100 */ V(8, 6, 4), 2230 /* 0101 */ V(7, 7, 4), 2231 /* 0110 */ V(9, 4, 3), 2232 /* 0111 */ V(9, 4, 3), 2233 /* 1000 */ V(4, 9, 4), 2234 /* 1001 */ V(5, 7, 4), 2235 /* 1010 */ V(6, 7, 3), 2236 /* 1011 */ V(6, 7, 3), 2237 /* 1100 */ V(10, 2, 2), 2238 /* 1101 */ V(10, 2, 2), 2239 /* 1110 */ V(10, 2, 2), 2240 /* 1111 */ V(10, 2, 2), 2241 2242 /* 0001 0001 ... */ 2243 /* 000 */ V(1, 10, 2), /* 208 */ 2244 /* 001 */ V(1, 10, 2), 2245 /* 010 */ V(0, 10, 3), 2246 /* 011 */ V(10, 0, 3), 2247 /* 100 */ V(3, 9, 3), 2248 /* 101 */ V(9, 3, 3), 2249 /* 110 */ V(5, 8, 3), 2250 /* 111 */ V(8, 5, 3), 2251 2252 /* 0001 0010 ... */ 2253 /* 000 */ V(2, 9, 2), /* 216 */ 2254 /* 001 */ V(2, 9, 2), 2255 /* 010 */ V(9, 2, 2), 2256 /* 011 */ V(9, 2, 2), 2257 /* 100 */ V(7, 6, 3), 2258 /* 101 */ V(0, 9, 3), 2259 /* 110 */ V(1, 9, 2), 2260 /* 111 */ V(1, 9, 2), 2261 2262 /* 0001 0011 ... */ 2263 /* 000 */ V(9, 1, 2), /* 224 */ 2264 /* 001 */ V(9, 1, 2), 2265 /* 010 */ V(9, 0, 3), 2266 /* 011 */ V(4, 8, 3), 2267 /* 100 */ V(8, 4, 3), 2268 /* 101 */ V(7, 5, 3), 2269 /* 110 */ V(3, 8, 3), 2270 /* 111 */ V(8, 3, 3), 2271 2272 /* 0001 0100 ... */ 2273 /* 000 */ V(6, 6, 3), /* 232 */ 2274 /* 001 */ V(2, 8, 3), 2275 /* 010 */ V(8, 2, 2), 2276 /* 011 */ V(8, 2, 2), 2277 /* 100 */ V(4, 7, 3), 2278 /* 101 */ V(7, 4, 3), 2279 /* 110 */ V(1, 8, 2), 2280 /* 111 */ V(1, 8, 2), 2281 2282 /* 0001 0101 ... */ 2283 /* 000 */ V(8, 1, 2), /* 240 */ 2284 /* 001 */ V(8, 1, 2), 2285 /* 010 */ V(8, 0, 2), 2286 /* 011 */ V(8, 0, 2), 2287 /* 100 */ V(0, 8, 3), 2288 /* 101 */ V(5, 6, 3), 2289 /* 110 */ V(3, 7, 2), 2290 /* 111 */ V(3, 7, 2), 2291 2292 /* 0001 0110 ... */ 2293 /* 000 */ V(7, 3, 2), /* 248 */ 2294 /* 001 */ V(7, 3, 2), 2295 /* 010 */ V(6, 5, 3), 2296 /* 011 */ V(4, 6, 3), 2297 /* 100 */ V(2, 7, 2), 2298 /* 101 */ V(2, 7, 2), 2299 /* 110 */ V(7, 2, 2), 2300 /* 111 */ V(7, 2, 2), 2301 2302 /* 0001 0111 ... */ 2303 /* 000 */ V(6, 4, 3), /* 256 */ 2304 /* 001 */ V(5, 5, 3), 2305 /* 010 */ V(0, 7, 2), 2306 /* 011 */ V(0, 7, 2), 2307 /* 100 */ V(1, 7, 1), 2308 /* 101 */ V(1, 7, 1), 2309 /* 110 */ V(1, 7, 1), 2310 /* 111 */ V(1, 7, 1), 2311 2312 /* 0001 1000 ... */ 2313 /* 00 */ V(7, 1, 1), /* 264 */ 2314 /* 01 */ V(7, 1, 1), 2315 /* 10 */ V(7, 0, 2), 2316 /* 11 */ V(3, 6, 2), 2317 2318 /* 0001 1001 ... */ 2319 /* 00 */ V(6, 3, 2), /* 268 */ 2320 /* 01 */ V(4, 5, 2), 2321 /* 10 */ V(5, 4, 2), 2322 /* 11 */ V(2, 6, 2), 2323 2324 /* 0001 1010 ... */ 2325 /* 0 */ V(6, 2, 1), /* 272 */ 2326 /* 1 */ V(1, 6, 1), 2327 2328 /* 0001 1011 ... */ 2329 /* 00 */ V(6, 1, 1), /* 274 */ 2330 /* 01 */ V(6, 1, 1), 2331 /* 10 */ V(0, 6, 2), 2332 /* 11 */ V(6, 0, 2), 2333 2334 /* 0001 1100 ... */ 2335 /* 00 */ V(5, 3, 1), /* 278 */ 2336 /* 01 */ V(5, 3, 1), 2337 /* 10 */ V(3, 5, 2), 2338 /* 11 */ V(4, 4, 2), 2339 2340 /* 0001 1101 ... */ 2341 /* 0 */ V(2, 5, 1), /* 282 */ 2342 /* 1 */ V(5, 2, 1), 2343 2344 /* 0001 1111 ... */ 2345 /* 0 */ V(1, 5, 1), /* 284 */ 2346 /* 1 */ V(0, 5, 1), 2347 2348 /* 0010 0000 ... */ 2349 /* 0 */ V(3, 4, 1), /* 286 */ 2350 /* 1 */ V(4, 3, 1), 2351 2352 /* 0010 0001 ... */ 2353 /* 0 */ V(5, 0, 1), /* 288 */ 2354 /* 1 */ V(2, 4, 1), 2355 2356 /* 0010 0010 ... */ 2357 /* 0 */ V(4, 2, 1), /* 290 */ 2358 /* 1 */ V(3, 3, 1), 2359 2360 /* 0010 0101 ... */ 2361 /* 0 */ V(0, 4, 1), /* 292 */ 2362 /* 1 */ V(4, 0, 1), 2363 2364 /* 0000 0110 1100 ... */ 2365 /* 0000 */ V(12, 14, 4), /* 294 */ 2366 /* 0001 */ PTR(400, 1), 2367 /* 0010 */ V(13, 14, 3), 2368 /* 0011 */ V(13, 14, 3), 2369 /* 0100 */ V(14, 9, 3), 2370 /* 0101 */ V(14, 9, 3), 2371 /* 0110 */ V(14, 10, 4), 2372 /* 0111 */ V(13, 9, 4), 2373 /* 1000 */ V(14, 14, 2), 2374 /* 1001 */ V(14, 14, 2), 2375 /* 1010 */ V(14, 14, 2), 2376 /* 1011 */ V(14, 14, 2), 2377 /* 1100 */ V(14, 13, 3), 2378 /* 1101 */ V(14, 13, 3), 2379 /* 1110 */ V(14, 11, 3), 2380 /* 1111 */ V(14, 11, 3), 2381 2382 /* 0000 0110 1101 ... */ 2383 /* 000 */ V(11, 14, 2), /* 310 */ 2384 /* 001 */ V(11, 14, 2), 2385 /* 010 */ V(12, 13, 2), 2386 /* 011 */ V(12, 13, 2), 2387 /* 100 */ V(13, 12, 3), 2388 /* 101 */ V(13, 11, 3), 2389 /* 110 */ V(10, 14, 2), 2390 /* 111 */ V(10, 14, 2), 2391 2392 /* 0000 0110 1110 ... */ 2393 /* 000 */ V(12, 12, 2), /* 318 */ 2394 /* 001 */ V(12, 12, 2), 2395 /* 010 */ V(10, 13, 3), 2396 /* 011 */ V(13, 10, 3), 2397 /* 100 */ V(7, 14, 3), 2398 /* 101 */ V(10, 12, 3), 2399 /* 110 */ V(12, 10, 2), 2400 /* 111 */ V(12, 10, 2), 2401 2402 /* 0000 0110 1111 ... */ 2403 /* 000 */ V(12, 9, 3), /* 326 */ 2404 /* 001 */ V(7, 13, 3), 2405 /* 010 */ V(5, 14, 2), 2406 /* 011 */ V(5, 14, 2), 2407 /* 100 */ V(11, 13, 1), 2408 /* 101 */ V(11, 13, 1), 2409 /* 110 */ V(11, 13, 1), 2410 /* 111 */ V(11, 13, 1), 2411 2412 /* 0000 1011 0000 ... */ 2413 /* 00 */ V(9, 14, 1), /* 334 */ 2414 /* 01 */ V(9, 14, 1), 2415 /* 10 */ V(11, 12, 2), 2416 /* 11 */ V(12, 11, 2), 2417 2418 /* 0000 1011 0001 ... */ 2419 /* 00 */ V(8, 14, 2), /* 338 */ 2420 /* 01 */ V(14, 8, 2), 2421 /* 10 */ V(9, 13, 2), 2422 /* 11 */ V(14, 7, 2), 2423 2424 /* 0000 1011 0010 ... */ 2425 /* 00 */ V(11, 11, 2), /* 342 */ 2426 /* 01 */ V(8, 13, 2), 2427 /* 10 */ V(13, 8, 2), 2428 /* 11 */ V(6, 14, 2), 2429 2430 /* 0000 1011 0011 ... */ 2431 /* 0 */ V(14, 6, 1), /* 346 */ 2432 /* 1 */ V(9, 12, 1), 2433 2434 /* 0000 1011 0100 ... */ 2435 /* 00 */ V(10, 11, 2), /* 348 */ 2436 /* 01 */ V(11, 10, 2), 2437 /* 10 */ V(14, 5, 2), 2438 /* 11 */ V(13, 7, 2), 2439 2440 /* 0000 1011 0101 ... */ 2441 /* 00 */ V(4, 14, 1), /* 352 */ 2442 /* 01 */ V(4, 14, 1), 2443 /* 10 */ V(14, 4, 2), 2444 /* 11 */ V(8, 12, 2), 2445 2446 /* 0000 1011 0110 ... */ 2447 /* 0 */ V(12, 8, 1), /* 356 */ 2448 /* 1 */ V(3, 14, 1), 2449 2450 /* 0000 1011 0111 ... */ 2451 /* 00 */ V(6, 13, 1), /* 358 */ 2452 /* 01 */ V(6, 13, 1), 2453 /* 10 */ V(13, 6, 2), 2454 /* 11 */ V(9, 11, 2), 2455 2456 /* 0000 1011 1000 ... */ 2457 /* 00 */ V(11, 9, 2), /* 362 */ 2458 /* 01 */ V(10, 10, 2), 2459 /* 10 */ V(14, 1, 1), 2460 /* 11 */ V(14, 1, 1), 2461 2462 /* 0000 1011 1001 ... */ 2463 /* 00 */ V(13, 4, 1), /* 366 */ 2464 /* 01 */ V(13, 4, 1), 2465 /* 10 */ V(11, 8, 2), 2466 /* 11 */ V(10, 9, 2), 2467 2468 /* 0000 1011 1010 ... */ 2469 /* 00 */ V(7, 11, 1), /* 370 */ 2470 /* 01 */ V(7, 11, 1), 2471 /* 10 */ V(11, 7, 2), 2472 /* 11 */ V(13, 0, 2), 2473 2474 /* 0000 1011 1100 ... */ 2475 /* 0 */ V(0, 14, 1), /* 374 */ 2476 /* 1 */ V(14, 0, 1), 2477 2478 /* 0000 1011 1101 ... */ 2479 /* 0 */ V(5, 13, 1), /* 376 */ 2480 /* 1 */ V(13, 5, 1), 2481 2482 /* 0000 1011 1110 ... */ 2483 /* 0 */ V(7, 12, 1), /* 378 */ 2484 /* 1 */ V(12, 7, 1), 2485 2486 /* 0000 1011 1111 ... */ 2487 /* 0 */ V(4, 13, 1), /* 380 */ 2488 /* 1 */ V(8, 11, 1), 2489 2490 /* 0000 1100 0000 ... */ 2491 /* 0 */ V(9, 10, 1), /* 382 */ 2492 /* 1 */ V(6, 12, 1), 2493 2494 /* 0000 1100 0001 ... */ 2495 /* 0 */ V(12, 6, 1), /* 384 */ 2496 /* 1 */ V(3, 13, 1), 2497 2498 /* 0000 1100 0010 ... */ 2499 /* 0 */ V(5, 12, 1), /* 386 */ 2500 /* 1 */ V(12, 5, 1), 2501 2502 /* 0000 1100 0100 ... */ 2503 /* 0 */ V(8, 10, 1), /* 388 */ 2504 /* 1 */ V(10, 8, 1), 2505 2506 /* 0000 1100 0101 ... */ 2507 /* 0 */ V(9, 9, 1), /* 390 */ 2508 /* 1 */ V(4, 12, 1), 2509 2510 /* 0000 1100 0110 ... */ 2511 /* 0 */ V(11, 6, 1), /* 392 */ 2512 /* 1 */ V(7, 10, 1), 2513 2514 /* 0000 1100 1000 ... */ 2515 /* 0 */ V(5, 11, 1), /* 394 */ 2516 /* 1 */ V(8, 9, 1), 2517 2518 /* 0000 1100 1011 ... */ 2519 /* 0 */ V(9, 8, 1), /* 396 */ 2520 /* 1 */ V(7, 9, 1), 2521 2522 /* 0000 1101 0101 ... */ 2523 /* 0 */ V(9, 7, 1), /* 398 */ 2524 /* 1 */ V(8, 8, 1), 2525 2526 /* 0000 0110 1100 0001 ... */ 2527 /* 0 */ V(14, 12, 1), /* 400 */ 2528 /* 1 */ V(13, 13, 1) 2529 }; 2530 2531 static 2532 struct huffpair const hufftab24[] = { 2533 /* 0000 */ PTR(16, 4), 2534 /* 0001 */ PTR(32, 4), 2535 /* 0010 */ PTR(48, 4), 2536 /* 0011 */ V(15, 15, 4), 2537 /* 0100 */ PTR(64, 4), 2538 /* 0101 */ PTR(80, 4), 2539 /* 0110 */ PTR(96, 4), 2540 /* 0111 */ PTR(112, 4), 2541 /* 1000 */ PTR(128, 4), 2542 /* 1001 */ PTR(144, 4), 2543 /* 1010 */ PTR(160, 3), 2544 /* 1011 */ PTR(168, 2), 2545 /* 1100 */ V(1, 1, 4), 2546 /* 1101 */ V(0, 1, 4), 2547 /* 1110 */ V(1, 0, 4), 2548 /* 1111 */ V(0, 0, 4), 2549 2550 /* 0000 ... */ 2551 /* 0000 */ V(14, 15, 4), /* 16 */ 2552 /* 0001 */ V(15, 14, 4), 2553 /* 0010 */ V(13, 15, 4), 2554 /* 0011 */ V(15, 13, 4), 2555 /* 0100 */ V(12, 15, 4), 2556 /* 0101 */ V(15, 12, 4), 2557 /* 0110 */ V(11, 15, 4), 2558 /* 0111 */ V(15, 11, 4), 2559 /* 1000 */ V(15, 10, 3), 2560 /* 1001 */ V(15, 10, 3), 2561 /* 1010 */ V(10, 15, 4), 2562 /* 1011 */ V(9, 15, 4), 2563 /* 1100 */ V(15, 9, 3), 2564 /* 1101 */ V(15, 9, 3), 2565 /* 1110 */ V(15, 8, 3), 2566 /* 1111 */ V(15, 8, 3), 2567 2568 /* 0001 ... */ 2569 /* 0000 */ V(8, 15, 4), /* 32 */ 2570 /* 0001 */ V(7, 15, 4), 2571 /* 0010 */ V(15, 7, 3), 2572 /* 0011 */ V(15, 7, 3), 2573 /* 0100 */ V(6, 15, 3), 2574 /* 0101 */ V(6, 15, 3), 2575 /* 0110 */ V(15, 6, 3), 2576 /* 0111 */ V(15, 6, 3), 2577 /* 1000 */ V(5, 15, 3), 2578 /* 1001 */ V(5, 15, 3), 2579 /* 1010 */ V(15, 5, 3), 2580 /* 1011 */ V(15, 5, 3), 2581 /* 1100 */ V(4, 15, 3), 2582 /* 1101 */ V(4, 15, 3), 2583 /* 1110 */ V(15, 4, 3), 2584 /* 1111 */ V(15, 4, 3), 2585 2586 /* 0010 ... */ 2587 /* 0000 */ V(3, 15, 3), /* 48 */ 2588 /* 0001 */ V(3, 15, 3), 2589 /* 0010 */ V(15, 3, 3), 2590 /* 0011 */ V(15, 3, 3), 2591 /* 0100 */ V(2, 15, 3), 2592 /* 0101 */ V(2, 15, 3), 2593 /* 0110 */ V(15, 2, 3), 2594 /* 0111 */ V(15, 2, 3), 2595 /* 1000 */ V(15, 1, 3), 2596 /* 1001 */ V(15, 1, 3), 2597 /* 1010 */ V(1, 15, 4), 2598 /* 1011 */ V(15, 0, 4), 2599 /* 1100 */ PTR(172, 3), 2600 /* 1101 */ PTR(180, 3), 2601 /* 1110 */ PTR(188, 3), 2602 /* 1111 */ PTR(196, 3), 2603 2604 /* 0100 ... */ 2605 /* 0000 */ PTR(204, 4), /* 64 */ 2606 /* 0001 */ PTR(220, 3), 2607 /* 0010 */ PTR(228, 3), 2608 /* 0011 */ PTR(236, 3), 2609 /* 0100 */ PTR(244, 2), 2610 /* 0101 */ PTR(248, 2), 2611 /* 0110 */ PTR(252, 2), 2612 /* 0111 */ PTR(256, 2), 2613 /* 1000 */ PTR(260, 2), 2614 /* 1001 */ PTR(264, 2), 2615 /* 1010 */ PTR(268, 2), 2616 /* 1011 */ PTR(272, 2), 2617 /* 1100 */ PTR(276, 2), 2618 /* 1101 */ PTR(280, 3), 2619 /* 1110 */ PTR(288, 2), 2620 /* 1111 */ PTR(292, 2), 2621 2622 /* 0101 ... */ 2623 /* 0000 */ PTR(296, 2), /* 80 */ 2624 /* 0001 */ PTR(300, 3), 2625 /* 0010 */ PTR(308, 2), 2626 /* 0011 */ PTR(312, 3), 2627 /* 0100 */ PTR(320, 1), 2628 /* 0101 */ PTR(322, 2), 2629 /* 0110 */ PTR(326, 2), 2630 /* 0111 */ PTR(330, 1), 2631 /* 1000 */ PTR(332, 2), 2632 /* 1001 */ PTR(336, 1), 2633 /* 1010 */ PTR(338, 1), 2634 /* 1011 */ PTR(340, 1), 2635 /* 1100 */ PTR(342, 1), 2636 /* 1101 */ PTR(344, 1), 2637 /* 1110 */ PTR(346, 1), 2638 /* 1111 */ PTR(348, 1), 2639 2640 /* 0110 ... */ 2641 /* 0000 */ PTR(350, 1), /* 96 */ 2642 /* 0001 */ PTR(352, 1), 2643 /* 0010 */ PTR(354, 1), 2644 /* 0011 */ PTR(356, 1), 2645 /* 0100 */ PTR(358, 1), 2646 /* 0101 */ PTR(360, 1), 2647 /* 0110 */ PTR(362, 1), 2648 /* 0111 */ PTR(364, 1), 2649 /* 1000 */ PTR(366, 1), 2650 /* 1001 */ PTR(368, 1), 2651 /* 1010 */ PTR(370, 2), 2652 /* 1011 */ PTR(374, 1), 2653 /* 1100 */ PTR(376, 2), 2654 /* 1101 */ V(7, 3, 4), 2655 /* 1110 */ PTR(380, 1), 2656 /* 1111 */ V(7, 2, 4), 2657 2658 /* 0111 ... */ 2659 /* 0000 */ V(4, 6, 4), /* 112 */ 2660 /* 0001 */ V(6, 4, 4), 2661 /* 0010 */ V(5, 5, 4), 2662 /* 0011 */ V(7, 1, 4), 2663 /* 0100 */ V(3, 6, 4), 2664 /* 0101 */ V(6, 3, 4), 2665 /* 0110 */ V(4, 5, 4), 2666 /* 0111 */ V(5, 4, 4), 2667 /* 1000 */ V(2, 6, 4), 2668 /* 1001 */ V(6, 2, 4), 2669 /* 1010 */ V(1, 6, 4), 2670 /* 1011 */ V(6, 1, 4), 2671 /* 1100 */ PTR(382, 1), 2672 /* 1101 */ V(3, 5, 4), 2673 /* 1110 */ V(5, 3, 4), 2674 /* 1111 */ V(4, 4, 4), 2675 2676 /* 1000 ... */ 2677 /* 0000 */ V(2, 5, 4), /* 128 */ 2678 /* 0001 */ V(5, 2, 4), 2679 /* 0010 */ V(1, 5, 4), 2680 /* 0011 */ PTR(384, 1), 2681 /* 0100 */ V(5, 1, 3), 2682 /* 0101 */ V(5, 1, 3), 2683 /* 0110 */ V(3, 4, 4), 2684 /* 0111 */ V(4, 3, 4), 2685 /* 1000 */ V(2, 4, 3), 2686 /* 1001 */ V(2, 4, 3), 2687 /* 1010 */ V(4, 2, 3), 2688 /* 1011 */ V(4, 2, 3), 2689 /* 1100 */ V(3, 3, 3), 2690 /* 1101 */ V(3, 3, 3), 2691 /* 1110 */ V(1, 4, 3), 2692 /* 1111 */ V(1, 4, 3), 2693 2694 /* 1001 ... */ 2695 /* 0000 */ V(4, 1, 3), /* 144 */ 2696 /* 0001 */ V(4, 1, 3), 2697 /* 0010 */ V(0, 4, 4), 2698 /* 0011 */ V(4, 0, 4), 2699 /* 0100 */ V(2, 3, 3), 2700 /* 0101 */ V(2, 3, 3), 2701 /* 0110 */ V(3, 2, 3), 2702 /* 0111 */ V(3, 2, 3), 2703 /* 1000 */ V(1, 3, 2), 2704 /* 1001 */ V(1, 3, 2), 2705 /* 1010 */ V(1, 3, 2), 2706 /* 1011 */ V(1, 3, 2), 2707 /* 1100 */ V(3, 1, 2), 2708 /* 1101 */ V(3, 1, 2), 2709 /* 1110 */ V(3, 1, 2), 2710 /* 1111 */ V(3, 1, 2), 2711 2712 /* 1010 ... */ 2713 /* 000 */ V(0, 3, 3), /* 160 */ 2714 /* 001 */ V(3, 0, 3), 2715 /* 010 */ V(2, 2, 2), 2716 /* 011 */ V(2, 2, 2), 2717 /* 100 */ V(1, 2, 1), 2718 /* 101 */ V(1, 2, 1), 2719 /* 110 */ V(1, 2, 1), 2720 /* 111 */ V(1, 2, 1), 2721 2722 /* 1011 ... */ 2723 /* 00 */ V(2, 1, 1), /* 168 */ 2724 /* 01 */ V(2, 1, 1), 2725 /* 10 */ V(0, 2, 2), 2726 /* 11 */ V(2, 0, 2), 2727 2728 /* 0010 1100 ... */ 2729 /* 000 */ V(0, 15, 1), /* 172 */ 2730 /* 001 */ V(0, 15, 1), 2731 /* 010 */ V(0, 15, 1), 2732 /* 011 */ V(0, 15, 1), 2733 /* 100 */ V(14, 14, 3), 2734 /* 101 */ V(13, 14, 3), 2735 /* 110 */ V(14, 13, 3), 2736 /* 111 */ V(12, 14, 3), 2737 2738 /* 0010 1101 ... */ 2739 /* 000 */ V(14, 12, 3), /* 180 */ 2740 /* 001 */ V(13, 13, 3), 2741 /* 010 */ V(11, 14, 3), 2742 /* 011 */ V(14, 11, 3), 2743 /* 100 */ V(12, 13, 3), 2744 /* 101 */ V(13, 12, 3), 2745 /* 110 */ V(10, 14, 3), 2746 /* 111 */ V(14, 10, 3), 2747 2748 /* 0010 1110 ... */ 2749 /* 000 */ V(11, 13, 3), /* 188 */ 2750 /* 001 */ V(13, 11, 3), 2751 /* 010 */ V(12, 12, 3), 2752 /* 011 */ V(9, 14, 3), 2753 /* 100 */ V(14, 9, 3), 2754 /* 101 */ V(10, 13, 3), 2755 /* 110 */ V(13, 10, 3), 2756 /* 111 */ V(11, 12, 3), 2757 2758 /* 0010 1111 ... */ 2759 /* 000 */ V(12, 11, 3), /* 196 */ 2760 /* 001 */ V(8, 14, 3), 2761 /* 010 */ V(14, 8, 3), 2762 /* 011 */ V(9, 13, 3), 2763 /* 100 */ V(13, 9, 3), 2764 /* 101 */ V(7, 14, 3), 2765 /* 110 */ V(14, 7, 3), 2766 /* 111 */ V(10, 12, 3), 2767 2768 /* 0100 0000 ... */ 2769 /* 0000 */ V(12, 10, 3), /* 204 */ 2770 /* 0001 */ V(12, 10, 3), 2771 /* 0010 */ V(11, 11, 3), 2772 /* 0011 */ V(11, 11, 3), 2773 /* 0100 */ V(8, 13, 3), 2774 /* 0101 */ V(8, 13, 3), 2775 /* 0110 */ V(13, 8, 3), 2776 /* 0111 */ V(13, 8, 3), 2777 /* 1000 */ V(0, 14, 4), 2778 /* 1001 */ V(14, 0, 4), 2779 /* 1010 */ V(0, 13, 3), 2780 /* 1011 */ V(0, 13, 3), 2781 /* 1100 */ V(14, 6, 2), 2782 /* 1101 */ V(14, 6, 2), 2783 /* 1110 */ V(14, 6, 2), 2784 /* 1111 */ V(14, 6, 2), 2785 2786 /* 0100 0001 ... */ 2787 /* 000 */ V(6, 14, 3), /* 220 */ 2788 /* 001 */ V(9, 12, 3), 2789 /* 010 */ V(12, 9, 2), 2790 /* 011 */ V(12, 9, 2), 2791 /* 100 */ V(5, 14, 2), 2792 /* 101 */ V(5, 14, 2), 2793 /* 110 */ V(11, 10, 2), 2794 /* 111 */ V(11, 10, 2), 2795 2796 /* 0100 0010 ... */ 2797 /* 000 */ V(14, 5, 2), /* 228 */ 2798 /* 001 */ V(14, 5, 2), 2799 /* 010 */ V(10, 11, 3), 2800 /* 011 */ V(7, 13, 3), 2801 /* 100 */ V(13, 7, 2), 2802 /* 101 */ V(13, 7, 2), 2803 /* 110 */ V(14, 4, 2), 2804 /* 111 */ V(14, 4, 2), 2805 2806 /* 0100 0011 ... */ 2807 /* 000 */ V(8, 12, 2), /* 236 */ 2808 /* 001 */ V(8, 12, 2), 2809 /* 010 */ V(12, 8, 2), 2810 /* 011 */ V(12, 8, 2), 2811 /* 100 */ V(4, 14, 3), 2812 /* 101 */ V(2, 14, 3), 2813 /* 110 */ V(3, 14, 2), 2814 /* 111 */ V(3, 14, 2), 2815 2816 /* 0100 0100 ... */ 2817 /* 00 */ V(6, 13, 2), /* 244 */ 2818 /* 01 */ V(13, 6, 2), 2819 /* 10 */ V(14, 3, 2), 2820 /* 11 */ V(9, 11, 2), 2821 2822 /* 0100 0101 ... */ 2823 /* 00 */ V(11, 9, 2), /* 248 */ 2824 /* 01 */ V(10, 10, 2), 2825 /* 10 */ V(14, 2, 2), 2826 /* 11 */ V(1, 14, 2), 2827 2828 /* 0100 0110 ... */ 2829 /* 00 */ V(14, 1, 2), /* 252 */ 2830 /* 01 */ V(5, 13, 2), 2831 /* 10 */ V(13, 5, 2), 2832 /* 11 */ V(7, 12, 2), 2833 2834 /* 0100 0111 ... */ 2835 /* 00 */ V(12, 7, 2), /* 256 */ 2836 /* 01 */ V(4, 13, 2), 2837 /* 10 */ V(8, 11, 2), 2838 /* 11 */ V(11, 8, 2), 2839 2840 /* 0100 1000 ... */ 2841 /* 00 */ V(13, 4, 2), /* 260 */ 2842 /* 01 */ V(9, 10, 2), 2843 /* 10 */ V(10, 9, 2), 2844 /* 11 */ V(6, 12, 2), 2845 2846 /* 0100 1001 ... */ 2847 /* 00 */ V(12, 6, 2), /* 264 */ 2848 /* 01 */ V(3, 13, 2), 2849 /* 10 */ V(13, 3, 2), 2850 /* 11 */ V(2, 13, 2), 2851 2852 /* 0100 1010 ... */ 2853 /* 00 */ V(13, 2, 2), /* 268 */ 2854 /* 01 */ V(1, 13, 2), 2855 /* 10 */ V(7, 11, 2), 2856 /* 11 */ V(11, 7, 2), 2857 2858 /* 0100 1011 ... */ 2859 /* 00 */ V(13, 1, 2), /* 272 */ 2860 /* 01 */ V(5, 12, 2), 2861 /* 10 */ V(12, 5, 2), 2862 /* 11 */ V(8, 10, 2), 2863 2864 /* 0100 1100 ... */ 2865 /* 00 */ V(10, 8, 2), /* 276 */ 2866 /* 01 */ V(9, 9, 2), 2867 /* 10 */ V(4, 12, 2), 2868 /* 11 */ V(12, 4, 2), 2869 2870 /* 0100 1101 ... */ 2871 /* 000 */ V(6, 11, 2), /* 280 */ 2872 /* 001 */ V(6, 11, 2), 2873 /* 010 */ V(11, 6, 2), 2874 /* 011 */ V(11, 6, 2), 2875 /* 100 */ V(13, 0, 3), 2876 /* 101 */ V(0, 12, 3), 2877 /* 110 */ V(3, 12, 2), 2878 /* 111 */ V(3, 12, 2), 2879 2880 /* 0100 1110 ... */ 2881 /* 00 */ V(12, 3, 2), /* 288 */ 2882 /* 01 */ V(7, 10, 2), 2883 /* 10 */ V(10, 7, 2), 2884 /* 11 */ V(2, 12, 2), 2885 2886 /* 0100 1111 ... */ 2887 /* 00 */ V(12, 2, 2), /* 292 */ 2888 /* 01 */ V(5, 11, 2), 2889 /* 10 */ V(11, 5, 2), 2890 /* 11 */ V(1, 12, 2), 2891 2892 /* 0101 0000 ... */ 2893 /* 00 */ V(8, 9, 2), /* 296 */ 2894 /* 01 */ V(9, 8, 2), 2895 /* 10 */ V(12, 1, 2), 2896 /* 11 */ V(4, 11, 2), 2897 2898 /* 0101 0001 ... */ 2899 /* 000 */ V(12, 0, 3), /* 300 */ 2900 /* 001 */ V(0, 11, 3), 2901 /* 010 */ V(3, 11, 2), 2902 /* 011 */ V(3, 11, 2), 2903 /* 100 */ V(11, 0, 3), 2904 /* 101 */ V(0, 10, 3), 2905 /* 110 */ V(1, 10, 2), 2906 /* 111 */ V(1, 10, 2), 2907 2908 /* 0101 0010 ... */ 2909 /* 00 */ V(11, 4, 1), /* 308 */ 2910 /* 01 */ V(11, 4, 1), 2911 /* 10 */ V(6, 10, 2), 2912 /* 11 */ V(10, 6, 2), 2913 2914 /* 0101 0011 ... */ 2915 /* 000 */ V(7, 9, 2), /* 312 */ 2916 /* 001 */ V(7, 9, 2), 2917 /* 010 */ V(9, 7, 2), 2918 /* 011 */ V(9, 7, 2), 2919 /* 100 */ V(10, 0, 3), 2920 /* 101 */ V(0, 9, 3), 2921 /* 110 */ V(9, 0, 2), 2922 /* 111 */ V(9, 0, 2), 2923 2924 /* 0101 0100 ... */ 2925 /* 0 */ V(11, 3, 1), /* 320 */ 2926 /* 1 */ V(8, 8, 1), 2927 2928 /* 0101 0101 ... */ 2929 /* 00 */ V(2, 11, 2), /* 322 */ 2930 /* 01 */ V(5, 10, 2), 2931 /* 10 */ V(11, 2, 1), 2932 /* 11 */ V(11, 2, 1), 2933 2934 /* 0101 0110 ... */ 2935 /* 00 */ V(10, 5, 2), /* 326 */ 2936 /* 01 */ V(1, 11, 2), 2937 /* 10 */ V(11, 1, 2), 2938 /* 11 */ V(6, 9, 2), 2939 2940 /* 0101 0111 ... */ 2941 /* 0 */ V(9, 6, 1), /* 330 */ 2942 /* 1 */ V(10, 4, 1), 2943 2944 /* 0101 1000 ... */ 2945 /* 00 */ V(4, 10, 2), /* 332 */ 2946 /* 01 */ V(7, 8, 2), 2947 /* 10 */ V(8, 7, 1), 2948 /* 11 */ V(8, 7, 1), 2949 2950 /* 0101 1001 ... */ 2951 /* 0 */ V(3, 10, 1), /* 336 */ 2952 /* 1 */ V(10, 3, 1), 2953 2954 /* 0101 1010 ... */ 2955 /* 0 */ V(5, 9, 1), /* 338 */ 2956 /* 1 */ V(9, 5, 1), 2957 2958 /* 0101 1011 ... */ 2959 /* 0 */ V(2, 10, 1), /* 340 */ 2960 /* 1 */ V(10, 2, 1), 2961 2962 /* 0101 1100 ... */ 2963 /* 0 */ V(10, 1, 1), /* 342 */ 2964 /* 1 */ V(6, 8, 1), 2965 2966 /* 0101 1101 ... */ 2967 /* 0 */ V(8, 6, 1), /* 344 */ 2968 /* 1 */ V(7, 7, 1), 2969 2970 /* 0101 1110 ... */ 2971 /* 0 */ V(4, 9, 1), /* 346 */ 2972 /* 1 */ V(9, 4, 1), 2973 2974 /* 0101 1111 ... */ 2975 /* 0 */ V(3, 9, 1), /* 348 */ 2976 /* 1 */ V(9, 3, 1), 2977 2978 /* 0110 0000 ... */ 2979 /* 0 */ V(5, 8, 1), /* 350 */ 2980 /* 1 */ V(8, 5, 1), 2981 2982 /* 0110 0001 ... */ 2983 /* 0 */ V(2, 9, 1), /* 352 */ 2984 /* 1 */ V(6, 7, 1), 2985 2986 /* 0110 0010 ... */ 2987 /* 0 */ V(7, 6, 1), /* 354 */ 2988 /* 1 */ V(9, 2, 1), 2989 2990 /* 0110 0011 ... */ 2991 /* 0 */ V(1, 9, 1), /* 356 */ 2992 /* 1 */ V(9, 1, 1), 2993 2994 /* 0110 0100 ... */ 2995 /* 0 */ V(4, 8, 1), /* 358 */ 2996 /* 1 */ V(8, 4, 1), 2997 2998 /* 0110 0101 ... */ 2999 /* 0 */ V(5, 7, 1), /* 360 */ 3000 /* 1 */ V(7, 5, 1), 3001 3002 /* 0110 0110 ... */ 3003 /* 0 */ V(3, 8, 1), /* 362 */ 3004 /* 1 */ V(8, 3, 1), 3005 3006 /* 0110 0111 ... */ 3007 /* 0 */ V(6, 6, 1), /* 364 */ 3008 /* 1 */ V(2, 8, 1), 3009 3010 /* 0110 1000 ... */ 3011 /* 0 */ V(8, 2, 1), /* 366 */ 3012 /* 1 */ V(1, 8, 1), 3013 3014 /* 0110 1001 ... */ 3015 /* 0 */ V(4, 7, 1), /* 368 */ 3016 /* 1 */ V(7, 4, 1), 3017 3018 /* 0110 1010 ... */ 3019 /* 00 */ V(8, 1, 1), /* 370 */ 3020 /* 01 */ V(8, 1, 1), 3021 /* 10 */ V(0, 8, 2), 3022 /* 11 */ V(8, 0, 2), 3023 3024 /* 0110 1011 ... */ 3025 /* 0 */ V(5, 6, 1), /* 374 */ 3026 /* 1 */ V(6, 5, 1), 3027 3028 /* 0110 1100 ... */ 3029 /* 00 */ V(1, 7, 1), /* 376 */ 3030 /* 01 */ V(1, 7, 1), 3031 /* 10 */ V(0, 7, 2), 3032 /* 11 */ V(7, 0, 2), 3033 3034 /* 0110 1110 ... */ 3035 /* 0 */ V(3, 7, 1), /* 380 */ 3036 /* 1 */ V(2, 7, 1), 3037 3038 /* 0111 1100 ... */ 3039 /* 0 */ V(0, 6, 1), /* 382 */ 3040 /* 1 */ V(6, 0, 1), 3041 3042 /* 1000 0011 ... */ 3043 /* 0 */ V(0, 5, 1), /* 384 */ 3044 /* 1 */ V(5, 0, 1) 3045 }; 3046 3047 # undef V 3048 # undef PTR 3049 3050 /* external tables */ 3051 3052 struct huffquad const *const mad_huff_quad_table[2] = { hufftabA, hufftabB }; 3053 3054 struct hufftable const mad_huff_pair_table[32] = { 3055 /* 0 */ { hufftab0, 0, 0 }, 3056 /* 1 */ { hufftab1, 0, 3 }, 3057 /* 2 */ { hufftab2, 0, 3 }, 3058 /* 3 */ { hufftab3, 0, 3 }, 3059 /* 4 */ { 0 /* not used */ }, 3060 /* 5 */ { hufftab5, 0, 3 }, 3061 /* 6 */ { hufftab6, 0, 4 }, 3062 /* 7 */ { hufftab7, 0, 4 }, 3063 /* 8 */ { hufftab8, 0, 4 }, 3064 /* 9 */ { hufftab9, 0, 4 }, 3065 /* 10 */ { hufftab10, 0, 4 }, 3066 /* 11 */ { hufftab11, 0, 4 }, 3067 /* 12 */ { hufftab12, 0, 4 }, 3068 /* 13 */ { hufftab13, 0, 4 }, 3069 /* 14 */ { 0 /* not used */ }, 3070 /* 15 */ { hufftab15, 0, 4 }, 3071 /* 16 */ { hufftab16, 1, 4 }, 3072 /* 17 */ { hufftab16, 2, 4 }, 3073 /* 18 */ { hufftab16, 3, 4 }, 3074 /* 19 */ { hufftab16, 4, 4 }, 3075 /* 20 */ { hufftab16, 6, 4 }, 3076 /* 21 */ { hufftab16, 8, 4 }, 3077 /* 22 */ { hufftab16, 10, 4 }, 3078 /* 23 */ { hufftab16, 13, 4 }, 3079 /* 24 */ { hufftab24, 4, 4 }, 3080 /* 25 */ { hufftab24, 5, 4 }, 3081 /* 26 */ { hufftab24, 6, 4 }, 3082 /* 27 */ { hufftab24, 7, 4 }, 3083 /* 28 */ { hufftab24, 8, 4 }, 3084 /* 29 */ { hufftab24, 9, 4 }, 3085 /* 30 */ { hufftab24, 11, 4 }, 3086 /* 31 */ { hufftab24, 13, 4 } 3087 }; 3088