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