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