| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "core/fxcodec/jbig2/JBig2_Context.h" | 7 #include "core/fxcodec/jbig2/JBig2_Context.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <list> | 10 #include <list> |
| (...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 std::unique_ptr<CJBig2_HuffmanTable> Table_B2; | 506 std::unique_ptr<CJBig2_HuffmanTable> Table_B2; |
| 507 std::unique_ptr<CJBig2_HuffmanTable> Table_B3; | 507 std::unique_ptr<CJBig2_HuffmanTable> Table_B3; |
| 508 std::unique_ptr<CJBig2_HuffmanTable> Table_B4; | 508 std::unique_ptr<CJBig2_HuffmanTable> Table_B4; |
| 509 std::unique_ptr<CJBig2_HuffmanTable> Table_B5; | 509 std::unique_ptr<CJBig2_HuffmanTable> Table_B5; |
| 510 if (pSymbolDictDecoder->SDHUFF == 1) { | 510 if (pSymbolDictDecoder->SDHUFF == 1) { |
| 511 if (cSDHUFFDH == 2 || cSDHUFFDW == 2) | 511 if (cSDHUFFDH == 2 || cSDHUFFDW == 2) |
| 512 return JBIG2_ERROR_FATAL; | 512 return JBIG2_ERROR_FATAL; |
| 513 | 513 |
| 514 int32_t nIndex = 0; | 514 int32_t nIndex = 0; |
| 515 if (cSDHUFFDH == 0) { | 515 if (cSDHUFFDH == 0) { |
| 516 Table_B4.reset(new CJBig2_HuffmanTable(HuffmanTable_B4, | 516 Table_B4.reset(new CJBig2_HuffmanTable( |
| 517 FX_ArraySize(HuffmanTable_B4), | 517 HuffmanTable_B4, HuffmanTable_B4_Size, HuffmanTable_HTOOB_B4)); |
| 518 HuffmanTable_HTOOB_B4)); | |
| 519 pSymbolDictDecoder->SDHUFFDH = Table_B4.get(); | 518 pSymbolDictDecoder->SDHUFFDH = Table_B4.get(); |
| 520 } else if (cSDHUFFDH == 1) { | 519 } else if (cSDHUFFDH == 1) { |
| 521 Table_B5.reset(new CJBig2_HuffmanTable(HuffmanTable_B5, | 520 Table_B5.reset(new CJBig2_HuffmanTable( |
| 522 FX_ArraySize(HuffmanTable_B5), | 521 HuffmanTable_B5, HuffmanTable_B5_Size, HuffmanTable_HTOOB_B5)); |
| 523 HuffmanTable_HTOOB_B5)); | |
| 524 pSymbolDictDecoder->SDHUFFDH = Table_B5.get(); | 522 pSymbolDictDecoder->SDHUFFDH = Table_B5.get(); |
| 525 } else { | 523 } else { |
| 526 CJBig2_Segment* pSeg = | 524 CJBig2_Segment* pSeg = |
| 527 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); | 525 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); |
| 528 if (!pSeg) | 526 if (!pSeg) |
| 529 return JBIG2_ERROR_FATAL; | 527 return JBIG2_ERROR_FATAL; |
| 530 pSymbolDictDecoder->SDHUFFDH = pSeg->m_Result.ht; | 528 pSymbolDictDecoder->SDHUFFDH = pSeg->m_Result.ht; |
| 531 } | 529 } |
| 532 if (cSDHUFFDW == 0) { | 530 if (cSDHUFFDW == 0) { |
| 533 Table_B2.reset(new CJBig2_HuffmanTable(HuffmanTable_B2, | 531 Table_B2.reset(new CJBig2_HuffmanTable( |
| 534 FX_ArraySize(HuffmanTable_B2), | 532 HuffmanTable_B2, HuffmanTable_B2_Size, HuffmanTable_HTOOB_B2)); |
| 535 HuffmanTable_HTOOB_B2)); | |
| 536 pSymbolDictDecoder->SDHUFFDW = Table_B2.get(); | 533 pSymbolDictDecoder->SDHUFFDW = Table_B2.get(); |
| 537 } else if (cSDHUFFDW == 1) { | 534 } else if (cSDHUFFDW == 1) { |
| 538 Table_B3.reset(new CJBig2_HuffmanTable(HuffmanTable_B3, | 535 Table_B3.reset(new CJBig2_HuffmanTable( |
| 539 FX_ArraySize(HuffmanTable_B3), | 536 HuffmanTable_B3, HuffmanTable_B3_Size, HuffmanTable_HTOOB_B3)); |
| 540 HuffmanTable_HTOOB_B3)); | |
| 541 pSymbolDictDecoder->SDHUFFDW = Table_B3.get(); | 537 pSymbolDictDecoder->SDHUFFDW = Table_B3.get(); |
| 542 } else { | 538 } else { |
| 543 CJBig2_Segment* pSeg = | 539 CJBig2_Segment* pSeg = |
| 544 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); | 540 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); |
| 545 if (!pSeg) | 541 if (!pSeg) |
| 546 return JBIG2_ERROR_FATAL; | 542 return JBIG2_ERROR_FATAL; |
| 547 pSymbolDictDecoder->SDHUFFDW = pSeg->m_Result.ht; | 543 pSymbolDictDecoder->SDHUFFDW = pSeg->m_Result.ht; |
| 548 } | 544 } |
| 549 if (cSDHUFFBMSIZE == 0) { | 545 if (cSDHUFFBMSIZE == 0) { |
| 550 Table_B1.reset(new CJBig2_HuffmanTable(HuffmanTable_B1, | 546 Table_B1.reset(new CJBig2_HuffmanTable( |
| 551 FX_ArraySize(HuffmanTable_B1), | 547 HuffmanTable_B1, HuffmanTable_B1_Size, HuffmanTable_HTOOB_B1)); |
| 552 HuffmanTable_HTOOB_B1)); | |
| 553 pSymbolDictDecoder->SDHUFFBMSIZE = Table_B1.get(); | 548 pSymbolDictDecoder->SDHUFFBMSIZE = Table_B1.get(); |
| 554 } else { | 549 } else { |
| 555 CJBig2_Segment* pSeg = | 550 CJBig2_Segment* pSeg = |
| 556 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); | 551 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); |
| 557 if (!pSeg) | 552 if (!pSeg) |
| 558 return JBIG2_ERROR_FATAL; | 553 return JBIG2_ERROR_FATAL; |
| 559 pSymbolDictDecoder->SDHUFFBMSIZE = pSeg->m_Result.ht; | 554 pSymbolDictDecoder->SDHUFFBMSIZE = pSeg->m_Result.ht; |
| 560 } | 555 } |
| 561 if (pSymbolDictDecoder->SDREFAGG == 1) { | 556 if (pSymbolDictDecoder->SDREFAGG == 1) { |
| 562 if (cSDHUFFAGGINST == 0) { | 557 if (cSDHUFFAGGINST == 0) { |
| 563 if (!Table_B1) { | 558 if (!Table_B1) { |
| 564 Table_B1.reset(new CJBig2_HuffmanTable(HuffmanTable_B1, | 559 Table_B1.reset(new CJBig2_HuffmanTable( |
| 565 FX_ArraySize(HuffmanTable_B1), | 560 HuffmanTable_B1, HuffmanTable_B1_Size, HuffmanTable_HTOOB_B1)); |
| 566 HuffmanTable_HTOOB_B1)); | |
| 567 } | 561 } |
| 568 pSymbolDictDecoder->SDHUFFAGGINST = Table_B1.get(); | 562 pSymbolDictDecoder->SDHUFFAGGINST = Table_B1.get(); |
| 569 } else { | 563 } else { |
| 570 CJBig2_Segment* pSeg = | 564 CJBig2_Segment* pSeg = |
| 571 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); | 565 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); |
| 572 if (!pSeg) | 566 if (!pSeg) |
| 573 return JBIG2_ERROR_FATAL; | 567 return JBIG2_ERROR_FATAL; |
| 574 pSymbolDictDecoder->SDHUFFAGGINST = pSeg->m_Result.ht; | 568 pSymbolDictDecoder->SDHUFFAGGINST = pSeg->m_Result.ht; |
| 575 } | 569 } |
| 576 } | 570 } |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 774 std::unique_ptr<CJBig2_HuffmanTable> Table_B13; | 768 std::unique_ptr<CJBig2_HuffmanTable> Table_B13; |
| 775 std::unique_ptr<CJBig2_HuffmanTable> Table_B14; | 769 std::unique_ptr<CJBig2_HuffmanTable> Table_B14; |
| 776 std::unique_ptr<CJBig2_HuffmanTable> Table_B15; | 770 std::unique_ptr<CJBig2_HuffmanTable> Table_B15; |
| 777 if (pTRD->SBHUFF == 1) { | 771 if (pTRD->SBHUFF == 1) { |
| 778 if (cSBHUFFFS == 2 || cSBHUFFRDW == 2 || cSBHUFFRDH == 2 || | 772 if (cSBHUFFFS == 2 || cSBHUFFRDW == 2 || cSBHUFFRDH == 2 || |
| 779 cSBHUFFRDX == 2 || cSBHUFFRDY == 2) { | 773 cSBHUFFRDX == 2 || cSBHUFFRDY == 2) { |
| 780 return JBIG2_ERROR_FATAL; | 774 return JBIG2_ERROR_FATAL; |
| 781 } | 775 } |
| 782 int32_t nIndex = 0; | 776 int32_t nIndex = 0; |
| 783 if (cSBHUFFFS == 0) { | 777 if (cSBHUFFFS == 0) { |
| 784 Table_B6.reset(new CJBig2_HuffmanTable(HuffmanTable_B6, | 778 Table_B6.reset(new CJBig2_HuffmanTable( |
| 785 FX_ArraySize(HuffmanTable_B6), | 779 HuffmanTable_B6, HuffmanTable_B6_Size, HuffmanTable_HTOOB_B6)); |
| 786 HuffmanTable_HTOOB_B6)); | |
| 787 pTRD->SBHUFFFS = Table_B6.get(); | 780 pTRD->SBHUFFFS = Table_B6.get(); |
| 788 } else if (cSBHUFFFS == 1) { | 781 } else if (cSBHUFFFS == 1) { |
| 789 Table_B7.reset(new CJBig2_HuffmanTable(HuffmanTable_B7, | 782 Table_B7.reset(new CJBig2_HuffmanTable( |
| 790 FX_ArraySize(HuffmanTable_B7), | 783 HuffmanTable_B7, HuffmanTable_B7_Size, HuffmanTable_HTOOB_B7)); |
| 791 HuffmanTable_HTOOB_B7)); | |
| 792 pTRD->SBHUFFFS = Table_B7.get(); | 784 pTRD->SBHUFFFS = Table_B7.get(); |
| 793 } else { | 785 } else { |
| 794 CJBig2_Segment* pSeg = | 786 CJBig2_Segment* pSeg = |
| 795 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); | 787 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); |
| 796 if (!pSeg) | 788 if (!pSeg) |
| 797 return JBIG2_ERROR_FATAL; | 789 return JBIG2_ERROR_FATAL; |
| 798 pTRD->SBHUFFFS = pSeg->m_Result.ht; | 790 pTRD->SBHUFFFS = pSeg->m_Result.ht; |
| 799 } | 791 } |
| 800 if (cSBHUFFDS == 0) { | 792 if (cSBHUFFDS == 0) { |
| 801 Table_B8.reset(new CJBig2_HuffmanTable(HuffmanTable_B8, | 793 Table_B8.reset(new CJBig2_HuffmanTable( |
| 802 FX_ArraySize(HuffmanTable_B8), | 794 HuffmanTable_B8, HuffmanTable_B8_Size, HuffmanTable_HTOOB_B8)); |
| 803 HuffmanTable_HTOOB_B8)); | |
| 804 pTRD->SBHUFFDS = Table_B8.get(); | 795 pTRD->SBHUFFDS = Table_B8.get(); |
| 805 } else if (cSBHUFFDS == 1) { | 796 } else if (cSBHUFFDS == 1) { |
| 806 Table_B9.reset(new CJBig2_HuffmanTable(HuffmanTable_B9, | 797 Table_B9.reset(new CJBig2_HuffmanTable( |
| 807 FX_ArraySize(HuffmanTable_B9), | 798 HuffmanTable_B9, HuffmanTable_B9_Size, HuffmanTable_HTOOB_B9)); |
| 808 HuffmanTable_HTOOB_B9)); | |
| 809 pTRD->SBHUFFDS = Table_B9.get(); | 799 pTRD->SBHUFFDS = Table_B9.get(); |
| 810 } else if (cSBHUFFDS == 2) { | 800 } else if (cSBHUFFDS == 2) { |
| 811 Table_B10.reset(new CJBig2_HuffmanTable(HuffmanTable_B10, | 801 Table_B10.reset(new CJBig2_HuffmanTable( |
| 812 FX_ArraySize(HuffmanTable_B10), | 802 HuffmanTable_B10, HuffmanTable_B10_Size, HuffmanTable_HTOOB_B10)); |
| 813 HuffmanTable_HTOOB_B10)); | |
| 814 pTRD->SBHUFFDS = Table_B10.get(); | 803 pTRD->SBHUFFDS = Table_B10.get(); |
| 815 } else { | 804 } else { |
| 816 CJBig2_Segment* pSeg = | 805 CJBig2_Segment* pSeg = |
| 817 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); | 806 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); |
| 818 if (!pSeg) | 807 if (!pSeg) |
| 819 return JBIG2_ERROR_FATAL; | 808 return JBIG2_ERROR_FATAL; |
| 820 pTRD->SBHUFFDS = pSeg->m_Result.ht; | 809 pTRD->SBHUFFDS = pSeg->m_Result.ht; |
| 821 } | 810 } |
| 822 if (cSBHUFFDT == 0) { | 811 if (cSBHUFFDT == 0) { |
| 823 Table_B11.reset(new CJBig2_HuffmanTable(HuffmanTable_B11, | 812 Table_B11.reset(new CJBig2_HuffmanTable( |
| 824 FX_ArraySize(HuffmanTable_B11), | 813 HuffmanTable_B11, HuffmanTable_B11_Size, HuffmanTable_HTOOB_B11)); |
| 825 HuffmanTable_HTOOB_B11)); | |
| 826 pTRD->SBHUFFDT = Table_B11.get(); | 814 pTRD->SBHUFFDT = Table_B11.get(); |
| 827 } else if (cSBHUFFDT == 1) { | 815 } else if (cSBHUFFDT == 1) { |
| 828 Table_B12.reset(new CJBig2_HuffmanTable(HuffmanTable_B12, | 816 Table_B12.reset(new CJBig2_HuffmanTable( |
| 829 FX_ArraySize(HuffmanTable_B12), | 817 HuffmanTable_B12, HuffmanTable_B12_Size, HuffmanTable_HTOOB_B12)); |
| 830 HuffmanTable_HTOOB_B12)); | |
| 831 pTRD->SBHUFFDT = Table_B12.get(); | 818 pTRD->SBHUFFDT = Table_B12.get(); |
| 832 } else if (cSBHUFFDT == 2) { | 819 } else if (cSBHUFFDT == 2) { |
| 833 Table_B13.reset(new CJBig2_HuffmanTable(HuffmanTable_B13, | 820 Table_B13.reset(new CJBig2_HuffmanTable( |
| 834 FX_ArraySize(HuffmanTable_B13), | 821 HuffmanTable_B13, HuffmanTable_B13_Size, HuffmanTable_HTOOB_B13)); |
| 835 HuffmanTable_HTOOB_B13)); | |
| 836 pTRD->SBHUFFDT = Table_B13.get(); | 822 pTRD->SBHUFFDT = Table_B13.get(); |
| 837 } else { | 823 } else { |
| 838 CJBig2_Segment* pSeg = | 824 CJBig2_Segment* pSeg = |
| 839 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); | 825 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); |
| 840 if (!pSeg) | 826 if (!pSeg) |
| 841 return JBIG2_ERROR_FATAL; | 827 return JBIG2_ERROR_FATAL; |
| 842 pTRD->SBHUFFDT = pSeg->m_Result.ht; | 828 pTRD->SBHUFFDT = pSeg->m_Result.ht; |
| 843 } | 829 } |
| 844 if (cSBHUFFRDW == 0) { | 830 if (cSBHUFFRDW == 0) { |
| 845 Table_B14.reset(new CJBig2_HuffmanTable(HuffmanTable_B14, | 831 Table_B14.reset(new CJBig2_HuffmanTable( |
| 846 FX_ArraySize(HuffmanTable_B14), | 832 HuffmanTable_B14, HuffmanTable_B14_Size, HuffmanTable_HTOOB_B14)); |
| 847 HuffmanTable_HTOOB_B14)); | |
| 848 pTRD->SBHUFFRDW = Table_B14.get(); | 833 pTRD->SBHUFFRDW = Table_B14.get(); |
| 849 } else if (cSBHUFFRDW == 1) { | 834 } else if (cSBHUFFRDW == 1) { |
| 850 Table_B15.reset(new CJBig2_HuffmanTable(HuffmanTable_B15, | 835 Table_B15.reset(new CJBig2_HuffmanTable( |
| 851 FX_ArraySize(HuffmanTable_B15), | 836 HuffmanTable_B15, HuffmanTable_B15_Size, HuffmanTable_HTOOB_B15)); |
| 852 HuffmanTable_HTOOB_B15)); | |
| 853 pTRD->SBHUFFRDW = Table_B15.get(); | 837 pTRD->SBHUFFRDW = Table_B15.get(); |
| 854 } else { | 838 } else { |
| 855 CJBig2_Segment* pSeg = | 839 CJBig2_Segment* pSeg = |
| 856 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); | 840 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); |
| 857 if (!pSeg) | 841 if (!pSeg) |
| 858 return JBIG2_ERROR_FATAL; | 842 return JBIG2_ERROR_FATAL; |
| 859 pTRD->SBHUFFRDW = pSeg->m_Result.ht; | 843 pTRD->SBHUFFRDW = pSeg->m_Result.ht; |
| 860 } | 844 } |
| 861 if (cSBHUFFRDH == 0) { | 845 if (cSBHUFFRDH == 0) { |
| 862 if (!Table_B14) { | 846 if (!Table_B14) { |
| 863 Table_B14.reset(new CJBig2_HuffmanTable(HuffmanTable_B14, | 847 Table_B14.reset(new CJBig2_HuffmanTable( |
| 864 FX_ArraySize(HuffmanTable_B14), | 848 HuffmanTable_B14, HuffmanTable_B14_Size, HuffmanTable_HTOOB_B14)); |
| 865 HuffmanTable_HTOOB_B14)); | |
| 866 } | 849 } |
| 867 pTRD->SBHUFFRDH = Table_B14.get(); | 850 pTRD->SBHUFFRDH = Table_B14.get(); |
| 868 } else if (cSBHUFFRDH == 1) { | 851 } else if (cSBHUFFRDH == 1) { |
| 869 if (!Table_B15) { | 852 if (!Table_B15) { |
| 870 Table_B15.reset(new CJBig2_HuffmanTable(HuffmanTable_B15, | 853 Table_B15.reset(new CJBig2_HuffmanTable( |
| 871 FX_ArraySize(HuffmanTable_B15), | 854 HuffmanTable_B15, HuffmanTable_B15_Size, HuffmanTable_HTOOB_B15)); |
| 872 HuffmanTable_HTOOB_B15)); | |
| 873 } | 855 } |
| 874 pTRD->SBHUFFRDH = Table_B15.get(); | 856 pTRD->SBHUFFRDH = Table_B15.get(); |
| 875 } else { | 857 } else { |
| 876 CJBig2_Segment* pSeg = | 858 CJBig2_Segment* pSeg = |
| 877 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); | 859 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); |
| 878 if (!pSeg) | 860 if (!pSeg) |
| 879 return JBIG2_ERROR_FATAL; | 861 return JBIG2_ERROR_FATAL; |
| 880 pTRD->SBHUFFRDH = pSeg->m_Result.ht; | 862 pTRD->SBHUFFRDH = pSeg->m_Result.ht; |
| 881 } | 863 } |
| 882 if (cSBHUFFRDX == 0) { | 864 if (cSBHUFFRDX == 0) { |
| 883 if (!Table_B14) { | 865 if (!Table_B14) { |
| 884 Table_B14.reset(new CJBig2_HuffmanTable(HuffmanTable_B14, | 866 Table_B14.reset(new CJBig2_HuffmanTable( |
| 885 FX_ArraySize(HuffmanTable_B14), | 867 HuffmanTable_B14, HuffmanTable_B14_Size, HuffmanTable_HTOOB_B14)); |
| 886 HuffmanTable_HTOOB_B14)); | |
| 887 } | 868 } |
| 888 pTRD->SBHUFFRDX = Table_B14.get(); | 869 pTRD->SBHUFFRDX = Table_B14.get(); |
| 889 } else if (cSBHUFFRDX == 1) { | 870 } else if (cSBHUFFRDX == 1) { |
| 890 if (!Table_B15) { | 871 if (!Table_B15) { |
| 891 Table_B15.reset(new CJBig2_HuffmanTable(HuffmanTable_B15, | 872 Table_B15.reset(new CJBig2_HuffmanTable( |
| 892 FX_ArraySize(HuffmanTable_B15), | 873 HuffmanTable_B15, HuffmanTable_B15_Size, HuffmanTable_HTOOB_B15)); |
| 893 HuffmanTable_HTOOB_B15)); | |
| 894 } | 874 } |
| 895 pTRD->SBHUFFRDX = Table_B15.get(); | 875 pTRD->SBHUFFRDX = Table_B15.get(); |
| 896 } else { | 876 } else { |
| 897 CJBig2_Segment* pSeg = | 877 CJBig2_Segment* pSeg = |
| 898 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); | 878 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); |
| 899 if (!pSeg) | 879 if (!pSeg) |
| 900 return JBIG2_ERROR_FATAL; | 880 return JBIG2_ERROR_FATAL; |
| 901 pTRD->SBHUFFRDX = pSeg->m_Result.ht; | 881 pTRD->SBHUFFRDX = pSeg->m_Result.ht; |
| 902 } | 882 } |
| 903 if (cSBHUFFRDY == 0) { | 883 if (cSBHUFFRDY == 0) { |
| 904 if (!Table_B14) { | 884 if (!Table_B14) { |
| 905 Table_B14.reset(new CJBig2_HuffmanTable(HuffmanTable_B14, | 885 Table_B14.reset(new CJBig2_HuffmanTable( |
| 906 FX_ArraySize(HuffmanTable_B14), | 886 HuffmanTable_B14, HuffmanTable_B14_Size, HuffmanTable_HTOOB_B14)); |
| 907 HuffmanTable_HTOOB_B14)); | |
| 908 } | 887 } |
| 909 pTRD->SBHUFFRDY = Table_B14.get(); | 888 pTRD->SBHUFFRDY = Table_B14.get(); |
| 910 } else if (cSBHUFFRDY == 1) { | 889 } else if (cSBHUFFRDY == 1) { |
| 911 if (!Table_B15) { | 890 if (!Table_B15) { |
| 912 Table_B15.reset(new CJBig2_HuffmanTable(HuffmanTable_B15, | 891 Table_B15.reset(new CJBig2_HuffmanTable( |
| 913 FX_ArraySize(HuffmanTable_B15), | 892 HuffmanTable_B15, HuffmanTable_B15_Size, HuffmanTable_HTOOB_B15)); |
| 914 HuffmanTable_HTOOB_B15)); | |
| 915 } | 893 } |
| 916 pTRD->SBHUFFRDY = Table_B15.get(); | 894 pTRD->SBHUFFRDY = Table_B15.get(); |
| 917 } else { | 895 } else { |
| 918 CJBig2_Segment* pSeg = | 896 CJBig2_Segment* pSeg = |
| 919 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); | 897 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); |
| 920 if (!pSeg) | 898 if (!pSeg) |
| 921 return JBIG2_ERROR_FATAL; | 899 return JBIG2_ERROR_FATAL; |
| 922 pTRD->SBHUFFRDY = pSeg->m_Result.ht; | 900 pTRD->SBHUFFRDY = pSeg->m_Result.ht; |
| 923 } | 901 } |
| 924 if (cSBHUFFRSIZE == 0) { | 902 if (cSBHUFFRSIZE == 0) { |
| 925 Table_B1.reset(new CJBig2_HuffmanTable(HuffmanTable_B1, | 903 Table_B1.reset(new CJBig2_HuffmanTable( |
| 926 FX_ArraySize(HuffmanTable_B1), | 904 HuffmanTable_B1, HuffmanTable_B1_Size, HuffmanTable_HTOOB_B1)); |
| 927 HuffmanTable_HTOOB_B1)); | |
| 928 pTRD->SBHUFFRSIZE = Table_B1.get(); | 905 pTRD->SBHUFFRSIZE = Table_B1.get(); |
| 929 } else { | 906 } else { |
| 930 CJBig2_Segment* pSeg = | 907 CJBig2_Segment* pSeg = |
| 931 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); | 908 findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); |
| 932 if (!pSeg) | 909 if (!pSeg) |
| 933 return JBIG2_ERROR_FATAL; | 910 return JBIG2_ERROR_FATAL; |
| 934 pTRD->SBHUFFRSIZE = pSeg->m_Result.ht; | 911 pTRD->SBHUFFRSIZE = pSeg->m_Result.ht; |
| 935 } | 912 } |
| 936 } | 913 } |
| 937 std::unique_ptr<JBig2ArithCtx, FxFreeDeleter> grContext; | 914 std::unique_ptr<JBig2ArithCtx, FxFreeDeleter> grContext; |
| (...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1431 SBSYMCODES[CURTEMP].code = CURCODE; | 1408 SBSYMCODES[CURTEMP].code = CURCODE; |
| 1432 CURCODE = CURCODE + 1; | 1409 CURCODE = CURCODE + 1; |
| 1433 } | 1410 } |
| 1434 CURTEMP = CURTEMP + 1; | 1411 CURTEMP = CURTEMP + 1; |
| 1435 } | 1412 } |
| 1436 CURLEN = CURLEN + 1; | 1413 CURLEN = CURLEN + 1; |
| 1437 } | 1414 } |
| 1438 FX_Free(LENCOUNT); | 1415 FX_Free(LENCOUNT); |
| 1439 FX_Free(FIRSTCODE); | 1416 FX_Free(FIRSTCODE); |
| 1440 } | 1417 } |
| OLD | NEW |