annotate src/libmad-0.15.1b/huffman.c @ 85:545efbb81310

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