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