/* ------------------------------------------------------------------ * Copyright (C) 1998-2009 PacketVideo * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. * See the License for the specific language governing permissions * and limitations under the License. * ------------------------------------------------------------------- */ /* Pathname: hcbtables.c ------------------------------------------------------------------------------ REVISION HISTORY Description: Modifiy per review comments (1) delete the following comments: The LAV field has been deleted, since it is never used. Description: Remove old structure of huffman table and add new table structure. Description: Modified structure to avoid assigning addresses to constant tables. This solve linking problem when using the /ropi option (Read-only position independent) for some compilers - Eliminated references to contant vector addresses in hcbbook_binary Who: Date: Description: ------------------------------------------------------------------------------ INPUT AND OUTPUT DEFINITIONS Inputs: None Local Stores/Buffers/Pointers Needed: None Global Stores/Buffers/Pointers Needed: None Outputs: None Pointers and Buffers Modified: None Local Stores Modified: None Global Stores Modified: None ------------------------------------------------------------------------------ FUNCTION DESCRIPTION This file defines the 12 packed Huffman Tables and a structure that reference to these tables. ------------------------------------------------------------------------------ REQUIREMENTS ------------------------------------------------------------------------------ REFERENCES ISO/IEC 14496-3: 1999(E) Subpart 4 p78 (Table 4.6.1 and Table 4.6.2) p77 (pseudo code) ------------------------------------------------------------------------------ PSEUDO-CODE ------------------------------------------------------------------------------ RESOURCES USED When the code is written for a specific target processor the the resources used should be documented below. STACK USAGE: [stack count for this module] + [variable to represent stack usage for each subroutine called] where: [stack usage variable] = stack usage for [subroutine name] (see [filename].ext) DATA MEMORY USED: x words PROGRAM MEMORY USED: x words CLOCK CYCLES: [cycle count equation for this module] + [variable used to represent cycle count for each subroutine called] where: [cycle count variable] = cycle count for [subroutine name] (see [filename].ext) ------------------------------------------------------------------------------ */ #include "s_hcb.h" #include "hcbtables.h" /* This file store packed Huffman tables for binary tree search */ /* * all tables are packed in the following way: * right pointer (7 bits) idx (9 bits) */ const Hcb hcbbook_binary[13] = { { 0, -1, -1, -1, -1 }, /* ZERO_HCB */ { 1, 4, 3, 1, 1 }, /* codebook 1 */ { 2, 4, 3, 1, 1 }, /* codebook 2 */ { 3, 4, 3, 0, 0 }, /* codebook 3 */ { 4, 4, 3, 0, 0 }, /* codebook 4 */ { 5, 2, 9, 4, 1 }, { 6, 2, 9, 4, 1 }, { 7, 2, 8, 0, 0 }, { 8, 2, 8, 0, 0 }, { 9, 2, 13, 0, 0 }, {10, 2, 13, 0, 0 }, {11, 2, 17, 0, 0 }, /* codebook 11 ESC book */ {12, -1, -1, -1, -1 } /* scalefactor codebook */ }; /* New look-up table for huffman decoding Created by ordering the codeword in the table according to their normalized shifted binary value, i.e., all the codewords are left shifted to meet the maximum codelength. Example, max codelength is 10, the codeword with lenth 3 will left shift by 7. The binary values of after the shift are sorted. Then the sorted table is divided into several partition. At the VLC decoding period, input is read in at max codelenght. The partition is decided using if-else logic. Inside each partition, a look-up table is used to map the input value to a correct symbol. Table entries can appear to be repeated according to the humming distance between adjacent codewords. */ const Int32 huff_tab1[88] = { 0x430005, 0xd0005, 0x270005, 0x310005, 0x290005, 0x250005, 0x2b0005, 0x1f0005, 0x3a0007, 0x160007, 0x260007, 0x2e0007, 0x220007, 0x2a0007, 0x4c0007, 0x240007, 0x40007, 0x1c0007, 0x400007, 0x300007, 0x100007, 0x2c0007, 0x460007, 0x200007, 0x340007, 0x320007, 0xa0007, 0x440007, 0xc0007, 0x420007, 0xe0007, 0x1e0007, 0x490009, 0x130009, 0x3d0009, 0x330009, 0x2f0009, 0x230009, 0x210009, 0x370009, 0x410009, 0x2d0009, 0x190009, 0xf0009, 0x70009, 0x1d0009, 0x3b0009, 0x390009, 0x150009, 0x10009, 0x1b0009, 0x350009, 0x450009, 0x4d0009, 0x170009, 0x4f0009, 0x5000a, 0x5000a, 0x9000a, 0x9000a, 0x4b000a, 0x4b000a, 0x3f000a, 0x3f000a, 0xb000a, 0xb000a, 0x3000a, 0x3000a, 0x11000a, 0x11000a, 0x47000a, 0x47000a, 0x3c000b, 0x14000b, 0x18000b, 0x38000b, 0x50000b, 0x8000b, 0x48000b, 0x6000b, 0xb, 0x4a000b, 0x3e000b, 0x1a000b, 0x12000b, 0x2000b, 0x36000b, 0x4e000b }; const Int32 huff_tab2[90] = { 0x430004, 0x430004, 0x430004, 0x430004, 0xd0005, 0xd0005, 0x290005, 0x290005, 0x250005, 0x250005, 0x270005, 0x270005, 0x1f0005, 0x1f0005, 0x2b0005, 0x2b0005, 0x310005, 0x310005, 0x220006, 0x160006, 0x2e0006, 0x2a0006, 0x300006, 0x260006, 0xc0006, 0x3a0006, 0x400006, 0x40006, 0x240006, 0x460006, 0x440006, 0x200006, 0x100006, 0x320006, 0x1c0006, 0xe0006, 0x1e0006, 0xa0006, 0x4c0006, 0x340006, 0x2c0006, 0x420006, 0x2f0007, 0x410007, 0x130007, 0x210007, 0x3d0007, 0x4b0007, 0x470007, 0x190007, 0x1d0007, 0x4f0007, 0xf0007, 0x10007, 0xb0007, 0x370007, 0x490007, 0x3b0008, 0x150008, 0x70008, 0x110008, 0x50008, 0x30008, 0x1b0008, 0x450008, 0x3f0008, 0x2d0008, 0x350008, 0x170008, 0x90008, 0x330008, 0x390008, 0x230008, 0x4d0008, 0x3c0008, 0x140008, 0x380009, 0x9, 0x180009, 0x1a0009, 0x500009, 0x60009, 0x3e0009, 0x120009, 0x80009, 0x480009, 0x360009, 0x20009, 0x4a0009, 0x4e0009 }; const Int32 huff_tab3[151] = { 0x1b0004, 0x1b0004, 0x1b0004, 0x1b0004, 0x10004, 0x10004, 0x10004, 0x10004, 0x90004, 0x90004, 0x90004, 0x90004, 0x30004, 0x30004, 0x30004, 0x30004, 0x240005, 0x240005, 0x40005, 0x40005, 0xc0006, 0xa0006, 0x1e0006, 0xd0006, 0x1c0006, 0x270006, 0x280007, 0x280007, 0x280007, 0x280007, 0x1f0007, 0x1f0007, 0x1f0007, 0x1f0007, 0x250007, 0x250007, 0x250007, 0x250007, 0x360008, 0x360008, 0x20008, 0x20008, 0x50008, 0x50008, 0x3f0008, 0x3f0008, 0x300008, 0x300008, 0x70009, 0x100009, 0x2d0009, 0xe0009, 0x420009, 0x60009, 0x150009, 0xf0009, 0x120009, 0xb0009, 0x390009, 0x310009, 0x160009, 0x2a0009, 0x2b0009, 0x2e000a, 0x21000a, 0x22000a, 0x13000a, 0x43000a, 0x29000a, 0x40000a, 0x20000a, 0x8000a, 0x11000a, 0x4b000a, 0x33000a, 0x1d000a, 0x37000a, 0x19000a, 0x48000b, 0x48000b, 0x34000b, 0x34000b, 0x26000b, 0x26000b, 0x3a000b, 0x3a000b, 0x2c000b, 0x2c000b, 0x4c000b, 0x4c000b, 0x18000b, 0x18000b, 0x17000b, 0x17000b, 0x23000c, 0x49000c, 0x45000c, 0x4e000c, 0x1a000c, 0x4f000c, 0x46000c, 0x32000c, 0x35000c, 0x14000d, 0x14000d, 0x14000d, 0x14000d, 0x14000d, 0x14000d, 0x14000d, 0x14000d, 0x3c000d, 0x3c000d, 0x3c000d, 0x3c000d, 0x3c000d, 0x3c000d, 0x3c000d, 0x3c000d, 0x2f000d, 0x2f000d, 0x2f000d, 0x2f000d, 0x2f000d, 0x2f000d, 0x2f000d, 0x2f000d, 0x3d000e, 0x3d000e, 0x3d000e, 0x3d000e, 0x44000e, 0x44000e, 0x44000e, 0x44000e, 0x41000e, 0x41000e, 0x41000e, 0x41000e, 0x50000f, 0x50000f, 0x4d000f, 0x4d000f, 0x47000f, 0x47000f, 0x3b000f, 0x3b000f, 0x38000f, 0x38000f, 0x4a0010, 0x3e0010 }; const Int32 huff_tab4[119] = { 0x280004, 0x280004, 0xd0004, 0xd0004, 0x250004, 0x250004, 0x270004, 0x270004, 0x1f0004, 0x1f0004, 0x1b0004, 0x1b0004, 0x240004, 0x240004, 0x4, 0x4, 0x40004, 0x40004, 0x1e0004, 0x1e0004, 0x1c0005, 0xc0005, 0x10005, 0xa0005, 0x30005, 0x90005, 0x430007, 0x430007, 0x2b0007, 0x2b0007, 0x310007, 0x310007, 0x290007, 0x290007, 0x420007, 0x420007, 0x400007, 0x400007, 0x300007, 0x300007, 0x3a0007, 0x3a0007, 0x100007, 0x100007, 0xe0008, 0x2a0008, 0x160008, 0x200008, 0x2e0008, 0x260008, 0x220008, 0x3f0008, 0x390008, 0x2d0008, 0x370008, 0xb0008, 0x150008, 0x50008, 0xf0008, 0x130008, 0x1d0008, 0x70008, 0x210008, 0x360008, 0x20008, 0x120009, 0x120009, 0x60009, 0x60009, 0x340009, 0x340009, 0x4c0009, 0x4c0009, 0x460009, 0x460009, 0x2c0009, 0x2c0009, 0x320009, 0x320009, 0x440009, 0x440009, 0x33000a, 0x4b000a, 0x45000a, 0x19000a, 0x11000a, 0x49000a, 0x17000a, 0x3d000a, 0x23000a, 0x4f000a, 0x2f000a, 0x3b000a, 0x41000a, 0x35000a, 0x47000b, 0x47000b, 0x4d000b, 0x4d000b, 0x18000b, 0x18000b, 0x48000b, 0x48000b, 0x8000b, 0x8000b, 0x3c000b, 0x3c000b, 0x14000b, 0x14000b, 0x38000b, 0x38000b, 0x50000b, 0x50000b, 0x1a000b, 0x1a000b, 0x4e000b, 0x4e000b, 0x4a000c, 0x3e000c }; const Int32 huff_tab5[110] = { 0x1f0004, 0x1f0004, 0x310004, 0x310004, 0x290004, 0x290004, 0x270004, 0x270004, 0x300005, 0x200005, 0x1e0005, 0x320005, 0x160007, 0x160007, 0x2a0007, 0x2a0007, 0x3a0007, 0x3a0007, 0x260007, 0x260007, 0x150008, 0x3b0008, 0x1d0008, 0x330008, 0x170008, 0x390008, 0x210008, 0x2f0008, 0xd0008, 0x430008, 0x250008, 0x2b0008, 0xc0009, 0xc0009, 0x340009, 0x340009, 0x440009, 0x440009, 0x1c0009, 0x1c0009, 0xe0009, 0xe0009, 0x420009, 0x420009, 0x2e0009, 0x2e0009, 0x220009, 0x220009, 0x180009, 0x180009, 0x3c0009, 0x3c0009, 0x140009, 0x140009, 0x380009, 0x380009, 0xb000a, 0x41000a, 0x19000a, 0x37000a, 0x45000a, 0x3d000a, 0xf000a, 0x13000a, 0x24000a, 0x4000a, 0x4d000a, 0x4c000a, 0x3000b, 0x2c000b, 0x4b000b, 0x1b000b, 0x35000b, 0x23000b, 0x5000b, 0x2d000b, 0x40000b, 0xa000b, 0x10000b, 0x1a000b, 0x2000b, 0x4e000b, 0x36000b, 0x3e000b, 0x46000b, 0x6000b, 0x12000c, 0x12000c, 0x4a000c, 0x4a000c, 0x3f000c, 0x3f000c, 0x1000c, 0x1000c, 0x7000c, 0x7000c, 0x47000c, 0x47000c, 0x11000c, 0x11000c, 0x4f000c, 0x4f000c, 0x49000c, 0x49000c, 0x9000c, 0x9000c, 0x48000d, 0x8000d, 0x50000d, 0xd }; const Int32 huff_tab6[113] = { 0x280004, 0x310004, 0x270004, 0x290004, 0x1f0004, 0x320004, 0x200004, 0x300004, 0x1e0004, 0x390006, 0x390006, 0x3b0006, 0x3b0006, 0x170006, 0x170006, 0x150006, 0x150006, 0x160006, 0x160006, 0x210006, 0x210006, 0x3a0006, 0x3a0006, 0x2f0006, 0x2f0006, 0x330006, 0x330006, 0x260006, 0x260006, 0x1d0006, 0x1d0006, 0x2a0006, 0x2a0006, 0x380006, 0x380006, 0x180006, 0x180006, 0x140006, 0x140006, 0x3c0006, 0x3c0006, 0xe0007, 0x440007, 0x420007, 0x220007, 0xc0007, 0x340007, 0x2e0007, 0x1c0007, 0x430007, 0xd0007, 0x250007, 0x2b0007, 0x450007, 0xb0008, 0xb0008, 0x190008, 0x190008, 0x3d0008, 0x3d0008, 0x410008, 0x410008, 0x370008, 0x370008, 0x130008, 0x130008, 0xf0008, 0xf0008, 0x460008, 0x460008, 0x400009, 0xa0009, 0x100009, 0x2d0009, 0x1b0009, 0x4d0009, 0x50009, 0x30009, 0x350009, 0x4b0009, 0x230009, 0x240009, 0x60009, 0x20009, 0x3e0009, 0x120009, 0x40009, 0x4e0009, 0x4a0009, 0x1a0009, 0x4c0009, 0x360009, 0x2c0009, 0x9000a, 0x9000a, 0x11000a, 0x11000a, 0x3f000a, 0x3f000a, 0x49000a, 0x49000a, 0x47000a, 0x47000a, 0x4f000a, 0x4f000a, 0x7000a, 0x7000a, 0x1000a, 0x1000a, 0x50000b, 0x8000b, 0xb, 0x48000b }; const Int32 huff_tab7[107] = { 0x80003, 0x80003, 0x80003, 0x80003, 0x80003, 0x80003, 0x80003, 0x80003, 0x10003, 0x10003, 0x10003, 0x10003, 0x10003, 0x10003, 0x10003, 0x10003, 0x90004, 0x90004, 0x90004, 0x90004, 0x110006, 0xa0006, 0x100006, 0x20006, 0x190007, 0x190007, 0xb0007, 0xb0007, 0x120007, 0x120007, 0x180007, 0x180007, 0x30007, 0x30007, 0x130008, 0x1a0008, 0xc0008, 0x210008, 0xd0008, 0x290008, 0x1b0008, 0x140008, 0x40008, 0x200008, 0x220009, 0x220009, 0x150009, 0x150009, 0x2a0009, 0x2a0009, 0x50009, 0x50009, 0x310009, 0x310009, 0x280009, 0x280009, 0xe0009, 0xe0009, 0x230009, 0x230009, 0x1d0009, 0x1d0009, 0x1c0009, 0x1c0009, 0x2b0009, 0x2b0009, 0x160009, 0x160009, 0x320009, 0x320009, 0xf0009, 0xf0009, 0x1e000a, 0x6000a, 0x30000a, 0x24000a, 0x39000a, 0x25000a, 0x3a000a, 0x2c000a, 0x33000a, 0x17000a, 0x3b000a, 0x34000a, 0x2d000a, 0x26000a, 0x1f000a, 0x38000b, 0x38000b, 0x7000b, 0x7000b, 0x35000b, 0x35000b, 0x2e000b, 0x2e000b, 0x3c000b, 0x3c000b, 0x27000b, 0x27000b, 0x2f000b, 0x2f000b, 0x3d000b, 0x3d000b, 0x3e000c, 0x36000c, 0x37000c, 0x3f000c }; const Int32 huff_tab8[90] = { 0x90003, 0x90003, 0x90003, 0x90003, 0x110004, 0x110004, 0x80004, 0x80004, 0xa0004, 0xa0004, 0x10004, 0x10004, 0x120004, 0x120004, 0x5, 0x100005, 0x20005, 0x190005, 0xb0005, 0x1a0005, 0x130005, 0x1b0006, 0x1b0006, 0x210006, 0x210006, 0xc0006, 0xc0006, 0x220006, 0x220006, 0x140006, 0x140006, 0x180006, 0x180006, 0x30006, 0x30006, 0x230006, 0x230006, 0x1c0006, 0x1c0006, 0x2a0006, 0x2a0006, 0x290007, 0x150007, 0xd0007, 0x2b0007, 0x1d0007, 0x240007, 0x2c0007, 0x40007, 0x250007, 0x200007, 0x160007, 0x320007, 0x310007, 0xe0007, 0x1e0008, 0x330008, 0x2d0008, 0x280008, 0x340008, 0x50008, 0x260008, 0x390008, 0x3a0008, 0x170008, 0x350008, 0x3b0008, 0xf0008, 0x2e0008, 0x1f0008, 0x360009, 0x360009, 0x3c0009, 0x3c0009, 0x300009, 0x300009, 0x270009, 0x270009, 0x60009, 0x60009, 0x3d0009, 0x3d0009, 0x3e0009, 0x3e0009, 0x370009, 0x370009, 0x2f000a, 0x38000a, 0x7000a, 0x3f000a }; const Int32 huff_tab9[204] = { 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xd0003, 0xd0003, 0x10003, 0x10003, 0xe0004, 0x1b0006, 0x1b0006, 0xf0006, 0xf0006, 0x1a0006, 0x1a0006, 0x20006, 0x20006, 0x280007, 0x1c0007, 0x100007, 0x270008, 0x270008, 0x30008, 0x30008, 0x1d0008, 0x1d0008, 0x290008, 0x290008, 0x110008, 0x110008, 0x350008, 0x350008, 0x1e0008, 0x1e0008, 0x120008, 0x120008, 0x360009, 0x2a0009, 0x40009, 0x340009, 0x420009, 0x1f0009, 0x130009, 0x2b0009, 0x430009, 0x4f0009, 0x370009, 0x5000a, 0x20000a, 0x41000a, 0x14000a, 0x2c000a, 0x15000a, 0x69000a, 0x38000a, 0x44000a, 0x50000a, 0x5c000a, 0x6000a, 0x6a000a, 0x22000a, 0x2d000a, 0x21000a, 0x39000a, 0x76000a, 0x16000a, 0x5d000a, 0x4e000b, 0x45000b, 0x51000b, 0x6b000b, 0x7000b, 0x77000b, 0x2f000b, 0x3a000b, 0x2e000b, 0x8000b, 0x83000b, 0x52000b, 0x23000b, 0x46000b, 0x68000b, 0x5b000b, 0x5e000b, 0x84000b, 0x78000b, 0x6c000b, 0x17000b, 0x5f000b, 0x53000b, 0x47000b, 0x3c000b, 0x3b000b, 0x30000b, 0x90000b, 0x49000b, 0x75000b, 0x6d000b, 0x85000c, 0x24000c, 0x9000c, 0x91000c, 0x79000c, 0x54000c, 0x9d000c, 0x3d000c, 0x6e000c, 0x18000c, 0x7a000c, 0x86000c, 0x48000c, 0x60000c, 0x25000c, 0x19000c, 0x9e000c, 0x92000c, 0x31000c, 0x4a000c, 0x55000c, 0x6f000c, 0x93000c, 0xa000c, 0x61000c, 0x9f000c, 0x82000c, 0x87000c, 0x3e000c, 0x56000c, 0x26000c, 0x7b000c, 0x7c000c, 0x3f000c, 0x8f000c, 0x57000c, 0x32000c, 0x4b000c, 0x70000d, 0x63000d, 0xa1000d, 0x33000d, 0x94000d, 0x62000d, 0xa0000d, 0x95000d, 0x88000d, 0x40000d, 0x64000d, 0x4c000d, 0xb000d, 0xa2000d, 0x58000d, 0x9c000d, 0x89000d, 0x4d000d, 0x65000d, 0x7d000d, 0xc000d, 0x96000d, 0x71000d, 0x7e000d, 0x8a000d, 0x66000d, 0xa3000d, 0x59000d, 0x73000d, 0x97000d, 0x67000d, 0x5a000d, 0x72000e, 0x72000e, 0x8b000e, 0x8b000e, 0x74000e, 0x74000e, 0x7f000e, 0x7f000e, 0x80000e, 0x80000e, 0x81000e, 0x81000e, 0x8d000e, 0x8d000e, 0xa5000e, 0xa5000e, 0x8c000e, 0x8c000e, 0x98000e, 0x98000e, 0xa4000e, 0xa4000e, 0x99000e, 0x99000e, 0xa6000e, 0xa6000e, 0xa7000e, 0xa7000e, 0x8e000f, 0x9a000f, 0x9b000f, 0xa8000f }; const Int32 huff_tab10[186] = { 0xe0004, 0xe0004, 0xe0004, 0xe0004, 0xf0004, 0xf0004, 0xf0004, 0xf0004, 0x1b0004, 0x1b0004, 0x1b0004, 0x1b0004, 0x1c0005, 0x1c0005, 0xd0005, 0xd0005, 0x10005, 0x10005, 0x100005, 0x100005, 0x290005, 0x290005, 0x280005, 0x280005, 0x1d0005, 0x1d0005, 0x2a0005, 0x2a0005, 0x1a0006, 0x20006, 0x1e0006, 0x360006, 0x110006, 0x350006, 0x6, 0x370006, 0x2b0006, 0x270006, 0x30006, 0x380006, 0x1f0006, 0x430006, 0x120007, 0x420007, 0x440007, 0x2c0007, 0x450007, 0x390007, 0x500007, 0x200007, 0x510007, 0x340007, 0x4f0007, 0x40007, 0x130007, 0x2d0007, 0x460007, 0x520007, 0x3a0007, 0x530008, 0x5d0008, 0x2e0008, 0x210008, 0x470008, 0x6a0008, 0x5e0008, 0x410008, 0x5c0008, 0x50008, 0x690008, 0x140008, 0x6b0008, 0x5f0008, 0x3b0008, 0x220008, 0x540008, 0x600008, 0x150008, 0x2f0008, 0x6c0008, 0x3c0008, 0x480008, 0x6d0008, 0x490008, 0x610009, 0x550009, 0x770009, 0x4e0009, 0x560009, 0x780009, 0x300009, 0x760009, 0x230009, 0x60009, 0x6e0009, 0x790009, 0x3d0009, 0x840009, 0x160009, 0x620009, 0x6f0009, 0x7a0009, 0x630009, 0x850009, 0x4a0009, 0x860009, 0x240009, 0x830009, 0x310009, 0x7b0009, 0x570009, 0x680009, 0x3e0009, 0x5b0009, 0x910009, 0x64000a, 0x92000a, 0x88000a, 0x17000a, 0x90000a, 0x7c000a, 0x7000a, 0x70000a, 0x87000a, 0x32000a, 0x4b000a, 0x71000a, 0x94000a, 0x8000a, 0x93000a, 0x25000a, 0x65000a, 0x58000a, 0x89000a, 0x3f000a, 0x18000a, 0x9e000a, 0x7d000a, 0x9f000a, 0x95000a, 0x4c000a, 0xa0000a, 0x96000a, 0xa1000a, 0x33000a, 0x59000a, 0x75000a, 0x8a000a, 0x82000a, 0x9d000a, 0x9000a, 0x40000a, 0x7e000a, 0xa2000a, 0x26000a, 0x72000a, 0x7f000b, 0x19000b, 0x97000b, 0xa3000b, 0x66000b, 0x4d000b, 0x5a000b, 0x8b000b, 0x73000b, 0xa4000b, 0xa000b, 0x67000b, 0x8f000b, 0x8c000b, 0x98000b, 0x99000b, 0xb000b, 0x9a000b, 0x80000b, 0x8d000b, 0x9c000b, 0x74000b, 0xa5000c, 0x8e000c, 0x81000c, 0x9b000c, 0xa7000c, 0xc000c, 0xa6000c, 0xa8000c }; const Int32 huff_tab11[301] = { 0x4, 0x4, 0x4, 0x4, 0x120004, 0x120004, 0x120004, 0x120004, 0x1200005, 0x1200005, 0x110005, 0x110005, 0x10005, 0x10005, 0x230005, 0x230005, 0x130005, 0x130005, 0x240005, 0x240005, 0x140006, 0x340006, 0x350006, 0x220006, 0x250006, 0x20006, 0x360006, 0x450007, 0x150007, 0x460007, 0x260007, 0x470007, 0x370007, 0x330007, 0x30007, 0x560007, 0x570007, 0x270007, 0x480007, 0x160007, 0x580007, 0x380007, 0x590007, 0x490008, 0x680008, 0x280008, 0x670008, 0x690008, 0x390008, 0x170008, 0x540008, 0x430008, 0x1150008, 0x1130008, 0x1140008, 0x6a0008, 0x1160008, 0x440008, 0x4a0008, 0x40008, 0x320008, 0x5a0008, 0x650008, 0x1170008, 0x1120008, 0x1180008, 0x290008, 0x790008, 0x3a0008, 0x6b0008, 0x5b0008, 0x760008, 0x11a0008, 0x7a0008, 0x780008, 0x1190008, 0x870008, 0x210008, 0x180008, 0x4b0008, 0x11b0008, 0x7b0008, 0x11c0008, 0x980008, 0x1110008, 0x6c0008, 0xa90008, 0x2a0008, 0x5c0008, 0xba0008, 0x11d0008, 0x8b0008, 0x8a0008, 0x3b0008, 0x550008, 0x11e0008, 0xcb0008, 0x7c0008, 0x4c0008, 0x6d0008, 0x7d0008, 0x50008, 0x8c0009, 0x11f0009, 0xdc0009, 0x190009, 0x890009, 0xfe0009, 0x5d0009, 0xed0009, 0x3c0009, 0x8d0009, 0x7e0009, 0x2b0009, 0x8e0009, 0x9b0009, 0x9c0009, 0x10f0009, 0x4d0009, 0x6e0009, 0x660009, 0x9d0009, 0x5e0009, 0x8f0009, 0x7f0009, 0x1a0009, 0xad0009, 0x60009, 0xac0009, 0x9a0009, 0x9e0009, 0x4e0009, 0x2c0009, 0x9f0009, 0x3d0009, 0x6f0009, 0xae0009, 0x900009, 0xaf0009, 0xa00009, 0xbe0009, 0x1b0009, 0x770009, 0xb00009, 0x800009, 0x3e0009, 0x5f0009, 0xab0009, 0x4f0009, 0xbd0009, 0xdf0009, 0x700009, 0xe00009, 0x2d0009, 0x1100009, 0x600009, 0xc00009, 0xbf000a, 0xa1000a, 0x81000a, 0x91000a, 0x10000a, 0x51000a, 0x7000a, 0x40000a, 0xc1000a, 0xde000a, 0xe1000a, 0xcf000a, 0x2f000a, 0xe2000a, 0x92000a, 0x71000a, 0xb2000a, 0xb1000a, 0xf0000a, 0xd0000a, 0x1c000a, 0x50000a, 0xbc000a, 0x3f000a, 0x1e000a, 0xce000a, 0x82000a, 0x41000a, 0x61000a, 0x62000a, 0xf2000a, 0x52000a, 0xc2000a, 0xf1000a, 0xd1000a, 0xe3000a, 0xd2000a, 0x88000a, 0xc3000a, 0x2e000a, 0xa2000a, 0xf3000a, 0x73000a, 0xb4000a, 0x101000a, 0x93000a, 0xa3000a, 0xf4000a, 0xb3000a, 0x63000a, 0xc4000a, 0xef000a, 0x30000a, 0x72000a, 0x1d000a, 0xe5000a, 0x8000a, 0xe4000a, 0x83000a, 0xd3000a, 0x84000a, 0x102000a, 0xcd000a, 0x74000a, 0x31000a, 0x104000a, 0x103000a, 0x1f000a, 0xa4000a, 0x53000a, 0xf5000a, 0x95000a, 0xe6000a, 0x94000a, 0x64000a, 0x42000a, 0xb5000a, 0xc5000a, 0xd4000a, 0x105000a, 0x106000a, 0x96000a, 0x100000a, 0x85000a, 0x99000a, 0x9000a, 0xa6000a, 0xa5000a, 0xd5000a, 0xf6000a, 0xb7000a, 0xf7000a, 0xd6000a, 0x75000a, 0x86000a, 0xa7000b, 0x107000b, 0xc6000b, 0xc9000b, 0x20000b, 0xb6000b, 0xb8000b, 0xe8000b, 0xe7000b, 0xc8000b, 0xc7000b, 0x97000b, 0xf9000b, 0xe9000b, 0xd9000b, 0x108000b, 0xf8000b, 0xaa000b, 0xd7000b, 0xa8000b, 0xa000b, 0xd8000b, 0xbb000b, 0xda000b, 0xb9000b, 0xea000b, 0xd000b, 0xfa000b, 0x109000b, 0x10a000b, 0xca000b, 0xfb000b, 0xdd000b, 0xb000b, 0xeb000b, 0x10b000b, 0x10c000b, 0xdb000b, 0xee000b, 0xfc000b, 0xec000b, 0xcc000b, 0xfd000b, 0xe000c, 0xc000c, 0x10d000c, 0xff000c, 0xf000c, 0x10e000c }; const UInt32 huff_tab_scl[188] = { 0x3b0003, 0x3b0003, 0x3b0003, 0x3b0003, 0x3b0003, 0x3b0003, 0x3b0003, 0x3b0003, 0x3d0004, 0x3d0004, 0x3d0004, 0x3d0004, 0x3a0004, 0x3a0004, 0x3a0004, 0x3a0004, 0x3e0004, 0x3e0004, 0x3e0004, 0x3e0004, 0x390005, 0x390005, 0x3f0005, 0x3f0005, 0x380006, 0x400006, 0x370006, 0x410006, 0x420007, 0x420007, 0x420007, 0x420007, 0x360007, 0x360007, 0x360007, 0x360007, 0x430007, 0x430007, 0x430007, 0x430007, 0x350008, 0x350008, 0x440008, 0x440008, 0x340008, 0x340008, 0x450008, 0x450008, 0x330008, 0x330008, 0x460009, 0x320009, 0x310009, 0x470009, 0x48000a, 0x48000a, 0x48000a, 0x48000a, 0x30000a, 0x30000a, 0x30000a, 0x30000a, 0x49000a, 0x49000a, 0x49000a, 0x49000a, 0x2f000a, 0x2f000a, 0x2f000a, 0x2f000a, 0x4a000a, 0x4a000a, 0x4a000a, 0x4a000a, 0x2e000a, 0x2e000a, 0x2e000a, 0x2e000a, 0x4c000b, 0x4c000b, 0x4b000b, 0x4b000b, 0x4d000b, 0x4d000b, 0x4e000b, 0x4e000b, 0x2d000b, 0x2d000b, 0x2b000b, 0x2b000b, 0x2c000c, 0x4f000c, 0x2a000c, 0x29000c, 0x50000c, 0x28000c, 0x51000d, 0x51000d, 0x27000d, 0x27000d, 0x52000d, 0x52000d, 0x26000d, 0x26000d, 0x53000d, 0x53000d, 0x25000e, 0x23000e, 0x55000e, 0x21000e, 0x24000e, 0x22000e, 0x54000e, 0x20000e, 0x57000f, 0x57000f, 0x59000f, 0x59000f, 0x1e000f, 0x1e000f, 0x1f000f, 0x1f000f, 0x560010, 0x1d0010, 0x1a0010, 0x1b0010, 0x1c0010, 0x180010, 0x580010, 0x190011, 0x190011, 0x160011, 0x160011, 0x170011, 0x170011, 0x5a0012, 0x150012, 0x130012, 0x30012, 0x10012, 0x20012, 0x12, 0x620013, 0x630013, 0x640013, 0x650013, 0x660013, 0x750013, 0x610013, 0x5b0013, 0x5c0013, 0x5d0013, 0x5e0013, 0x5f0013, 0x600013, 0x680013, 0x6f0013, 0x700013, 0x710013, 0x720013, 0x730013, 0x740013, 0x6e0013, 0x690013, 0x6a0013, 0x6b0013, 0x6c0013, 0x6d0013, 0x760013, 0x60013, 0x80013, 0x90013, 0xa0013, 0x50013, 0x670013, 0x780013, 0x770013, 0x40013, 0x70013, 0xf0013, 0x100013, 0x120013, 0x140013, 0x110013, 0xb0013, 0xc0013, 0xe0013, 0xd0013 };