1 /* ------------------------------------------------------------------ 2 * Copyright (C) 1998-2009 PacketVideo 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 * express or implied. 14 * See the License for the specific language governing permissions 15 * and limitations under the License. 16 * ------------------------------------------------------------------- 17 */ 18 /* 19 20 Pathname: hcbtables.c 21 22 23 ------------------------------------------------------------------------------ 24 REVISION HISTORY 25 26 Description: Modifiy per review comments 27 (1) delete the following comments: 28 The LAV field has been deleted, since it is never used. 29 30 Description: Remove old structure of huffman table and add new table structure. 31 32 Description: Modified structure to avoid assigning addresses to constant 33 tables. This solve linking problem when using the 34 /ropi option (Read-only position independent) for some 35 compilers 36 - Eliminated references to contant vector addresses in 37 hcbbook_binary 38 39 40 Who: Date: 41 Description: 42 43 ------------------------------------------------------------------------------ 44 INPUT AND OUTPUT DEFINITIONS 45 46 Inputs: None 47 48 Local Stores/Buffers/Pointers Needed: None 49 50 Global Stores/Buffers/Pointers Needed: None 51 52 Outputs: None 53 54 Pointers and Buffers Modified: None 55 56 Local Stores Modified: None 57 58 Global Stores Modified: None 59 60 ------------------------------------------------------------------------------ 61 FUNCTION DESCRIPTION 62 63 This file defines the 12 packed Huffman Tables and a structure that reference 64 to these tables. 65 66 ------------------------------------------------------------------------------ 67 REQUIREMENTS 68 69 70 ------------------------------------------------------------------------------ 71 REFERENCES 72 73 ISO/IEC 14496-3: 1999(E) 74 Subpart 4 p78 (Table 4.6.1 and Table 4.6.2) 75 p77 (pseudo code) 76 77 ------------------------------------------------------------------------------ 78 PSEUDO-CODE 79 80 ------------------------------------------------------------------------------ 81 RESOURCES USED 82 When the code is written for a specific target processor the 83 the resources used should be documented below. 84 85 STACK USAGE: [stack count for this module] + [variable to represent 86 stack usage for each subroutine called] 87 88 where: [stack usage variable] = stack usage for [subroutine 89 name] (see [filename].ext) 90 91 DATA MEMORY USED: x words 92 93 PROGRAM MEMORY USED: x words 94 95 CLOCK CYCLES: [cycle count equation for this module] + [variable 96 used to represent cycle count for each subroutine 97 called] 98 99 where: [cycle count variable] = cycle count for [subroutine 100 name] (see [filename].ext) 101 102 ------------------------------------------------------------------------------ 103 */ 104 #include "s_hcb.h" 105 #include "hcbtables.h" 106 107 /* This file store packed Huffman tables for binary tree search */ 108 109 /* 110 * all tables are packed in the following way: 111 * right pointer (7 bits) idx (9 bits) 112 */ 113 114 115 const Hcb hcbbook_binary[13] = 116 { 117 118 { 0, -1, -1, -1, -1 }, /* ZERO_HCB */ 119 { 1, 4, 3, 1, 1 }, /* codebook 1 */ 120 { 2, 4, 3, 1, 1 }, /* codebook 2 */ 121 { 3, 4, 3, 0, 0 }, /* codebook 3 */ 122 { 4, 4, 3, 0, 0 }, /* codebook 4 */ 123 { 5, 2, 9, 4, 1 }, 124 { 6, 2, 9, 4, 1 }, 125 { 7, 2, 8, 0, 0 }, 126 { 8, 2, 8, 0, 0 }, 127 { 9, 2, 13, 0, 0 }, 128 {10, 2, 13, 0, 0 }, 129 {11, 2, 17, 0, 0 }, /* codebook 11 ESC book */ 130 {12, -1, -1, -1, -1 } /* scalefactor codebook */ 131 132 133 }; 134 135 136 /* New look-up table for huffman decoding 137 Created by ordering the codeword in the table according to their 138 normalized shifted binary value, i.e., all the codewords are left 139 shifted to meet the maximum codelength. Example, max codelength is 140 10, the codeword with lenth 3 will left shift by 7. 141 The binary values of after the shift are sorted. 142 Then the sorted table is divided into several partition. 143 At the VLC decoding period, input is read in at max codelenght. 144 The partition is decided using if-else logic. 145 Inside each partition, a look-up table is used to map the input value 146 to a correct symbol. Table entries can appear to be repeated according 147 to the humming distance between adjacent codewords. 148 */ 149 150 const Int32 huff_tab1[88] = 151 { 152 0x430005, 153 0xd0005, 154 0x270005, 155 0x310005, 156 0x290005, 157 0x250005, 158 0x2b0005, 159 0x1f0005, 160 0x3a0007, 161 0x160007, 162 0x260007, 163 0x2e0007, 164 0x220007, 165 0x2a0007, 166 0x4c0007, 167 0x240007, 168 0x40007, 169 0x1c0007, 170 0x400007, 171 0x300007, 172 0x100007, 173 0x2c0007, 174 0x460007, 175 0x200007, 176 0x340007, 177 0x320007, 178 0xa0007, 179 0x440007, 180 0xc0007, 181 0x420007, 182 0xe0007, 183 0x1e0007, 184 0x490009, 185 0x130009, 186 0x3d0009, 187 0x330009, 188 0x2f0009, 189 0x230009, 190 0x210009, 191 0x370009, 192 0x410009, 193 0x2d0009, 194 0x190009, 195 0xf0009, 196 0x70009, 197 0x1d0009, 198 0x3b0009, 199 0x390009, 200 0x150009, 201 0x10009, 202 0x1b0009, 203 0x350009, 204 0x450009, 205 0x4d0009, 206 0x170009, 207 0x4f0009, 208 0x5000a, 209 0x5000a, 210 0x9000a, 211 0x9000a, 212 0x4b000a, 213 0x4b000a, 214 0x3f000a, 215 0x3f000a, 216 0xb000a, 217 0xb000a, 218 0x3000a, 219 0x3000a, 220 0x11000a, 221 0x11000a, 222 0x47000a, 223 0x47000a, 224 0x3c000b, 225 0x14000b, 226 0x18000b, 227 0x38000b, 228 0x50000b, 229 0x8000b, 230 0x48000b, 231 0x6000b, 232 0xb, 233 0x4a000b, 234 0x3e000b, 235 0x1a000b, 236 0x12000b, 237 0x2000b, 238 0x36000b, 239 0x4e000b 240 }; 241 242 const Int32 huff_tab2[90] = 243 { 244 0x430004, 245 0x430004, 246 0x430004, 247 0x430004, 248 0xd0005, 249 0xd0005, 250 0x290005, 251 0x290005, 252 0x250005, 253 0x250005, 254 0x270005, 255 0x270005, 256 0x1f0005, 257 0x1f0005, 258 0x2b0005, 259 0x2b0005, 260 0x310005, 261 0x310005, 262 0x220006, 263 0x160006, 264 0x2e0006, 265 0x2a0006, 266 0x300006, 267 0x260006, 268 0xc0006, 269 0x3a0006, 270 0x400006, 271 0x40006, 272 0x240006, 273 0x460006, 274 0x440006, 275 0x200006, 276 0x100006, 277 0x320006, 278 0x1c0006, 279 0xe0006, 280 0x1e0006, 281 0xa0006, 282 0x4c0006, 283 0x340006, 284 0x2c0006, 285 0x420006, 286 0x2f0007, 287 0x410007, 288 0x130007, 289 0x210007, 290 0x3d0007, 291 0x4b0007, 292 0x470007, 293 0x190007, 294 0x1d0007, 295 0x4f0007, 296 0xf0007, 297 0x10007, 298 0xb0007, 299 0x370007, 300 0x490007, 301 0x3b0008, 302 0x150008, 303 0x70008, 304 0x110008, 305 0x50008, 306 0x30008, 307 0x1b0008, 308 0x450008, 309 0x3f0008, 310 0x2d0008, 311 0x350008, 312 0x170008, 313 0x90008, 314 0x330008, 315 0x390008, 316 0x230008, 317 0x4d0008, 318 0x3c0008, 319 0x140008, 320 0x380009, 321 0x9, 322 0x180009, 323 0x1a0009, 324 0x500009, 325 0x60009, 326 0x3e0009, 327 0x120009, 328 0x80009, 329 0x480009, 330 0x360009, 331 0x20009, 332 0x4a0009, 333 0x4e0009 334 }; 335 336 const Int32 huff_tab3[151] = 337 { 338 0x1b0004, 339 0x1b0004, 340 0x1b0004, 341 0x1b0004, 342 0x10004, 343 0x10004, 344 0x10004, 345 0x10004, 346 0x90004, 347 0x90004, 348 0x90004, 349 0x90004, 350 0x30004, 351 0x30004, 352 0x30004, 353 0x30004, 354 0x240005, 355 0x240005, 356 0x40005, 357 0x40005, 358 0xc0006, 359 0xa0006, 360 0x1e0006, 361 0xd0006, 362 0x1c0006, 363 0x270006, 364 0x280007, 365 0x280007, 366 0x280007, 367 0x280007, 368 0x1f0007, 369 0x1f0007, 370 0x1f0007, 371 0x1f0007, 372 0x250007, 373 0x250007, 374 0x250007, 375 0x250007, 376 0x360008, 377 0x360008, 378 0x20008, 379 0x20008, 380 0x50008, 381 0x50008, 382 0x3f0008, 383 0x3f0008, 384 0x300008, 385 0x300008, 386 0x70009, 387 0x100009, 388 0x2d0009, 389 0xe0009, 390 0x420009, 391 0x60009, 392 0x150009, 393 0xf0009, 394 0x120009, 395 0xb0009, 396 0x390009, 397 0x310009, 398 0x160009, 399 0x2a0009, 400 0x2b0009, 401 0x2e000a, 402 0x21000a, 403 0x22000a, 404 0x13000a, 405 0x43000a, 406 0x29000a, 407 0x40000a, 408 0x20000a, 409 0x8000a, 410 0x11000a, 411 0x4b000a, 412 0x33000a, 413 0x1d000a, 414 0x37000a, 415 0x19000a, 416 0x48000b, 417 0x48000b, 418 0x34000b, 419 0x34000b, 420 0x26000b, 421 0x26000b, 422 0x3a000b, 423 0x3a000b, 424 0x2c000b, 425 0x2c000b, 426 0x4c000b, 427 0x4c000b, 428 0x18000b, 429 0x18000b, 430 0x17000b, 431 0x17000b, 432 0x23000c, 433 0x49000c, 434 0x45000c, 435 0x4e000c, 436 0x1a000c, 437 0x4f000c, 438 0x46000c, 439 0x32000c, 440 0x35000c, 441 0x14000d, 442 0x14000d, 443 0x14000d, 444 0x14000d, 445 0x14000d, 446 0x14000d, 447 0x14000d, 448 0x14000d, 449 0x3c000d, 450 0x3c000d, 451 0x3c000d, 452 0x3c000d, 453 0x3c000d, 454 0x3c000d, 455 0x3c000d, 456 0x3c000d, 457 0x2f000d, 458 0x2f000d, 459 0x2f000d, 460 0x2f000d, 461 0x2f000d, 462 0x2f000d, 463 0x2f000d, 464 0x2f000d, 465 0x3d000e, 466 0x3d000e, 467 0x3d000e, 468 0x3d000e, 469 0x44000e, 470 0x44000e, 471 0x44000e, 472 0x44000e, 473 0x41000e, 474 0x41000e, 475 0x41000e, 476 0x41000e, 477 0x50000f, 478 0x50000f, 479 0x4d000f, 480 0x4d000f, 481 0x47000f, 482 0x47000f, 483 0x3b000f, 484 0x3b000f, 485 0x38000f, 486 0x38000f, 487 0x4a0010, 488 0x3e0010 489 }; 490 491 const Int32 huff_tab4[119] = 492 { 493 0x280004, 494 0x280004, 495 0xd0004, 496 0xd0004, 497 0x250004, 498 0x250004, 499 0x270004, 500 0x270004, 501 0x1f0004, 502 0x1f0004, 503 0x1b0004, 504 0x1b0004, 505 0x240004, 506 0x240004, 507 0x4, 508 0x4, 509 0x40004, 510 0x40004, 511 0x1e0004, 512 0x1e0004, 513 0x1c0005, 514 0xc0005, 515 0x10005, 516 0xa0005, 517 0x30005, 518 0x90005, 519 0x430007, 520 0x430007, 521 0x2b0007, 522 0x2b0007, 523 0x310007, 524 0x310007, 525 0x290007, 526 0x290007, 527 0x420007, 528 0x420007, 529 0x400007, 530 0x400007, 531 0x300007, 532 0x300007, 533 0x3a0007, 534 0x3a0007, 535 0x100007, 536 0x100007, 537 0xe0008, 538 0x2a0008, 539 0x160008, 540 0x200008, 541 0x2e0008, 542 0x260008, 543 0x220008, 544 0x3f0008, 545 0x390008, 546 0x2d0008, 547 0x370008, 548 0xb0008, 549 0x150008, 550 0x50008, 551 0xf0008, 552 0x130008, 553 0x1d0008, 554 0x70008, 555 0x210008, 556 0x360008, 557 0x20008, 558 0x120009, 559 0x120009, 560 0x60009, 561 0x60009, 562 0x340009, 563 0x340009, 564 0x4c0009, 565 0x4c0009, 566 0x460009, 567 0x460009, 568 0x2c0009, 569 0x2c0009, 570 0x320009, 571 0x320009, 572 0x440009, 573 0x440009, 574 0x33000a, 575 0x4b000a, 576 0x45000a, 577 0x19000a, 578 0x11000a, 579 0x49000a, 580 0x17000a, 581 0x3d000a, 582 0x23000a, 583 0x4f000a, 584 0x2f000a, 585 0x3b000a, 586 0x41000a, 587 0x35000a, 588 0x47000b, 589 0x47000b, 590 0x4d000b, 591 0x4d000b, 592 0x18000b, 593 0x18000b, 594 0x48000b, 595 0x48000b, 596 0x8000b, 597 0x8000b, 598 0x3c000b, 599 0x3c000b, 600 0x14000b, 601 0x14000b, 602 0x38000b, 603 0x38000b, 604 0x50000b, 605 0x50000b, 606 0x1a000b, 607 0x1a000b, 608 0x4e000b, 609 0x4e000b, 610 0x4a000c, 611 0x3e000c 612 }; 613 614 const Int32 huff_tab5[110] = 615 { 616 0x1f0004, 617 0x1f0004, 618 0x310004, 619 0x310004, 620 0x290004, 621 0x290004, 622 0x270004, 623 0x270004, 624 0x300005, 625 0x200005, 626 0x1e0005, 627 0x320005, 628 0x160007, 629 0x160007, 630 0x2a0007, 631 0x2a0007, 632 0x3a0007, 633 0x3a0007, 634 0x260007, 635 0x260007, 636 0x150008, 637 0x3b0008, 638 0x1d0008, 639 0x330008, 640 0x170008, 641 0x390008, 642 0x210008, 643 0x2f0008, 644 0xd0008, 645 0x430008, 646 0x250008, 647 0x2b0008, 648 0xc0009, 649 0xc0009, 650 0x340009, 651 0x340009, 652 0x440009, 653 0x440009, 654 0x1c0009, 655 0x1c0009, 656 0xe0009, 657 0xe0009, 658 0x420009, 659 0x420009, 660 0x2e0009, 661 0x2e0009, 662 0x220009, 663 0x220009, 664 0x180009, 665 0x180009, 666 0x3c0009, 667 0x3c0009, 668 0x140009, 669 0x140009, 670 0x380009, 671 0x380009, 672 0xb000a, 673 0x41000a, 674 0x19000a, 675 0x37000a, 676 0x45000a, 677 0x3d000a, 678 0xf000a, 679 0x13000a, 680 0x24000a, 681 0x4000a, 682 0x4d000a, 683 0x4c000a, 684 0x3000b, 685 0x2c000b, 686 0x4b000b, 687 0x1b000b, 688 0x35000b, 689 0x23000b, 690 0x5000b, 691 0x2d000b, 692 0x40000b, 693 0xa000b, 694 0x10000b, 695 0x1a000b, 696 0x2000b, 697 0x4e000b, 698 0x36000b, 699 0x3e000b, 700 0x46000b, 701 0x6000b, 702 0x12000c, 703 0x12000c, 704 0x4a000c, 705 0x4a000c, 706 0x3f000c, 707 0x3f000c, 708 0x1000c, 709 0x1000c, 710 0x7000c, 711 0x7000c, 712 0x47000c, 713 0x47000c, 714 0x11000c, 715 0x11000c, 716 0x4f000c, 717 0x4f000c, 718 0x49000c, 719 0x49000c, 720 0x9000c, 721 0x9000c, 722 0x48000d, 723 0x8000d, 724 0x50000d, 725 0xd 726 }; 727 const Int32 huff_tab6[113] = 728 { 729 0x280004, 730 0x310004, 731 0x270004, 732 0x290004, 733 0x1f0004, 734 0x320004, 735 0x200004, 736 0x300004, 737 0x1e0004, 738 0x390006, 739 0x390006, 740 0x3b0006, 741 0x3b0006, 742 0x170006, 743 0x170006, 744 0x150006, 745 0x150006, 746 0x160006, 747 0x160006, 748 0x210006, 749 0x210006, 750 0x3a0006, 751 0x3a0006, 752 0x2f0006, 753 0x2f0006, 754 0x330006, 755 0x330006, 756 0x260006, 757 0x260006, 758 0x1d0006, 759 0x1d0006, 760 0x2a0006, 761 0x2a0006, 762 0x380006, 763 0x380006, 764 0x180006, 765 0x180006, 766 0x140006, 767 0x140006, 768 0x3c0006, 769 0x3c0006, 770 0xe0007, 771 0x440007, 772 0x420007, 773 0x220007, 774 0xc0007, 775 0x340007, 776 0x2e0007, 777 0x1c0007, 778 0x430007, 779 0xd0007, 780 0x250007, 781 0x2b0007, 782 0x450007, 783 0xb0008, 784 0xb0008, 785 0x190008, 786 0x190008, 787 0x3d0008, 788 0x3d0008, 789 0x410008, 790 0x410008, 791 0x370008, 792 0x370008, 793 0x130008, 794 0x130008, 795 0xf0008, 796 0xf0008, 797 0x460008, 798 0x460008, 799 0x400009, 800 0xa0009, 801 0x100009, 802 0x2d0009, 803 0x1b0009, 804 0x4d0009, 805 0x50009, 806 0x30009, 807 0x350009, 808 0x4b0009, 809 0x230009, 810 0x240009, 811 0x60009, 812 0x20009, 813 0x3e0009, 814 0x120009, 815 0x40009, 816 0x4e0009, 817 0x4a0009, 818 0x1a0009, 819 0x4c0009, 820 0x360009, 821 0x2c0009, 822 0x9000a, 823 0x9000a, 824 0x11000a, 825 0x11000a, 826 0x3f000a, 827 0x3f000a, 828 0x49000a, 829 0x49000a, 830 0x47000a, 831 0x47000a, 832 0x4f000a, 833 0x4f000a, 834 0x7000a, 835 0x7000a, 836 0x1000a, 837 0x1000a, 838 0x50000b, 839 0x8000b, 840 0xb, 841 0x48000b 842 }; 843 844 const Int32 huff_tab7[107] = 845 { 846 0x80003, 847 0x80003, 848 0x80003, 849 0x80003, 850 0x80003, 851 0x80003, 852 0x80003, 853 0x80003, 854 0x10003, 855 0x10003, 856 0x10003, 857 0x10003, 858 0x10003, 859 0x10003, 860 0x10003, 861 0x10003, 862 0x90004, 863 0x90004, 864 0x90004, 865 0x90004, 866 0x110006, 867 0xa0006, 868 0x100006, 869 0x20006, 870 0x190007, 871 0x190007, 872 0xb0007, 873 0xb0007, 874 0x120007, 875 0x120007, 876 0x180007, 877 0x180007, 878 0x30007, 879 0x30007, 880 0x130008, 881 0x1a0008, 882 0xc0008, 883 0x210008, 884 0xd0008, 885 0x290008, 886 0x1b0008, 887 0x140008, 888 0x40008, 889 0x200008, 890 0x220009, 891 0x220009, 892 0x150009, 893 0x150009, 894 0x2a0009, 895 0x2a0009, 896 0x50009, 897 0x50009, 898 0x310009, 899 0x310009, 900 0x280009, 901 0x280009, 902 0xe0009, 903 0xe0009, 904 0x230009, 905 0x230009, 906 0x1d0009, 907 0x1d0009, 908 0x1c0009, 909 0x1c0009, 910 0x2b0009, 911 0x2b0009, 912 0x160009, 913 0x160009, 914 0x320009, 915 0x320009, 916 0xf0009, 917 0xf0009, 918 0x1e000a, 919 0x6000a, 920 0x30000a, 921 0x24000a, 922 0x39000a, 923 0x25000a, 924 0x3a000a, 925 0x2c000a, 926 0x33000a, 927 0x17000a, 928 0x3b000a, 929 0x34000a, 930 0x2d000a, 931 0x26000a, 932 0x1f000a, 933 0x38000b, 934 0x38000b, 935 0x7000b, 936 0x7000b, 937 0x35000b, 938 0x35000b, 939 0x2e000b, 940 0x2e000b, 941 0x3c000b, 942 0x3c000b, 943 0x27000b, 944 0x27000b, 945 0x2f000b, 946 0x2f000b, 947 0x3d000b, 948 0x3d000b, 949 0x3e000c, 950 0x36000c, 951 0x37000c, 952 0x3f000c 953 }; 954 const Int32 huff_tab8[90] = 955 { 956 0x90003, 957 0x90003, 958 0x90003, 959 0x90003, 960 0x110004, 961 0x110004, 962 0x80004, 963 0x80004, 964 0xa0004, 965 0xa0004, 966 0x10004, 967 0x10004, 968 0x120004, 969 0x120004, 970 0x5, 971 0x100005, 972 0x20005, 973 0x190005, 974 0xb0005, 975 0x1a0005, 976 0x130005, 977 0x1b0006, 978 0x1b0006, 979 0x210006, 980 0x210006, 981 0xc0006, 982 0xc0006, 983 0x220006, 984 0x220006, 985 0x140006, 986 0x140006, 987 0x180006, 988 0x180006, 989 0x30006, 990 0x30006, 991 0x230006, 992 0x230006, 993 0x1c0006, 994 0x1c0006, 995 0x2a0006, 996 0x2a0006, 997 0x290007, 998 0x150007, 999 0xd0007, 1000 0x2b0007, 1001 0x1d0007, 1002 0x240007, 1003 0x2c0007, 1004 0x40007, 1005 0x250007, 1006 0x200007, 1007 0x160007, 1008 0x320007, 1009 0x310007, 1010 0xe0007, 1011 0x1e0008, 1012 0x330008, 1013 0x2d0008, 1014 0x280008, 1015 0x340008, 1016 0x50008, 1017 0x260008, 1018 0x390008, 1019 0x3a0008, 1020 0x170008, 1021 0x350008, 1022 0x3b0008, 1023 0xf0008, 1024 0x2e0008, 1025 0x1f0008, 1026 0x360009, 1027 0x360009, 1028 0x3c0009, 1029 0x3c0009, 1030 0x300009, 1031 0x300009, 1032 0x270009, 1033 0x270009, 1034 0x60009, 1035 0x60009, 1036 0x3d0009, 1037 0x3d0009, 1038 0x3e0009, 1039 0x3e0009, 1040 0x370009, 1041 0x370009, 1042 0x2f000a, 1043 0x38000a, 1044 0x7000a, 1045 0x3f000a 1046 }; 1047 const Int32 huff_tab9[204] = 1048 { 1049 0x1, 1050 0x1, 1051 0x1, 1052 0x1, 1053 0x1, 1054 0x1, 1055 0x1, 1056 0x1, 1057 0xd0003, 1058 0xd0003, 1059 0x10003, 1060 0x10003, 1061 0xe0004, 1062 0x1b0006, 1063 0x1b0006, 1064 0xf0006, 1065 0xf0006, 1066 0x1a0006, 1067 0x1a0006, 1068 0x20006, 1069 0x20006, 1070 0x280007, 1071 0x1c0007, 1072 0x100007, 1073 0x270008, 1074 0x270008, 1075 0x30008, 1076 0x30008, 1077 0x1d0008, 1078 0x1d0008, 1079 0x290008, 1080 0x290008, 1081 0x110008, 1082 0x110008, 1083 0x350008, 1084 0x350008, 1085 0x1e0008, 1086 0x1e0008, 1087 0x120008, 1088 0x120008, 1089 0x360009, 1090 0x2a0009, 1091 0x40009, 1092 0x340009, 1093 0x420009, 1094 0x1f0009, 1095 0x130009, 1096 0x2b0009, 1097 0x430009, 1098 0x4f0009, 1099 0x370009, 1100 0x5000a, 1101 0x20000a, 1102 0x41000a, 1103 0x14000a, 1104 0x2c000a, 1105 0x15000a, 1106 0x69000a, 1107 0x38000a, 1108 0x44000a, 1109 0x50000a, 1110 0x5c000a, 1111 0x6000a, 1112 0x6a000a, 1113 0x22000a, 1114 0x2d000a, 1115 0x21000a, 1116 0x39000a, 1117 0x76000a, 1118 0x16000a, 1119 0x5d000a, 1120 0x4e000b, 1121 0x45000b, 1122 0x51000b, 1123 0x6b000b, 1124 0x7000b, 1125 0x77000b, 1126 0x2f000b, 1127 0x3a000b, 1128 0x2e000b, 1129 0x8000b, 1130 0x83000b, 1131 0x52000b, 1132 0x23000b, 1133 0x46000b, 1134 0x68000b, 1135 0x5b000b, 1136 0x5e000b, 1137 0x84000b, 1138 0x78000b, 1139 0x6c000b, 1140 0x17000b, 1141 0x5f000b, 1142 0x53000b, 1143 0x47000b, 1144 0x3c000b, 1145 0x3b000b, 1146 0x30000b, 1147 0x90000b, 1148 0x49000b, 1149 0x75000b, 1150 0x6d000b, 1151 0x85000c, 1152 0x24000c, 1153 0x9000c, 1154 0x91000c, 1155 0x79000c, 1156 0x54000c, 1157 0x9d000c, 1158 0x3d000c, 1159 0x6e000c, 1160 0x18000c, 1161 0x7a000c, 1162 0x86000c, 1163 0x48000c, 1164 0x60000c, 1165 0x25000c, 1166 0x19000c, 1167 0x9e000c, 1168 0x92000c, 1169 0x31000c, 1170 0x4a000c, 1171 0x55000c, 1172 0x6f000c, 1173 0x93000c, 1174 0xa000c, 1175 0x61000c, 1176 0x9f000c, 1177 0x82000c, 1178 0x87000c, 1179 0x3e000c, 1180 0x56000c, 1181 0x26000c, 1182 0x7b000c, 1183 0x7c000c, 1184 0x3f000c, 1185 0x8f000c, 1186 0x57000c, 1187 0x32000c, 1188 0x4b000c, 1189 0x70000d, 1190 0x63000d, 1191 0xa1000d, 1192 0x33000d, 1193 0x94000d, 1194 0x62000d, 1195 0xa0000d, 1196 0x95000d, 1197 0x88000d, 1198 0x40000d, 1199 0x64000d, 1200 0x4c000d, 1201 0xb000d, 1202 0xa2000d, 1203 0x58000d, 1204 0x9c000d, 1205 0x89000d, 1206 0x4d000d, 1207 0x65000d, 1208 0x7d000d, 1209 0xc000d, 1210 0x96000d, 1211 0x71000d, 1212 0x7e000d, 1213 0x8a000d, 1214 0x66000d, 1215 0xa3000d, 1216 0x59000d, 1217 0x73000d, 1218 0x97000d, 1219 0x67000d, 1220 0x5a000d, 1221 0x72000e, 1222 0x72000e, 1223 0x8b000e, 1224 0x8b000e, 1225 0x74000e, 1226 0x74000e, 1227 0x7f000e, 1228 0x7f000e, 1229 0x80000e, 1230 0x80000e, 1231 0x81000e, 1232 0x81000e, 1233 0x8d000e, 1234 0x8d000e, 1235 0xa5000e, 1236 0xa5000e, 1237 0x8c000e, 1238 0x8c000e, 1239 0x98000e, 1240 0x98000e, 1241 0xa4000e, 1242 0xa4000e, 1243 0x99000e, 1244 0x99000e, 1245 0xa6000e, 1246 0xa6000e, 1247 0xa7000e, 1248 0xa7000e, 1249 0x8e000f, 1250 0x9a000f, 1251 0x9b000f, 1252 0xa8000f 1253 }; 1254 const Int32 huff_tab10[186] = 1255 { 1256 0xe0004, 1257 0xe0004, 1258 0xe0004, 1259 0xe0004, 1260 0xf0004, 1261 0xf0004, 1262 0xf0004, 1263 0xf0004, 1264 0x1b0004, 1265 0x1b0004, 1266 0x1b0004, 1267 0x1b0004, 1268 0x1c0005, 1269 0x1c0005, 1270 0xd0005, 1271 0xd0005, 1272 0x10005, 1273 0x10005, 1274 0x100005, 1275 0x100005, 1276 0x290005, 1277 0x290005, 1278 0x280005, 1279 0x280005, 1280 0x1d0005, 1281 0x1d0005, 1282 0x2a0005, 1283 0x2a0005, 1284 0x1a0006, 1285 0x20006, 1286 0x1e0006, 1287 0x360006, 1288 0x110006, 1289 0x350006, 1290 0x6, 1291 0x370006, 1292 0x2b0006, 1293 0x270006, 1294 0x30006, 1295 0x380006, 1296 0x1f0006, 1297 0x430006, 1298 0x120007, 1299 0x420007, 1300 0x440007, 1301 0x2c0007, 1302 0x450007, 1303 0x390007, 1304 0x500007, 1305 0x200007, 1306 0x510007, 1307 0x340007, 1308 0x4f0007, 1309 0x40007, 1310 0x130007, 1311 0x2d0007, 1312 0x460007, 1313 0x520007, 1314 0x3a0007, 1315 0x530008, 1316 0x5d0008, 1317 0x2e0008, 1318 0x210008, 1319 0x470008, 1320 0x6a0008, 1321 0x5e0008, 1322 0x410008, 1323 0x5c0008, 1324 0x50008, 1325 0x690008, 1326 0x140008, 1327 0x6b0008, 1328 0x5f0008, 1329 0x3b0008, 1330 0x220008, 1331 0x540008, 1332 0x600008, 1333 0x150008, 1334 0x2f0008, 1335 0x6c0008, 1336 0x3c0008, 1337 0x480008, 1338 0x6d0008, 1339 0x490008, 1340 0x610009, 1341 0x550009, 1342 0x770009, 1343 0x4e0009, 1344 0x560009, 1345 0x780009, 1346 0x300009, 1347 0x760009, 1348 0x230009, 1349 0x60009, 1350 0x6e0009, 1351 0x790009, 1352 0x3d0009, 1353 0x840009, 1354 0x160009, 1355 0x620009, 1356 0x6f0009, 1357 0x7a0009, 1358 0x630009, 1359 0x850009, 1360 0x4a0009, 1361 0x860009, 1362 0x240009, 1363 0x830009, 1364 0x310009, 1365 0x7b0009, 1366 0x570009, 1367 0x680009, 1368 0x3e0009, 1369 0x5b0009, 1370 0x910009, 1371 0x64000a, 1372 0x92000a, 1373 0x88000a, 1374 0x17000a, 1375 0x90000a, 1376 0x7c000a, 1377 0x7000a, 1378 0x70000a, 1379 0x87000a, 1380 0x32000a, 1381 0x4b000a, 1382 0x71000a, 1383 0x94000a, 1384 0x8000a, 1385 0x93000a, 1386 0x25000a, 1387 0x65000a, 1388 0x58000a, 1389 0x89000a, 1390 0x3f000a, 1391 0x18000a, 1392 0x9e000a, 1393 0x7d000a, 1394 0x9f000a, 1395 0x95000a, 1396 0x4c000a, 1397 0xa0000a, 1398 0x96000a, 1399 0xa1000a, 1400 0x33000a, 1401 0x59000a, 1402 0x75000a, 1403 0x8a000a, 1404 0x82000a, 1405 0x9d000a, 1406 0x9000a, 1407 0x40000a, 1408 0x7e000a, 1409 0xa2000a, 1410 0x26000a, 1411 0x72000a, 1412 0x7f000b, 1413 0x19000b, 1414 0x97000b, 1415 0xa3000b, 1416 0x66000b, 1417 0x4d000b, 1418 0x5a000b, 1419 0x8b000b, 1420 0x73000b, 1421 0xa4000b, 1422 0xa000b, 1423 0x67000b, 1424 0x8f000b, 1425 0x8c000b, 1426 0x98000b, 1427 0x99000b, 1428 0xb000b, 1429 0x9a000b, 1430 0x80000b, 1431 0x8d000b, 1432 0x9c000b, 1433 0x74000b, 1434 0xa5000c, 1435 0x8e000c, 1436 0x81000c, 1437 0x9b000c, 1438 0xa7000c, 1439 0xc000c, 1440 0xa6000c, 1441 0xa8000c 1442 }; 1443 const Int32 huff_tab11[301] = 1444 { 1445 0x4, 1446 0x4, 1447 0x4, 1448 0x4, 1449 0x120004, 1450 0x120004, 1451 0x120004, 1452 0x120004, 1453 0x1200005, 1454 0x1200005, 1455 0x110005, 1456 0x110005, 1457 0x10005, 1458 0x10005, 1459 0x230005, 1460 0x230005, 1461 0x130005, 1462 0x130005, 1463 0x240005, 1464 0x240005, 1465 0x140006, 1466 0x340006, 1467 0x350006, 1468 0x220006, 1469 0x250006, 1470 0x20006, 1471 0x360006, 1472 0x450007, 1473 0x150007, 1474 0x460007, 1475 0x260007, 1476 0x470007, 1477 0x370007, 1478 0x330007, 1479 0x30007, 1480 0x560007, 1481 0x570007, 1482 0x270007, 1483 0x480007, 1484 0x160007, 1485 0x580007, 1486 0x380007, 1487 0x590007, 1488 0x490008, 1489 0x680008, 1490 0x280008, 1491 0x670008, 1492 0x690008, 1493 0x390008, 1494 0x170008, 1495 0x540008, 1496 0x430008, 1497 0x1150008, 1498 0x1130008, 1499 0x1140008, 1500 0x6a0008, 1501 0x1160008, 1502 0x440008, 1503 0x4a0008, 1504 0x40008, 1505 0x320008, 1506 0x5a0008, 1507 0x650008, 1508 0x1170008, 1509 0x1120008, 1510 0x1180008, 1511 0x290008, 1512 0x790008, 1513 0x3a0008, 1514 0x6b0008, 1515 0x5b0008, 1516 0x760008, 1517 0x11a0008, 1518 0x7a0008, 1519 0x780008, 1520 0x1190008, 1521 0x870008, 1522 0x210008, 1523 0x180008, 1524 0x4b0008, 1525 0x11b0008, 1526 0x7b0008, 1527 0x11c0008, 1528 0x980008, 1529 0x1110008, 1530 0x6c0008, 1531 0xa90008, 1532 0x2a0008, 1533 0x5c0008, 1534 0xba0008, 1535 0x11d0008, 1536 0x8b0008, 1537 0x8a0008, 1538 0x3b0008, 1539 0x550008, 1540 0x11e0008, 1541 0xcb0008, 1542 0x7c0008, 1543 0x4c0008, 1544 0x6d0008, 1545 0x7d0008, 1546 0x50008, 1547 0x8c0009, 1548 0x11f0009, 1549 0xdc0009, 1550 0x190009, 1551 0x890009, 1552 0xfe0009, 1553 0x5d0009, 1554 0xed0009, 1555 0x3c0009, 1556 0x8d0009, 1557 0x7e0009, 1558 0x2b0009, 1559 0x8e0009, 1560 0x9b0009, 1561 0x9c0009, 1562 0x10f0009, 1563 0x4d0009, 1564 0x6e0009, 1565 0x660009, 1566 0x9d0009, 1567 0x5e0009, 1568 0x8f0009, 1569 0x7f0009, 1570 0x1a0009, 1571 0xad0009, 1572 0x60009, 1573 0xac0009, 1574 0x9a0009, 1575 0x9e0009, 1576 0x4e0009, 1577 0x2c0009, 1578 0x9f0009, 1579 0x3d0009, 1580 0x6f0009, 1581 0xae0009, 1582 0x900009, 1583 0xaf0009, 1584 0xa00009, 1585 0xbe0009, 1586 0x1b0009, 1587 0x770009, 1588 0xb00009, 1589 0x800009, 1590 0x3e0009, 1591 0x5f0009, 1592 0xab0009, 1593 0x4f0009, 1594 0xbd0009, 1595 0xdf0009, 1596 0x700009, 1597 0xe00009, 1598 0x2d0009, 1599 0x1100009, 1600 0x600009, 1601 0xc00009, 1602 0xbf000a, 1603 0xa1000a, 1604 0x81000a, 1605 0x91000a, 1606 0x10000a, 1607 0x51000a, 1608 0x7000a, 1609 0x40000a, 1610 0xc1000a, 1611 0xde000a, 1612 0xe1000a, 1613 0xcf000a, 1614 0x2f000a, 1615 0xe2000a, 1616 0x92000a, 1617 0x71000a, 1618 0xb2000a, 1619 0xb1000a, 1620 0xf0000a, 1621 0xd0000a, 1622 0x1c000a, 1623 0x50000a, 1624 0xbc000a, 1625 0x3f000a, 1626 0x1e000a, 1627 0xce000a, 1628 0x82000a, 1629 0x41000a, 1630 0x61000a, 1631 0x62000a, 1632 0xf2000a, 1633 0x52000a, 1634 0xc2000a, 1635 0xf1000a, 1636 0xd1000a, 1637 0xe3000a, 1638 0xd2000a, 1639 0x88000a, 1640 0xc3000a, 1641 0x2e000a, 1642 0xa2000a, 1643 0xf3000a, 1644 0x73000a, 1645 0xb4000a, 1646 0x101000a, 1647 0x93000a, 1648 0xa3000a, 1649 0xf4000a, 1650 0xb3000a, 1651 0x63000a, 1652 0xc4000a, 1653 0xef000a, 1654 0x30000a, 1655 0x72000a, 1656 0x1d000a, 1657 0xe5000a, 1658 0x8000a, 1659 0xe4000a, 1660 0x83000a, 1661 0xd3000a, 1662 0x84000a, 1663 0x102000a, 1664 0xcd000a, 1665 0x74000a, 1666 0x31000a, 1667 0x104000a, 1668 0x103000a, 1669 0x1f000a, 1670 0xa4000a, 1671 0x53000a, 1672 0xf5000a, 1673 0x95000a, 1674 0xe6000a, 1675 0x94000a, 1676 0x64000a, 1677 0x42000a, 1678 0xb5000a, 1679 0xc5000a, 1680 0xd4000a, 1681 0x105000a, 1682 0x106000a, 1683 0x96000a, 1684 0x100000a, 1685 0x85000a, 1686 0x99000a, 1687 0x9000a, 1688 0xa6000a, 1689 0xa5000a, 1690 0xd5000a, 1691 0xf6000a, 1692 0xb7000a, 1693 0xf7000a, 1694 0xd6000a, 1695 0x75000a, 1696 0x86000a, 1697 0xa7000b, 1698 0x107000b, 1699 0xc6000b, 1700 0xc9000b, 1701 0x20000b, 1702 0xb6000b, 1703 0xb8000b, 1704 0xe8000b, 1705 0xe7000b, 1706 0xc8000b, 1707 0xc7000b, 1708 0x97000b, 1709 0xf9000b, 1710 0xe9000b, 1711 0xd9000b, 1712 0x108000b, 1713 0xf8000b, 1714 0xaa000b, 1715 0xd7000b, 1716 0xa8000b, 1717 0xa000b, 1718 0xd8000b, 1719 0xbb000b, 1720 0xda000b, 1721 0xb9000b, 1722 0xea000b, 1723 0xd000b, 1724 0xfa000b, 1725 0x109000b, 1726 0x10a000b, 1727 0xca000b, 1728 0xfb000b, 1729 0xdd000b, 1730 0xb000b, 1731 0xeb000b, 1732 0x10b000b, 1733 0x10c000b, 1734 0xdb000b, 1735 0xee000b, 1736 0xfc000b, 1737 0xec000b, 1738 0xcc000b, 1739 0xfd000b, 1740 0xe000c, 1741 0xc000c, 1742 0x10d000c, 1743 0xff000c, 1744 0xf000c, 1745 0x10e000c 1746 }; 1747 1748 const UInt32 huff_tab_scl[188] = 1749 { 1750 0x3b0003, 1751 0x3b0003, 1752 0x3b0003, 1753 0x3b0003, 1754 0x3b0003, 1755 0x3b0003, 1756 0x3b0003, 1757 0x3b0003, 1758 0x3d0004, 1759 0x3d0004, 1760 0x3d0004, 1761 0x3d0004, 1762 0x3a0004, 1763 0x3a0004, 1764 0x3a0004, 1765 0x3a0004, 1766 0x3e0004, 1767 0x3e0004, 1768 0x3e0004, 1769 0x3e0004, 1770 0x390005, 1771 0x390005, 1772 0x3f0005, 1773 0x3f0005, 1774 0x380006, 1775 0x400006, 1776 0x370006, 1777 0x410006, 1778 0x420007, 1779 0x420007, 1780 0x420007, 1781 0x420007, 1782 0x360007, 1783 0x360007, 1784 0x360007, 1785 0x360007, 1786 0x430007, 1787 0x430007, 1788 0x430007, 1789 0x430007, 1790 0x350008, 1791 0x350008, 1792 0x440008, 1793 0x440008, 1794 0x340008, 1795 0x340008, 1796 0x450008, 1797 0x450008, 1798 0x330008, 1799 0x330008, 1800 0x460009, 1801 0x320009, 1802 0x310009, 1803 0x470009, 1804 0x48000a, 1805 0x48000a, 1806 0x48000a, 1807 0x48000a, 1808 0x30000a, 1809 0x30000a, 1810 0x30000a, 1811 0x30000a, 1812 0x49000a, 1813 0x49000a, 1814 0x49000a, 1815 0x49000a, 1816 0x2f000a, 1817 0x2f000a, 1818 0x2f000a, 1819 0x2f000a, 1820 0x4a000a, 1821 0x4a000a, 1822 0x4a000a, 1823 0x4a000a, 1824 0x2e000a, 1825 0x2e000a, 1826 0x2e000a, 1827 0x2e000a, 1828 0x4c000b, 1829 0x4c000b, 1830 0x4b000b, 1831 0x4b000b, 1832 0x4d000b, 1833 0x4d000b, 1834 0x4e000b, 1835 0x4e000b, 1836 0x2d000b, 1837 0x2d000b, 1838 0x2b000b, 1839 0x2b000b, 1840 0x2c000c, 1841 0x4f000c, 1842 0x2a000c, 1843 0x29000c, 1844 0x50000c, 1845 0x28000c, 1846 0x51000d, 1847 0x51000d, 1848 0x27000d, 1849 0x27000d, 1850 0x52000d, 1851 0x52000d, 1852 0x26000d, 1853 0x26000d, 1854 0x53000d, 1855 0x53000d, 1856 0x25000e, 1857 0x23000e, 1858 0x55000e, 1859 0x21000e, 1860 0x24000e, 1861 0x22000e, 1862 0x54000e, 1863 0x20000e, 1864 0x57000f, 1865 0x57000f, 1866 0x59000f, 1867 0x59000f, 1868 0x1e000f, 1869 0x1e000f, 1870 0x1f000f, 1871 0x1f000f, 1872 0x560010, 1873 0x1d0010, 1874 0x1a0010, 1875 0x1b0010, 1876 0x1c0010, 1877 0x180010, 1878 0x580010, 1879 0x190011, 1880 0x190011, 1881 0x160011, 1882 0x160011, 1883 0x170011, 1884 0x170011, 1885 0x5a0012, 1886 0x150012, 1887 0x130012, 1888 0x30012, 1889 0x10012, 1890 0x20012, 1891 0x12, 1892 0x620013, 1893 0x630013, 1894 0x640013, 1895 0x650013, 1896 0x660013, 1897 0x750013, 1898 0x610013, 1899 0x5b0013, 1900 0x5c0013, 1901 0x5d0013, 1902 0x5e0013, 1903 0x5f0013, 1904 0x600013, 1905 0x680013, 1906 0x6f0013, 1907 0x700013, 1908 0x710013, 1909 0x720013, 1910 0x730013, 1911 0x740013, 1912 0x6e0013, 1913 0x690013, 1914 0x6a0013, 1915 0x6b0013, 1916 0x6c0013, 1917 0x6d0013, 1918 0x760013, 1919 0x60013, 1920 0x80013, 1921 0x90013, 1922 0xa0013, 1923 0x50013, 1924 0x670013, 1925 0x780013, 1926 0x770013, 1927 0x40013, 1928 0x70013, 1929 0xf0013, 1930 0x100013, 1931 0x120013, 1932 0x140013, 1933 0x110013, 1934 0xb0013, 1935 0xc0013, 1936 0xe0013, 1937 0xd0013 1938 }; 1939