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 "JBig2_GeneralDecoder.h" | 7 #include "JBig2_GeneralDecoder.h" |
8 #include "JBig2_ArithDecoder.h" | 8 #include "JBig2_ArithDecoder.h" |
9 #include "JBig2_ArithIntDecoder.h" | 9 #include "JBig2_ArithIntDecoder.h" |
10 #include "JBig2_HuffmanDecoder.h" | 10 #include "JBig2_HuffmanDecoder.h" |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 } | 143 } |
144 } | 144 } |
145 return GBREG; | 145 return GBREG; |
146 } | 146 } |
147 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template0_opt2(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) | 147 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template0_opt2(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) |
148 { | 148 { |
149 FX_BOOL LTP, SLTP, bVal; | 149 FX_BOOL LTP, SLTP, bVal; |
150 FX_DWORD CONTEXT; | 150 FX_DWORD CONTEXT; |
151 CJBig2_Image *GBREG; | 151 CJBig2_Image *GBREG; |
152 FX_DWORD line1, line2; | 152 FX_DWORD line1, line2; |
153 FX_BYTE *pLine, cVal; | 153 uint8_t *pLine, cVal; |
154 FX_INTPTR nStride, nStride2; | 154 intptr_t nStride, nStride2; |
155 FX_INT32 nBits, k; | 155 int32_t nBits, k; |
156 LTP = 0; | 156 LTP = 0; |
157 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 157 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
158 if (GBREG->m_pData == NULL) { | 158 if (GBREG->m_pData == NULL) { |
159 delete GBREG; | 159 delete GBREG; |
160 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); | 160 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); |
161 return NULL; | 161 return NULL; |
162 } | 162 } |
163 pLine = GBREG->m_pData; | 163 pLine = GBREG->m_pData; |
164 nStride = GBREG->m_nStride; | 164 nStride = GBREG->m_nStride; |
165 nStride2 = nStride << 1; | 165 nStride2 = nStride << 1; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 pLine += nStride; | 210 pLine += nStride; |
211 } | 211 } |
212 return GBREG; | 212 return GBREG; |
213 } | 213 } |
214 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template0_opt3(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) | 214 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template0_opt3(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) |
215 { | 215 { |
216 FX_BOOL LTP, SLTP, bVal; | 216 FX_BOOL LTP, SLTP, bVal; |
217 FX_DWORD CONTEXT; | 217 FX_DWORD CONTEXT; |
218 CJBig2_Image *GBREG; | 218 CJBig2_Image *GBREG; |
219 FX_DWORD line1, line2; | 219 FX_DWORD line1, line2; |
220 FX_BYTE *pLine, *pLine1, *pLine2, cVal; | 220 uint8_t *pLine, *pLine1, *pLine2, cVal; |
221 FX_INT32 nStride, nStride2, k; | 221 int32_t nStride, nStride2, k; |
222 FX_INT32 nLineBytes, nBitsLeft, cc; | 222 int32_t nLineBytes, nBitsLeft, cc; |
223 LTP = 0; | 223 LTP = 0; |
224 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 224 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
225 if (GBREG->m_pData == NULL) { | 225 if (GBREG->m_pData == NULL) { |
226 delete GBREG; | 226 delete GBREG; |
227 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); | 227 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); |
228 return NULL; | 228 return NULL; |
229 } | 229 } |
230 pLine = GBREG->m_pData; | 230 pLine = GBREG->m_pData; |
231 nStride = GBREG->m_nStride; | 231 nStride = GBREG->m_nStride; |
232 nStride2 = nStride << 1; | 232 nStride2 = nStride << 1; |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 } | 394 } |
395 } | 395 } |
396 return GBREG; | 396 return GBREG; |
397 } | 397 } |
398 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template1_opt2(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) | 398 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template1_opt2(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) |
399 { | 399 { |
400 FX_BOOL LTP, SLTP, bVal; | 400 FX_BOOL LTP, SLTP, bVal; |
401 FX_DWORD CONTEXT; | 401 FX_DWORD CONTEXT; |
402 CJBig2_Image *GBREG; | 402 CJBig2_Image *GBREG; |
403 FX_DWORD line1, line2; | 403 FX_DWORD line1, line2; |
404 FX_BYTE *pLine, cVal; | 404 uint8_t *pLine, cVal; |
405 FX_INTPTR nStride, nStride2; | 405 intptr_t nStride, nStride2; |
406 FX_INT32 nBits, k; | 406 int32_t nBits, k; |
407 LTP = 0; | 407 LTP = 0; |
408 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 408 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
409 if (GBREG->m_pData == NULL) { | 409 if (GBREG->m_pData == NULL) { |
410 delete GBREG; | 410 delete GBREG; |
411 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); | 411 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); |
412 return NULL; | 412 return NULL; |
413 } | 413 } |
414 pLine = GBREG->m_pData; | 414 pLine = GBREG->m_pData; |
415 nStride = GBREG->m_nStride; | 415 nStride = GBREG->m_nStride; |
416 nStride2 = nStride << 1; | 416 nStride2 = nStride << 1; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
461 pLine += nStride; | 461 pLine += nStride; |
462 } | 462 } |
463 return GBREG; | 463 return GBREG; |
464 } | 464 } |
465 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template1_opt3(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) | 465 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template1_opt3(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) |
466 { | 466 { |
467 FX_BOOL LTP, SLTP, bVal; | 467 FX_BOOL LTP, SLTP, bVal; |
468 FX_DWORD CONTEXT; | 468 FX_DWORD CONTEXT; |
469 CJBig2_Image *GBREG; | 469 CJBig2_Image *GBREG; |
470 FX_DWORD line1, line2; | 470 FX_DWORD line1, line2; |
471 FX_BYTE *pLine, *pLine1, *pLine2, cVal; | 471 uint8_t *pLine, *pLine1, *pLine2, cVal; |
472 FX_INT32 nStride, nStride2, k; | 472 int32_t nStride, nStride2, k; |
473 FX_INT32 nLineBytes, nBitsLeft, cc; | 473 int32_t nLineBytes, nBitsLeft, cc; |
474 LTP = 0; | 474 LTP = 0; |
475 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 475 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
476 if (GBREG->m_pData == NULL) { | 476 if (GBREG->m_pData == NULL) { |
477 delete GBREG; | 477 delete GBREG; |
478 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); | 478 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); |
479 return NULL; | 479 return NULL; |
480 } | 480 } |
481 pLine = GBREG->m_pData; | 481 pLine = GBREG->m_pData; |
482 nStride = GBREG->m_nStride; | 482 nStride = GBREG->m_nStride; |
483 nStride2 = nStride << 1; | 483 nStride2 = nStride << 1; |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 } | 640 } |
641 } | 641 } |
642 return GBREG; | 642 return GBREG; |
643 } | 643 } |
644 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template2_opt2(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) | 644 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template2_opt2(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) |
645 { | 645 { |
646 FX_BOOL LTP, SLTP, bVal; | 646 FX_BOOL LTP, SLTP, bVal; |
647 FX_DWORD CONTEXT; | 647 FX_DWORD CONTEXT; |
648 CJBig2_Image *GBREG; | 648 CJBig2_Image *GBREG; |
649 FX_DWORD line1, line2; | 649 FX_DWORD line1, line2; |
650 FX_BYTE *pLine, cVal; | 650 uint8_t *pLine, cVal; |
651 FX_INTPTR nStride, nStride2; | 651 intptr_t nStride, nStride2; |
652 FX_INT32 nBits, k; | 652 int32_t nBits, k; |
653 LTP = 0; | 653 LTP = 0; |
654 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 654 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
655 if (GBREG->m_pData == NULL) { | 655 if (GBREG->m_pData == NULL) { |
656 delete GBREG; | 656 delete GBREG; |
657 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); | 657 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); |
658 return NULL; | 658 return NULL; |
659 } | 659 } |
660 pLine = GBREG->m_pData; | 660 pLine = GBREG->m_pData; |
661 nStride = GBREG->m_nStride; | 661 nStride = GBREG->m_nStride; |
662 nStride2 = nStride << 1; | 662 nStride2 = nStride << 1; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
707 pLine += nStride; | 707 pLine += nStride; |
708 } | 708 } |
709 return GBREG; | 709 return GBREG; |
710 } | 710 } |
711 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template2_opt3(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) | 711 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template2_opt3(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) |
712 { | 712 { |
713 FX_BOOL LTP, SLTP, bVal; | 713 FX_BOOL LTP, SLTP, bVal; |
714 FX_DWORD CONTEXT; | 714 FX_DWORD CONTEXT; |
715 CJBig2_Image *GBREG; | 715 CJBig2_Image *GBREG; |
716 FX_DWORD line1, line2; | 716 FX_DWORD line1, line2; |
717 FX_BYTE *pLine, *pLine1, *pLine2, cVal; | 717 uint8_t *pLine, *pLine1, *pLine2, cVal; |
718 FX_INT32 nStride, nStride2, k; | 718 int32_t nStride, nStride2, k; |
719 FX_INT32 nLineBytes, nBitsLeft, cc; | 719 int32_t nLineBytes, nBitsLeft, cc; |
720 LTP = 0; | 720 LTP = 0; |
721 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 721 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
722 if (GBREG->m_pData == NULL) { | 722 if (GBREG->m_pData == NULL) { |
723 delete GBREG; | 723 delete GBREG; |
724 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); | 724 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); |
725 return NULL; | 725 return NULL; |
726 } | 726 } |
727 pLine = GBREG->m_pData; | 727 pLine = GBREG->m_pData; |
728 nStride = GBREG->m_nStride; | 728 nStride = GBREG->m_nStride; |
729 nStride2 = nStride << 1; | 729 nStride2 = nStride << 1; |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
880 } | 880 } |
881 } | 881 } |
882 return GBREG; | 882 return GBREG; |
883 } | 883 } |
884 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template3_opt2(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) | 884 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template3_opt2(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) |
885 { | 885 { |
886 FX_BOOL LTP, SLTP, bVal; | 886 FX_BOOL LTP, SLTP, bVal; |
887 FX_DWORD CONTEXT; | 887 FX_DWORD CONTEXT; |
888 CJBig2_Image *GBREG; | 888 CJBig2_Image *GBREG; |
889 FX_DWORD line1; | 889 FX_DWORD line1; |
890 FX_BYTE *pLine, cVal; | 890 uint8_t *pLine, cVal; |
891 FX_INTPTR nStride; | 891 intptr_t nStride; |
892 FX_INT32 nBits, k; | 892 int32_t nBits, k; |
893 LTP = 0; | 893 LTP = 0; |
894 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 894 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
895 if (GBREG->m_pData == NULL) { | 895 if (GBREG->m_pData == NULL) { |
896 delete GBREG; | 896 delete GBREG; |
897 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); | 897 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); |
898 return NULL; | 898 return NULL; |
899 } | 899 } |
900 pLine = GBREG->m_pData; | 900 pLine = GBREG->m_pData; |
901 nStride = GBREG->m_nStride; | 901 nStride = GBREG->m_nStride; |
902 for(FX_DWORD h = 0; h < GBH; h++) { | 902 for(FX_DWORD h = 0; h < GBH; h++) { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
938 pLine += nStride; | 938 pLine += nStride; |
939 } | 939 } |
940 return GBREG; | 940 return GBREG; |
941 } | 941 } |
942 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template3_opt3(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) | 942 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template3_opt3(CJBig2_ArithDecoder *p
ArithDecoder, JBig2ArithCtx *gbContext) |
943 { | 943 { |
944 FX_BOOL LTP, SLTP, bVal; | 944 FX_BOOL LTP, SLTP, bVal; |
945 FX_DWORD CONTEXT; | 945 FX_DWORD CONTEXT; |
946 CJBig2_Image *GBREG; | 946 CJBig2_Image *GBREG; |
947 FX_DWORD line1; | 947 FX_DWORD line1; |
948 FX_BYTE *pLine, *pLine1, cVal; | 948 uint8_t *pLine, *pLine1, cVal; |
949 FX_INT32 nStride, k; | 949 int32_t nStride, k; |
950 FX_INT32 nLineBytes, nBitsLeft, cc; | 950 int32_t nLineBytes, nBitsLeft, cc; |
951 LTP = 0; | 951 LTP = 0; |
952 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 952 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
953 if (GBREG->m_pData == NULL) { | 953 if (GBREG->m_pData == NULL) { |
954 delete GBREG; | 954 delete GBREG; |
955 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); | 955 m_pModule->JBig2_Error("Generic region decoding procedure: Create Image
Failed with width = %d, height = %d\n", GBW, GBH); |
956 return NULL; | 956 return NULL; |
957 } | 957 } |
958 pLine = GBREG->m_pData; | 958 pLine = GBREG->m_pData; |
959 nStride = GBREG->m_nStride; | 959 nStride = GBREG->m_nStride; |
960 nLineBytes = ((GBW + 7) >> 3) - 1; | 960 nLineBytes = ((GBW + 7) >> 3) - 1; |
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1421 } | 1421 } |
1422 } | 1422 } |
1423 return GRREG; | 1423 return GRREG; |
1424 } | 1424 } |
1425 CJBig2_Image *CJBig2_GRRDProc::decode_Template0_opt(CJBig2_ArithDecoder *pArithD
ecoder, JBig2ArithCtx *grContext) | 1425 CJBig2_Image *CJBig2_GRRDProc::decode_Template0_opt(CJBig2_ArithDecoder *pArithD
ecoder, JBig2ArithCtx *grContext) |
1426 { | 1426 { |
1427 FX_BOOL LTP, SLTP, bVal; | 1427 FX_BOOL LTP, SLTP, bVal; |
1428 FX_DWORD CONTEXT; | 1428 FX_DWORD CONTEXT; |
1429 CJBig2_Image *GRREG; | 1429 CJBig2_Image *GRREG; |
1430 FX_DWORD line1, line1_r, line2_r, line3_r; | 1430 FX_DWORD line1, line1_r, line2_r, line3_r; |
1431 FX_BYTE *pLine, *pLineR, cVal; | 1431 uint8_t *pLine, *pLineR, cVal; |
1432 FX_INTPTR nStride, nStrideR, nOffset; | 1432 intptr_t nStride, nStrideR, nOffset; |
1433 FX_INT32 k, nBits; | 1433 int32_t k, nBits; |
1434 FX_INT32 GRWR, GRHR; | 1434 int32_t GRWR, GRHR; |
1435 FX_INT32 GRW, GRH; | 1435 int32_t GRW, GRH; |
1436 GRW = (FX_INT32)CJBig2_GRRDProc::GRW; | 1436 GRW = (int32_t)CJBig2_GRRDProc::GRW; |
1437 GRH = (FX_INT32)CJBig2_GRRDProc::GRH; | 1437 GRH = (int32_t)CJBig2_GRRDProc::GRH; |
1438 LTP = 0; | 1438 LTP = 0; |
1439 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); | 1439 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); |
1440 if (GRREG->m_pData == NULL) { | 1440 if (GRREG->m_pData == NULL) { |
1441 delete GRREG; | 1441 delete GRREG; |
1442 m_pModule->JBig2_Error("Generic refinement region decoding procedure: Cr
eate Image Failed with width = %d, height = %d\n", GRW, GRH); | 1442 m_pModule->JBig2_Error("Generic refinement region decoding procedure: Cr
eate Image Failed with width = %d, height = %d\n", GRW, GRH); |
1443 return NULL; | 1443 return NULL; |
1444 } | 1444 } |
1445 pLine = GRREG->m_pData; | 1445 pLine = GRREG->m_pData; |
1446 pLineR = GRREFERENCE->m_pData; | 1446 pLineR = GRREFERENCE->m_pData; |
1447 nStride = GRREG->m_nStride; | 1447 nStride = GRREG->m_nStride; |
1448 nStrideR = GRREFERENCE->m_nStride; | 1448 nStrideR = GRREFERENCE->m_nStride; |
1449 GRWR = (FX_INT32)GRREFERENCE->m_nWidth; | 1449 GRWR = (int32_t)GRREFERENCE->m_nWidth; |
1450 GRHR = (FX_INT32)GRREFERENCE->m_nHeight; | 1450 GRHR = (int32_t)GRREFERENCE->m_nHeight; |
1451 if (GRREFERENCEDY < -GRHR + 1 || GRREFERENCEDY > GRHR - 1) { | 1451 if (GRREFERENCEDY < -GRHR + 1 || GRREFERENCEDY > GRHR - 1) { |
1452 GRREFERENCEDY = 0; | 1452 GRREFERENCEDY = 0; |
1453 } | 1453 } |
1454 nOffset = -GRREFERENCEDY * nStrideR; | 1454 nOffset = -GRREFERENCEDY * nStrideR; |
1455 for (FX_INT32 h = 0; h < GRH; h++) { | 1455 for (int32_t h = 0; h < GRH; h++) { |
1456 if(TPGRON) { | 1456 if(TPGRON) { |
1457 SLTP = pArithDecoder->DECODE(&grContext[0x0010]); | 1457 SLTP = pArithDecoder->DECODE(&grContext[0x0010]); |
1458 LTP = LTP ^ SLTP; | 1458 LTP = LTP ^ SLTP; |
1459 } | 1459 } |
1460 line1 = (h > 0) ? pLine[-nStride] << 4 : 0; | 1460 line1 = (h > 0) ? pLine[-nStride] << 4 : 0; |
1461 FX_INT32 reference_h = h - GRREFERENCEDY; | 1461 int32_t reference_h = h - GRREFERENCEDY; |
1462 FX_BOOL line1_r_ok = (reference_h > 0 && reference_h < GRHR + 1); | 1462 FX_BOOL line1_r_ok = (reference_h > 0 && reference_h < GRHR + 1); |
1463 FX_BOOL line2_r_ok = (reference_h > -1 && reference_h < GRHR); | 1463 FX_BOOL line2_r_ok = (reference_h > -1 && reference_h < GRHR); |
1464 FX_BOOL line3_r_ok = (reference_h > -2 && reference_h < GRHR - 1); | 1464 FX_BOOL line3_r_ok = (reference_h > -2 && reference_h < GRHR - 1); |
1465 line1_r = line1_r_ok ? pLineR[nOffset - nStrideR] : 0; | 1465 line1_r = line1_r_ok ? pLineR[nOffset - nStrideR] : 0; |
1466 line2_r = line2_r_ok ? pLineR[nOffset] : 0; | 1466 line2_r = line2_r_ok ? pLineR[nOffset] : 0; |
1467 line3_r = line3_r_ok ? pLineR[nOffset + nStrideR] : 0; | 1467 line3_r = line3_r_ok ? pLineR[nOffset + nStrideR] : 0; |
1468 if(LTP == 0) { | 1468 if(LTP == 0) { |
1469 CONTEXT = (line1 & 0x1c00) | (line1_r & 0x01c0) | 1469 CONTEXT = (line1 & 0x1c00) | (line1_r & 0x01c0) |
1470 | ((line2_r >> 3) & 0x0038) | ((line3_r >> 6) & 0x0007); | 1470 | ((line2_r >> 3) & 0x0038) | ((line3_r >> 6) & 0x0007); |
1471 for (FX_INT32 w = 0; w < GRW; w += 8) { | 1471 for (int32_t w = 0; w < GRW; w += 8) { |
1472 nBits = GRW - w > 8 ? 8 : GRW - w; | 1472 nBits = GRW - w > 8 ? 8 : GRW - w; |
1473 if (h > 0) | 1473 if (h > 0) |
1474 line1 = (line1 << 8) | | 1474 line1 = (line1 << 8) | |
1475 (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 4 :
0); | 1475 (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 4 :
0); |
1476 if (h > GRHR + GRREFERENCEDY + 1) { | 1476 if (h > GRHR + GRREFERENCEDY + 1) { |
1477 line1_r = 0; | 1477 line1_r = 0; |
1478 line2_r = 0; | 1478 line2_r = 0; |
1479 line3_r = 0; | 1479 line3_r = 0; |
1480 } else { | 1480 } else { |
1481 if(line1_r_ok) | 1481 if(line1_r_ok) |
(...skipping 17 matching lines...) Expand all Loading... |
1499 ((line1 >> (7 - k)) & 0x0400) | | 1499 ((line1 >> (7 - k)) & 0x0400) | |
1500 ((line1_r >> (7 - k)) & 0x0040) | | 1500 ((line1_r >> (7 - k)) & 0x0040) | |
1501 ((line2_r >> (10 - k)) & 0x0008) | | 1501 ((line2_r >> (10 - k)) & 0x0008) | |
1502 ((line3_r >> (13 - k)) & 0x0001); | 1502 ((line3_r >> (13 - k)) & 0x0001); |
1503 } | 1503 } |
1504 pLine[w >> 3] = cVal; | 1504 pLine[w >> 3] = cVal; |
1505 } | 1505 } |
1506 } else { | 1506 } else { |
1507 CONTEXT = (line1 & 0x1c00) | (line1_r & 0x01c0) | 1507 CONTEXT = (line1 & 0x1c00) | (line1_r & 0x01c0) |
1508 | ((line2_r >> 3) & 0x0038) | ((line3_r >> 6) & 0x0007); | 1508 | ((line2_r >> 3) & 0x0038) | ((line3_r >> 6) & 0x0007); |
1509 for (FX_INT32 w = 0; w < GRW; w += 8) { | 1509 for (int32_t w = 0; w < GRW; w += 8) { |
1510 nBits = GRW - w > 8 ? 8 : GRW - w; | 1510 nBits = GRW - w > 8 ? 8 : GRW - w; |
1511 if (h > 0) | 1511 if (h > 0) |
1512 line1 = (line1 << 8) | | 1512 line1 = (line1 << 8) | |
1513 (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 4 :
0); | 1513 (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 4 :
0); |
1514 if(line1_r_ok) | 1514 if(line1_r_ok) |
1515 line1_r = (line1_r << 8) | | 1515 line1_r = (line1_r << 8) | |
1516 (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >>
3) + 1] : 0); | 1516 (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >>
3) + 1] : 0); |
1517 if(line2_r_ok) | 1517 if(line2_r_ok) |
1518 line2_r = (line2_r << 8) | | 1518 line2_r = (line2_r << 8) | |
1519 (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0
); | 1519 (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0
); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1630 } | 1630 } |
1631 } | 1631 } |
1632 return GRREG; | 1632 return GRREG; |
1633 } | 1633 } |
1634 CJBig2_Image *CJBig2_GRRDProc::decode_Template1_opt(CJBig2_ArithDecoder *pArithD
ecoder, JBig2ArithCtx *grContext) | 1634 CJBig2_Image *CJBig2_GRRDProc::decode_Template1_opt(CJBig2_ArithDecoder *pArithD
ecoder, JBig2ArithCtx *grContext) |
1635 { | 1635 { |
1636 FX_BOOL LTP, SLTP, bVal; | 1636 FX_BOOL LTP, SLTP, bVal; |
1637 FX_DWORD CONTEXT; | 1637 FX_DWORD CONTEXT; |
1638 CJBig2_Image *GRREG; | 1638 CJBig2_Image *GRREG; |
1639 FX_DWORD line1, line1_r, line2_r, line3_r; | 1639 FX_DWORD line1, line1_r, line2_r, line3_r; |
1640 FX_BYTE *pLine, *pLineR, cVal; | 1640 uint8_t *pLine, *pLineR, cVal; |
1641 FX_INTPTR nStride, nStrideR, nOffset; | 1641 intptr_t nStride, nStrideR, nOffset; |
1642 FX_INT32 k, nBits; | 1642 int32_t k, nBits; |
1643 FX_INT32 GRWR, GRHR; | 1643 int32_t GRWR, GRHR; |
1644 FX_INT32 GRW, GRH; | 1644 int32_t GRW, GRH; |
1645 GRW = (FX_INT32)CJBig2_GRRDProc::GRW; | 1645 GRW = (int32_t)CJBig2_GRRDProc::GRW; |
1646 GRH = (FX_INT32)CJBig2_GRRDProc::GRH; | 1646 GRH = (int32_t)CJBig2_GRRDProc::GRH; |
1647 LTP = 0; | 1647 LTP = 0; |
1648 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); | 1648 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); |
1649 if (GRREG->m_pData == NULL) { | 1649 if (GRREG->m_pData == NULL) { |
1650 delete GRREG; | 1650 delete GRREG; |
1651 m_pModule->JBig2_Error("Generic refinement region decoding procedure: Cr
eate Image Failed with width = %d, height = %d\n", GRW, GRH); | 1651 m_pModule->JBig2_Error("Generic refinement region decoding procedure: Cr
eate Image Failed with width = %d, height = %d\n", GRW, GRH); |
1652 return NULL; | 1652 return NULL; |
1653 } | 1653 } |
1654 pLine = GRREG->m_pData; | 1654 pLine = GRREG->m_pData; |
1655 pLineR = GRREFERENCE->m_pData; | 1655 pLineR = GRREFERENCE->m_pData; |
1656 nStride = GRREG->m_nStride; | 1656 nStride = GRREG->m_nStride; |
1657 nStrideR = GRREFERENCE->m_nStride; | 1657 nStrideR = GRREFERENCE->m_nStride; |
1658 GRWR = (FX_INT32)GRREFERENCE->m_nWidth; | 1658 GRWR = (int32_t)GRREFERENCE->m_nWidth; |
1659 GRHR = (FX_INT32)GRREFERENCE->m_nHeight; | 1659 GRHR = (int32_t)GRREFERENCE->m_nHeight; |
1660 if (GRREFERENCEDY < -GRHR + 1 || GRREFERENCEDY > GRHR - 1) { | 1660 if (GRREFERENCEDY < -GRHR + 1 || GRREFERENCEDY > GRHR - 1) { |
1661 GRREFERENCEDY = 0; | 1661 GRREFERENCEDY = 0; |
1662 } | 1662 } |
1663 nOffset = -GRREFERENCEDY * nStrideR; | 1663 nOffset = -GRREFERENCEDY * nStrideR; |
1664 for (FX_INT32 h = 0; h < GRH; h++) { | 1664 for (int32_t h = 0; h < GRH; h++) { |
1665 if(TPGRON) { | 1665 if(TPGRON) { |
1666 SLTP = pArithDecoder->DECODE(&grContext[0x0008]); | 1666 SLTP = pArithDecoder->DECODE(&grContext[0x0008]); |
1667 LTP = LTP ^ SLTP; | 1667 LTP = LTP ^ SLTP; |
1668 } | 1668 } |
1669 line1 = (h > 0) ? pLine[-nStride] << 1 : 0; | 1669 line1 = (h > 0) ? pLine[-nStride] << 1 : 0; |
1670 FX_INT32 reference_h = h - GRREFERENCEDY; | 1670 int32_t reference_h = h - GRREFERENCEDY; |
1671 FX_BOOL line1_r_ok = (reference_h > 0 && reference_h < GRHR + 1); | 1671 FX_BOOL line1_r_ok = (reference_h > 0 && reference_h < GRHR + 1); |
1672 FX_BOOL line2_r_ok = (reference_h > -1 && reference_h < GRHR); | 1672 FX_BOOL line2_r_ok = (reference_h > -1 && reference_h < GRHR); |
1673 FX_BOOL line3_r_ok = (reference_h > -2 && reference_h < GRHR - 1); | 1673 FX_BOOL line3_r_ok = (reference_h > -2 && reference_h < GRHR - 1); |
1674 line1_r = line1_r_ok ? pLineR[nOffset - nStrideR] : 0; | 1674 line1_r = line1_r_ok ? pLineR[nOffset - nStrideR] : 0; |
1675 line2_r = line2_r_ok ? pLineR[nOffset] : 0; | 1675 line2_r = line2_r_ok ? pLineR[nOffset] : 0; |
1676 line3_r = line3_r_ok ? pLineR[nOffset + nStrideR] : 0; | 1676 line3_r = line3_r_ok ? pLineR[nOffset + nStrideR] : 0; |
1677 if(LTP == 0) { | 1677 if(LTP == 0) { |
1678 CONTEXT = (line1 & 0x0380) | ((line1_r >> 2) & 0x0020) | 1678 CONTEXT = (line1 & 0x0380) | ((line1_r >> 2) & 0x0020) |
1679 | ((line2_r >> 4) & 0x001c) | ((line3_r >> 6) & 0x0003); | 1679 | ((line2_r >> 4) & 0x001c) | ((line3_r >> 6) & 0x0003); |
1680 for (FX_INT32 w = 0; w < GRW; w += 8) { | 1680 for (int32_t w = 0; w < GRW; w += 8) { |
1681 nBits = GRW - w > 8 ? 8 : GRW - w; | 1681 nBits = GRW - w > 8 ? 8 : GRW - w; |
1682 if (h > 0) | 1682 if (h > 0) |
1683 line1 = (line1 << 8) | | 1683 line1 = (line1 << 8) | |
1684 (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 1 :
0); | 1684 (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 1 :
0); |
1685 if(line1_r_ok) | 1685 if(line1_r_ok) |
1686 line1_r = (line1_r << 8) | | 1686 line1_r = (line1_r << 8) | |
1687 (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >>
3) + 1] : 0); | 1687 (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >>
3) + 1] : 0); |
1688 if(line2_r_ok) | 1688 if(line2_r_ok) |
1689 line2_r = (line2_r << 8) | | 1689 line2_r = (line2_r << 8) | |
1690 (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0
); | 1690 (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0
); |
(...skipping 11 matching lines...) Expand all Loading... |
1702 ((line1 >> (7 - k)) & 0x0080) | | 1702 ((line1 >> (7 - k)) & 0x0080) | |
1703 ((line1_r >> (9 - k)) & 0x0020) | | 1703 ((line1_r >> (9 - k)) & 0x0020) | |
1704 ((line2_r >> (11 - k)) & 0x0004) | | 1704 ((line2_r >> (11 - k)) & 0x0004) | |
1705 ((line3_r >> (13 - k)) & 0x0001); | 1705 ((line3_r >> (13 - k)) & 0x0001); |
1706 } | 1706 } |
1707 pLine[w >> 3] = cVal; | 1707 pLine[w >> 3] = cVal; |
1708 } | 1708 } |
1709 } else { | 1709 } else { |
1710 CONTEXT = (line1 & 0x0380) | ((line1_r >> 2) & 0x0020) | 1710 CONTEXT = (line1 & 0x0380) | ((line1_r >> 2) & 0x0020) |
1711 | ((line2_r >> 4) & 0x001c) | ((line3_r >> 6) & 0x0003); | 1711 | ((line2_r >> 4) & 0x001c) | ((line3_r >> 6) & 0x0003); |
1712 for (FX_INT32 w = 0; w < GRW; w += 8) { | 1712 for (int32_t w = 0; w < GRW; w += 8) { |
1713 nBits = GRW - w > 8 ? 8 : GRW - w; | 1713 nBits = GRW - w > 8 ? 8 : GRW - w; |
1714 if (h > 0) | 1714 if (h > 0) |
1715 line1 = (line1 << 8) | | 1715 line1 = (line1 << 8) | |
1716 (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 1 :
0); | 1716 (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 1 :
0); |
1717 if(line1_r_ok) | 1717 if(line1_r_ok) |
1718 line1_r = (line1_r << 8) | | 1718 line1_r = (line1_r << 8) | |
1719 (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >>
3) + 1] : 0); | 1719 (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >>
3) + 1] : 0); |
1720 if(line2_r_ok) | 1720 if(line2_r_ok) |
1721 line2_r = (line2_r << 8) | | 1721 line2_r = (line2_r << 8) | |
1722 (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0
); | 1722 (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0
); |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1865 bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); | 1865 bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); |
1866 GRREG->setPixel(w, h, bVal); | 1866 GRREG->setPixel(w, h, bVal); |
1867 } | 1867 } |
1868 } | 1868 } |
1869 } | 1869 } |
1870 } | 1870 } |
1871 return GRREG; | 1871 return GRREG; |
1872 } | 1872 } |
1873 CJBig2_Image *CJBig2_TRDProc::decode_Huffman(CJBig2_BitStream *pStream, JBig2Ari
thCtx *grContext) | 1873 CJBig2_Image *CJBig2_TRDProc::decode_Huffman(CJBig2_BitStream *pStream, JBig2Ari
thCtx *grContext) |
1874 { | 1874 { |
1875 FX_INT32 STRIPT, FIRSTS; | 1875 int32_t STRIPT, FIRSTS; |
1876 FX_DWORD NINSTANCES; | 1876 FX_DWORD NINSTANCES; |
1877 FX_INT32 DT, DFS, CURS; | 1877 int32_t DT, DFS, CURS; |
1878 FX_BYTE CURT; | 1878 uint8_t CURT; |
1879 FX_INT32 SI, TI; | 1879 int32_t SI, TI; |
1880 FX_DWORD IDI; | 1880 FX_DWORD IDI; |
1881 CJBig2_Image *IBI; | 1881 CJBig2_Image *IBI; |
1882 FX_DWORD WI, HI; | 1882 FX_DWORD WI, HI; |
1883 FX_INT32 IDS; | 1883 int32_t IDS; |
1884 FX_BOOL RI; | 1884 FX_BOOL RI; |
1885 FX_INT32 RDWI, RDHI, RDXI, RDYI; | 1885 int32_t RDWI, RDHI, RDXI, RDYI; |
1886 CJBig2_Image *IBOI; | 1886 CJBig2_Image *IBOI; |
1887 FX_DWORD WOI, HOI; | 1887 FX_DWORD WOI, HOI; |
1888 CJBig2_Image *SBREG; | 1888 CJBig2_Image *SBREG; |
1889 FX_BOOL bFirst; | 1889 FX_BOOL bFirst; |
1890 FX_DWORD nTmp; | 1890 FX_DWORD nTmp; |
1891 FX_INT32 nVal, nBits; | 1891 int32_t nVal, nBits; |
1892 CJBig2_HuffmanDecoder *pHuffmanDecoder; | 1892 CJBig2_HuffmanDecoder *pHuffmanDecoder; |
1893 CJBig2_GRRDProc *pGRRD; | 1893 CJBig2_GRRDProc *pGRRD; |
1894 CJBig2_ArithDecoder *pArithDecoder; | 1894 CJBig2_ArithDecoder *pArithDecoder; |
1895 JBIG2_ALLOC(pHuffmanDecoder, CJBig2_HuffmanDecoder(pStream)); | 1895 JBIG2_ALLOC(pHuffmanDecoder, CJBig2_HuffmanDecoder(pStream)); |
1896 JBIG2_ALLOC(SBREG, CJBig2_Image(SBW, SBH)); | 1896 JBIG2_ALLOC(SBREG, CJBig2_Image(SBW, SBH)); |
1897 SBREG->fill(SBDEFPIXEL); | 1897 SBREG->fill(SBDEFPIXEL); |
1898 if(pHuffmanDecoder->decodeAValue(SBHUFFDT, &STRIPT) != 0) { | 1898 if(pHuffmanDecoder->decodeAValue(SBHUFFDT, &STRIPT) != 0) { |
1899 m_pModule->JBig2_Error("text region decoding procedure (huffman): too sh
ort."); | 1899 m_pModule->JBig2_Error("text region decoding procedure (huffman): too sh
ort."); |
1900 goto failed; | 1900 goto failed; |
1901 } | 1901 } |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2085 delete pHuffmanDecoder; | 2085 delete pHuffmanDecoder; |
2086 return SBREG; | 2086 return SBREG; |
2087 failed: | 2087 failed: |
2088 delete pHuffmanDecoder; | 2088 delete pHuffmanDecoder; |
2089 delete SBREG; | 2089 delete SBREG; |
2090 return NULL; | 2090 return NULL; |
2091 } | 2091 } |
2092 CJBig2_Image *CJBig2_TRDProc::decode_Arith(CJBig2_ArithDecoder *pArithDecoder, J
Big2ArithCtx *grContext, | 2092 CJBig2_Image *CJBig2_TRDProc::decode_Arith(CJBig2_ArithDecoder *pArithDecoder, J
Big2ArithCtx *grContext, |
2093 JBig2IntDecoderState *pIDS) | 2093 JBig2IntDecoderState *pIDS) |
2094 { | 2094 { |
2095 FX_INT32 STRIPT, FIRSTS; | 2095 int32_t STRIPT, FIRSTS; |
2096 FX_DWORD NINSTANCES; | 2096 FX_DWORD NINSTANCES; |
2097 FX_INT32 DT, DFS, CURS; | 2097 int32_t DT, DFS, CURS; |
2098 FX_INT32 CURT; | 2098 int32_t CURT; |
2099 FX_INT32 SI, TI; | 2099 int32_t SI, TI; |
2100 FX_DWORD IDI; | 2100 FX_DWORD IDI; |
2101 CJBig2_Image *IBI; | 2101 CJBig2_Image *IBI; |
2102 FX_DWORD WI, HI; | 2102 FX_DWORD WI, HI; |
2103 FX_INT32 IDS; | 2103 int32_t IDS; |
2104 FX_BOOL RI; | 2104 FX_BOOL RI; |
2105 FX_INT32 RDWI, RDHI, RDXI, RDYI; | 2105 int32_t RDWI, RDHI, RDXI, RDYI; |
2106 CJBig2_Image *IBOI; | 2106 CJBig2_Image *IBOI; |
2107 FX_DWORD WOI, HOI; | 2107 FX_DWORD WOI, HOI; |
2108 CJBig2_Image *SBREG; | 2108 CJBig2_Image *SBREG; |
2109 FX_BOOL bFirst; | 2109 FX_BOOL bFirst; |
2110 FX_INT32 nRet, nVal; | 2110 int32_t nRet, nVal; |
2111 FX_INT32 bRetained; | 2111 int32_t bRetained; |
2112 CJBig2_ArithIntDecoder *IADT, *IAFS, *IADS, *IAIT, *IARI, *IARDW, *IARDH, *I
ARDX, *IARDY; | 2112 CJBig2_ArithIntDecoder *IADT, *IAFS, *IADS, *IAIT, *IARI, *IARDW, *IARDH, *I
ARDX, *IARDY; |
2113 CJBig2_ArithIaidDecoder *IAID; | 2113 CJBig2_ArithIaidDecoder *IAID; |
2114 CJBig2_GRRDProc *pGRRD; | 2114 CJBig2_GRRDProc *pGRRD; |
2115 if(pIDS) { | 2115 if(pIDS) { |
2116 IADT = pIDS->IADT; | 2116 IADT = pIDS->IADT; |
2117 IAFS = pIDS->IAFS; | 2117 IAFS = pIDS->IAFS; |
2118 IADS = pIDS->IADS; | 2118 IADS = pIDS->IADS; |
2119 IAIT = pIDS->IAIT; | 2119 IAIT = pIDS->IAIT; |
2120 IARI = pIDS->IARI; | 2120 IARI = pIDS->IARI; |
2121 IARDW = pIDS->IARDW; | 2121 IARDW = pIDS->IARDW; |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2326 delete IAID; | 2326 delete IAID; |
2327 } | 2327 } |
2328 delete SBREG; | 2328 delete SBREG; |
2329 return NULL; | 2329 return NULL; |
2330 } | 2330 } |
2331 CJBig2_SymbolDict *CJBig2_SDDProc::decode_Arith(CJBig2_ArithDecoder *pArithDecod
er, | 2331 CJBig2_SymbolDict *CJBig2_SDDProc::decode_Arith(CJBig2_ArithDecoder *pArithDecod
er, |
2332 JBig2ArithCtx *gbContext, JBig2ArithCtx *grContext) | 2332 JBig2ArithCtx *gbContext, JBig2ArithCtx *grContext) |
2333 { | 2333 { |
2334 CJBig2_Image **SDNEWSYMS; | 2334 CJBig2_Image **SDNEWSYMS; |
2335 FX_DWORD HCHEIGHT, NSYMSDECODED; | 2335 FX_DWORD HCHEIGHT, NSYMSDECODED; |
2336 FX_INT32 HCDH; | 2336 int32_t HCDH; |
2337 FX_DWORD SYMWIDTH, TOTWIDTH; | 2337 FX_DWORD SYMWIDTH, TOTWIDTH; |
2338 FX_INT32 DW; | 2338 int32_t DW; |
2339 CJBig2_Image *BS; | 2339 CJBig2_Image *BS; |
2340 FX_DWORD I, J, REFAGGNINST; | 2340 FX_DWORD I, J, REFAGGNINST; |
2341 FX_BOOL *EXFLAGS; | 2341 FX_BOOL *EXFLAGS; |
2342 FX_DWORD EXINDEX; | 2342 FX_DWORD EXINDEX; |
2343 FX_BOOL CUREXFLAG; | 2343 FX_BOOL CUREXFLAG; |
2344 FX_DWORD EXRUNLENGTH; | 2344 FX_DWORD EXRUNLENGTH; |
2345 FX_INT32 nVal; | 2345 int32_t nVal; |
2346 FX_DWORD nTmp; | 2346 FX_DWORD nTmp; |
2347 FX_DWORD SBNUMSYMS; | 2347 FX_DWORD SBNUMSYMS; |
2348 FX_BYTE SBSYMCODELEN; | 2348 uint8_t SBSYMCODELEN; |
2349 FX_DWORD IDI; | 2349 FX_DWORD IDI; |
2350 FX_INT32 RDXI, RDYI; | 2350 int32_t RDXI, RDYI; |
2351 CJBig2_Image **SBSYMS; | 2351 CJBig2_Image **SBSYMS; |
2352 CJBig2_HuffmanTable *SBHUFFFS, *SBHUFFDS, *SBHUFFDT, *SBHUFFRDW, *SBHUFFRDH,
*SBHUFFRDX, *SBHUFFRDY, | 2352 CJBig2_HuffmanTable *SBHUFFFS, *SBHUFFDS, *SBHUFFDT, *SBHUFFRDW, *SBHUFFRDH,
*SBHUFFRDX, *SBHUFFRDY, |
2353 *SBHUFFRSIZE; | 2353 *SBHUFFRSIZE; |
2354 CJBig2_GRRDProc *pGRRD; | 2354 CJBig2_GRRDProc *pGRRD; |
2355 CJBig2_GRDProc *pGRD; | 2355 CJBig2_GRDProc *pGRD; |
2356 CJBig2_ArithIntDecoder *IADH, *IADW, *IAAI, *IARDX, *IARDY, *IAEX, | 2356 CJBig2_ArithIntDecoder *IADH, *IADW, *IAAI, *IARDX, *IARDY, *IAEX, |
2357 *IADT, *IAFS, *IADS, *IAIT, *IARI, *IARDW, *IARDH; | 2357 *IADT, *IAFS, *IADS, *IAIT, *IARI, *IARDW, *IARDH; |
2358 CJBig2_ArithIaidDecoder *IAID; | 2358 CJBig2_ArithIaidDecoder *IAID; |
2359 CJBig2_SymbolDict *pDict; | 2359 CJBig2_SymbolDict *pDict; |
2360 JBIG2_ALLOC(IADH, CJBig2_ArithIntDecoder()); | 2360 JBIG2_ALLOC(IADH, CJBig2_ArithIntDecoder()); |
2361 JBIG2_ALLOC(IADW, CJBig2_ArithIntDecoder()); | 2361 JBIG2_ALLOC(IADW, CJBig2_ArithIntDecoder()); |
2362 JBIG2_ALLOC(IAAI, CJBig2_ArithIntDecoder()); | 2362 JBIG2_ALLOC(IAAI, CJBig2_ArithIntDecoder()); |
2363 JBIG2_ALLOC(IARDX, CJBig2_ArithIntDecoder()); | 2363 JBIG2_ALLOC(IARDX, CJBig2_ArithIntDecoder()); |
2364 JBIG2_ALLOC(IARDY, CJBig2_ArithIntDecoder()); | 2364 JBIG2_ALLOC(IARDY, CJBig2_ArithIntDecoder()); |
2365 JBIG2_ALLOC(IAEX, CJBig2_ArithIntDecoder()); | 2365 JBIG2_ALLOC(IAEX, CJBig2_ArithIntDecoder()); |
2366 JBIG2_ALLOC(IADT, CJBig2_ArithIntDecoder()); | 2366 JBIG2_ALLOC(IADT, CJBig2_ArithIntDecoder()); |
2367 JBIG2_ALLOC(IAFS, CJBig2_ArithIntDecoder()); | 2367 JBIG2_ALLOC(IAFS, CJBig2_ArithIntDecoder()); |
2368 JBIG2_ALLOC(IADS, CJBig2_ArithIntDecoder()); | 2368 JBIG2_ALLOC(IADS, CJBig2_ArithIntDecoder()); |
2369 JBIG2_ALLOC(IAIT, CJBig2_ArithIntDecoder()); | 2369 JBIG2_ALLOC(IAIT, CJBig2_ArithIntDecoder()); |
2370 JBIG2_ALLOC(IARI, CJBig2_ArithIntDecoder()); | 2370 JBIG2_ALLOC(IARI, CJBig2_ArithIntDecoder()); |
2371 JBIG2_ALLOC(IARDW, CJBig2_ArithIntDecoder()); | 2371 JBIG2_ALLOC(IARDW, CJBig2_ArithIntDecoder()); |
2372 JBIG2_ALLOC(IARDH, CJBig2_ArithIntDecoder()); | 2372 JBIG2_ALLOC(IARDH, CJBig2_ArithIntDecoder()); |
2373 nTmp = 0; | 2373 nTmp = 0; |
2374 while((FX_DWORD)(1 << nTmp) < (SDNUMINSYMS + SDNUMNEWSYMS)) { | 2374 while((FX_DWORD)(1 << nTmp) < (SDNUMINSYMS + SDNUMNEWSYMS)) { |
2375 nTmp ++; | 2375 nTmp ++; |
2376 } | 2376 } |
2377 JBIG2_ALLOC(IAID, CJBig2_ArithIaidDecoder((FX_BYTE)nTmp)); | 2377 JBIG2_ALLOC(IAID, CJBig2_ArithIaidDecoder((uint8_t)nTmp)); |
2378 SDNEWSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS, sizeof(CJ
Big2_Image*)); | 2378 SDNEWSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS, sizeof(CJ
Big2_Image*)); |
2379 FXSYS_memset32(SDNEWSYMS, 0 , SDNUMNEWSYMS * sizeof(CJBig2_Image*)); | 2379 FXSYS_memset32(SDNEWSYMS, 0 , SDNUMNEWSYMS * sizeof(CJBig2_Image*)); |
2380 HCHEIGHT = 0; | 2380 HCHEIGHT = 0; |
2381 NSYMSDECODED = 0; | 2381 NSYMSDECODED = 0; |
2382 while(NSYMSDECODED < SDNUMNEWSYMS) { | 2382 while(NSYMSDECODED < SDNUMNEWSYMS) { |
2383 BS = NULL; | 2383 BS = NULL; |
2384 if(IADH->decode(pArithDecoder, &HCDH) == -1) { | 2384 if(IADH->decode(pArithDecoder, &HCDH) == -1) { |
2385 m_pModule->JBig2_Error("symbol dictionary decoding procedure (arith)
: too short."); | 2385 m_pModule->JBig2_Error("symbol dictionary decoding procedure (arith)
: too short."); |
2386 goto failed; | 2386 goto failed; |
2387 } | 2387 } |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2451 pDecoder->SBW = SYMWIDTH; | 2451 pDecoder->SBW = SYMWIDTH; |
2452 pDecoder->SBH = HCHEIGHT; | 2452 pDecoder->SBH = HCHEIGHT; |
2453 pDecoder->SBNUMINSTANCES = REFAGGNINST; | 2453 pDecoder->SBNUMINSTANCES = REFAGGNINST; |
2454 pDecoder->SBSTRIPS = 1; | 2454 pDecoder->SBSTRIPS = 1; |
2455 pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; | 2455 pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; |
2456 SBNUMSYMS = pDecoder->SBNUMSYMS; | 2456 SBNUMSYMS = pDecoder->SBNUMSYMS; |
2457 nTmp = 0; | 2457 nTmp = 0; |
2458 while((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { | 2458 while((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { |
2459 nTmp ++; | 2459 nTmp ++; |
2460 } | 2460 } |
2461 SBSYMCODELEN = (FX_BYTE)nTmp; | 2461 SBSYMCODELEN = (uint8_t)nTmp; |
2462 pDecoder->SBSYMCODELEN = SBSYMCODELEN; | 2462 pDecoder->SBSYMCODELEN = SBSYMCODELEN; |
2463 SBSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(SBNUMSYMS,
sizeof(CJBig2_Image*)); | 2463 SBSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(SBNUMSYMS,
sizeof(CJBig2_Image*)); |
2464 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_I
mage*)); | 2464 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_I
mage*)); |
2465 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, NSYMSDECODED *
sizeof(CJBig2_Image*)); | 2465 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, NSYMSDECODED *
sizeof(CJBig2_Image*)); |
2466 pDecoder->SBSYMS = SBSYMS; | 2466 pDecoder->SBSYMS = SBSYMS; |
2467 pDecoder->SBDEFPIXEL = 0; | 2467 pDecoder->SBDEFPIXEL = 0; |
2468 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR; | 2468 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR; |
2469 pDecoder->TRANSPOSED = 0; | 2469 pDecoder->TRANSPOSED = 0; |
2470 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT; | 2470 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT; |
2471 pDecoder->SBDSOFFSET = 0; | 2471 pDecoder->SBDSOFFSET = 0; |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2664 delete IARDW; | 2664 delete IARDW; |
2665 delete IARDH; | 2665 delete IARDH; |
2666 return NULL; | 2666 return NULL; |
2667 } | 2667 } |
2668 CJBig2_SymbolDict *CJBig2_SDDProc::decode_Huffman(CJBig2_BitStream *pStream, | 2668 CJBig2_SymbolDict *CJBig2_SDDProc::decode_Huffman(CJBig2_BitStream *pStream, |
2669 JBig2ArithCtx *gbContext, JBig2ArithCtx *grContext, IFX_Pause* pPause) | 2669 JBig2ArithCtx *gbContext, JBig2ArithCtx *grContext, IFX_Pause* pPause) |
2670 { | 2670 { |
2671 CJBig2_Image **SDNEWSYMS; | 2671 CJBig2_Image **SDNEWSYMS; |
2672 FX_DWORD *SDNEWSYMWIDTHS; | 2672 FX_DWORD *SDNEWSYMWIDTHS; |
2673 FX_DWORD HCHEIGHT, NSYMSDECODED; | 2673 FX_DWORD HCHEIGHT, NSYMSDECODED; |
2674 FX_INT32 HCDH; | 2674 int32_t HCDH; |
2675 FX_DWORD SYMWIDTH, TOTWIDTH, HCFIRSTSYM; | 2675 FX_DWORD SYMWIDTH, TOTWIDTH, HCFIRSTSYM; |
2676 FX_INT32 DW; | 2676 int32_t DW; |
2677 CJBig2_Image *BS, *BHC; | 2677 CJBig2_Image *BS, *BHC; |
2678 FX_DWORD I, J, REFAGGNINST; | 2678 FX_DWORD I, J, REFAGGNINST; |
2679 FX_BOOL *EXFLAGS; | 2679 FX_BOOL *EXFLAGS; |
2680 FX_DWORD EXINDEX; | 2680 FX_DWORD EXINDEX; |
2681 FX_BOOL CUREXFLAG; | 2681 FX_BOOL CUREXFLAG; |
2682 FX_DWORD EXRUNLENGTH; | 2682 FX_DWORD EXRUNLENGTH; |
2683 FX_INT32 nVal, nBits; | 2683 int32_t nVal, nBits; |
2684 FX_DWORD nTmp; | 2684 FX_DWORD nTmp; |
2685 FX_DWORD SBNUMSYMS; | 2685 FX_DWORD SBNUMSYMS; |
2686 FX_BYTE SBSYMCODELEN; | 2686 uint8_t SBSYMCODELEN; |
2687 JBig2HuffmanCode *SBSYMCODES; | 2687 JBig2HuffmanCode *SBSYMCODES; |
2688 FX_DWORD IDI; | 2688 FX_DWORD IDI; |
2689 FX_INT32 RDXI, RDYI; | 2689 int32_t RDXI, RDYI; |
2690 FX_DWORD BMSIZE; | 2690 FX_DWORD BMSIZE; |
2691 FX_DWORD stride; | 2691 FX_DWORD stride; |
2692 CJBig2_Image **SBSYMS; | 2692 CJBig2_Image **SBSYMS; |
2693 CJBig2_HuffmanTable *SBHUFFFS, *SBHUFFDS, *SBHUFFDT, *SBHUFFRDW, *SBHUFFRDH,
*SBHUFFRDX, *SBHUFFRDY, | 2693 CJBig2_HuffmanTable *SBHUFFFS, *SBHUFFDS, *SBHUFFDT, *SBHUFFRDW, *SBHUFFRDH,
*SBHUFFRDX, *SBHUFFRDY, |
2694 *SBHUFFRSIZE, *pTable; | 2694 *SBHUFFRSIZE, *pTable; |
2695 CJBig2_HuffmanDecoder *pHuffmanDecoder; | 2695 CJBig2_HuffmanDecoder *pHuffmanDecoder; |
2696 CJBig2_GRRDProc *pGRRD; | 2696 CJBig2_GRRDProc *pGRRD; |
2697 CJBig2_ArithDecoder *pArithDecoder; | 2697 CJBig2_ArithDecoder *pArithDecoder; |
2698 CJBig2_GRDProc *pGRD; | 2698 CJBig2_GRDProc *pGRD; |
2699 CJBig2_SymbolDict *pDict; | 2699 CJBig2_SymbolDict *pDict; |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2836 delete SBHUFFRDX; | 2836 delete SBHUFFRDX; |
2837 delete SBHUFFRDY; | 2837 delete SBHUFFRDY; |
2838 delete SBHUFFRSIZE; | 2838 delete SBHUFFRSIZE; |
2839 delete pDecoder; | 2839 delete pDecoder; |
2840 } else if(REFAGGNINST == 1) { | 2840 } else if(REFAGGNINST == 1) { |
2841 SBNUMSYMS = SDNUMINSYMS + SDNUMNEWSYMS; | 2841 SBNUMSYMS = SDNUMINSYMS + SDNUMNEWSYMS; |
2842 nTmp = 1; | 2842 nTmp = 1; |
2843 while((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { | 2843 while((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { |
2844 nTmp ++; | 2844 nTmp ++; |
2845 } | 2845 } |
2846 SBSYMCODELEN = (FX_BYTE)nTmp; | 2846 SBSYMCODELEN = (uint8_t)nTmp; |
2847 SBSYMCODES = (JBig2HuffmanCode*)m_pModule->JBig2_Malloc2(SBN
UMSYMS, sizeof(JBig2HuffmanCode)); | 2847 SBSYMCODES = (JBig2HuffmanCode*)m_pModule->JBig2_Malloc2(SBN
UMSYMS, sizeof(JBig2HuffmanCode)); |
2848 for(I = 0; I < SBNUMSYMS; I++) { | 2848 for(I = 0; I < SBNUMSYMS; I++) { |
2849 SBSYMCODES[I].codelen = SBSYMCODELEN; | 2849 SBSYMCODES[I].codelen = SBSYMCODELEN; |
2850 SBSYMCODES[I].code = I; | 2850 SBSYMCODES[I].code = I; |
2851 } | 2851 } |
2852 nVal = 0; | 2852 nVal = 0; |
2853 nBits = 0; | 2853 nBits = 0; |
2854 for(;;) { | 2854 for(;;) { |
2855 if(pStream->read1Bit(&nTmp) != 0) { | 2855 if(pStream->read1Bit(&nTmp) != 0) { |
2856 m_pModule->JBig2_Free(SBSYMCODES); | 2856 m_pModule->JBig2_Free(SBSYMCODES); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2924 delete pArithDecoder; | 2924 delete pArithDecoder; |
2925 } | 2925 } |
2926 SDNEWSYMS[NSYMSDECODED] = BS; | 2926 SDNEWSYMS[NSYMSDECODED] = BS; |
2927 } | 2927 } |
2928 if(SDREFAGG == 0) { | 2928 if(SDREFAGG == 0) { |
2929 SDNEWSYMWIDTHS[NSYMSDECODED] = SYMWIDTH; | 2929 SDNEWSYMWIDTHS[NSYMSDECODED] = SYMWIDTH; |
2930 } | 2930 } |
2931 NSYMSDECODED = NSYMSDECODED + 1; | 2931 NSYMSDECODED = NSYMSDECODED + 1; |
2932 } | 2932 } |
2933 if(SDREFAGG == 0) { | 2933 if(SDREFAGG == 0) { |
2934 if(pHuffmanDecoder->decodeAValue(SDHUFFBMSIZE, (FX_INT32*)&BMSIZE) !
= 0) { | 2934 if(pHuffmanDecoder->decodeAValue(SDHUFFBMSIZE, (int32_t*)&BMSIZE) !=
0) { |
2935 m_pModule->JBig2_Error("symbol dictionary decoding procedure (hu
ffman): too short."); | 2935 m_pModule->JBig2_Error("symbol dictionary decoding procedure (hu
ffman): too short."); |
2936 goto failed; | 2936 goto failed; |
2937 } | 2937 } |
2938 pStream->alignByte(); | 2938 pStream->alignByte(); |
2939 if(BMSIZE == 0) { | 2939 if(BMSIZE == 0) { |
2940 stride = (TOTWIDTH + 7) >> 3; | 2940 stride = (TOTWIDTH + 7) >> 3; |
2941 if(pStream->getByteLeft() >= stride * HCHEIGHT) { | 2941 if(pStream->getByteLeft() >= stride * HCHEIGHT) { |
2942 JBIG2_ALLOC(BHC, CJBig2_Image(TOTWIDTH, HCHEIGHT)); | 2942 JBIG2_ALLOC(BHC, CJBig2_Image(TOTWIDTH, HCHEIGHT)); |
2943 for(I = 0; I < HCHEIGHT; I ++) { | 2943 for(I = 0; I < HCHEIGHT; I ++) { |
2944 JBIG2_memcpy(BHC->m_pData + I * BHC->m_nStride, pStream-
>getPointer(), stride); | 2944 JBIG2_memcpy(BHC->m_pData + I * BHC->m_nStride, pStream-
>getPointer(), stride); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3035 if(SDREFAGG == 0) { | 3035 if(SDREFAGG == 0) { |
3036 m_pModule->JBig2_Free(SDNEWSYMWIDTHS); | 3036 m_pModule->JBig2_Free(SDNEWSYMWIDTHS); |
3037 } | 3037 } |
3038 delete pHuffmanDecoder; | 3038 delete pHuffmanDecoder; |
3039 return NULL; | 3039 return NULL; |
3040 } | 3040 } |
3041 CJBig2_Image *CJBig2_HTRDProc::decode_Arith(CJBig2_ArithDecoder *pArithDecoder, | 3041 CJBig2_Image *CJBig2_HTRDProc::decode_Arith(CJBig2_ArithDecoder *pArithDecoder, |
3042 JBig2ArithCtx *gbContext, IFX_Pause* pPause) | 3042 JBig2ArithCtx *gbContext, IFX_Pause* pPause) |
3043 { | 3043 { |
3044 FX_DWORD ng, mg; | 3044 FX_DWORD ng, mg; |
3045 FX_INT32 x, y; | 3045 int32_t x, y; |
3046 CJBig2_Image *HSKIP; | 3046 CJBig2_Image *HSKIP; |
3047 FX_DWORD HBPP; | 3047 FX_DWORD HBPP; |
3048 FX_DWORD *GI; | 3048 FX_DWORD *GI; |
3049 CJBig2_Image *HTREG; | 3049 CJBig2_Image *HTREG; |
3050 CJBig2_GSIDProc *pGID; | 3050 CJBig2_GSIDProc *pGID; |
3051 JBIG2_ALLOC(HTREG, CJBig2_Image(HBW, HBH)); | 3051 JBIG2_ALLOC(HTREG, CJBig2_Image(HBW, HBH)); |
3052 HTREG->fill(HDEFPIXEL); | 3052 HTREG->fill(HDEFPIXEL); |
3053 HSKIP = NULL; | 3053 HSKIP = NULL; |
3054 if(HENABLESKIP == 1) { | 3054 if(HENABLESKIP == 1) { |
3055 JBIG2_ALLOC(HSKIP, CJBig2_Image(HGW, HGH)); | 3055 JBIG2_ALLOC(HSKIP, CJBig2_Image(HGW, HGH)); |
3056 for(mg = 0; mg < HGH; mg++) { | 3056 for(mg = 0; mg < HGH; mg++) { |
3057 for(ng = 0; ng < HGW; ng++) { | 3057 for(ng = 0; ng < HGW; ng++) { |
3058 x = (HGX + mg * HRY + ng * HRX) >> 8; | 3058 x = (HGX + mg * HRY + ng * HRX) >> 8; |
3059 y = (HGY + mg * HRX - ng * HRY) >> 8; | 3059 y = (HGY + mg * HRX - ng * HRY) >> 8; |
3060 if((x + HPW <= 0) | (x >= (FX_INT32)HBW) | 3060 if((x + HPW <= 0) | (x >= (int32_t)HBW) |
3061 | (y + HPH <= 0) | (y >= (FX_INT32)HPH)) { | 3061 | (y + HPH <= 0) | (y >= (int32_t)HPH)) { |
3062 HSKIP->setPixel(ng, mg, 1); | 3062 HSKIP->setPixel(ng, mg, 1); |
3063 } else { | 3063 } else { |
3064 HSKIP->setPixel(ng, mg, 0); | 3064 HSKIP->setPixel(ng, mg, 0); |
3065 } | 3065 } |
3066 } | 3066 } |
3067 } | 3067 } |
3068 } | 3068 } |
3069 HBPP = 1; | 3069 HBPP = 1; |
3070 while((FX_DWORD)(1 << HBPP) < HNUMPATS) { | 3070 while((FX_DWORD)(1 << HBPP) < HNUMPATS) { |
3071 HBPP ++; | 3071 HBPP ++; |
3072 } | 3072 } |
3073 JBIG2_ALLOC(pGID, CJBig2_GSIDProc()); | 3073 JBIG2_ALLOC(pGID, CJBig2_GSIDProc()); |
3074 pGID->GSMMR = HMMR; | 3074 pGID->GSMMR = HMMR; |
3075 pGID->GSW = HGW; | 3075 pGID->GSW = HGW; |
3076 pGID->GSH = HGH; | 3076 pGID->GSH = HGH; |
3077 pGID->GSBPP = (FX_BYTE)HBPP; | 3077 pGID->GSBPP = (uint8_t)HBPP; |
3078 pGID->GSUSESKIP = HENABLESKIP; | 3078 pGID->GSUSESKIP = HENABLESKIP; |
3079 pGID->GSKIP = HSKIP; | 3079 pGID->GSKIP = HSKIP; |
3080 pGID->GSTEMPLATE = HTEMPLATE; | 3080 pGID->GSTEMPLATE = HTEMPLATE; |
3081 GI = pGID->decode_Arith(pArithDecoder, gbContext, pPause); | 3081 GI = pGID->decode_Arith(pArithDecoder, gbContext, pPause); |
3082 if(GI == NULL) { | 3082 if(GI == NULL) { |
3083 goto failed; | 3083 goto failed; |
3084 } | 3084 } |
3085 for(mg = 0; mg < HGH; mg++) { | 3085 for(mg = 0; mg < HGH; mg++) { |
3086 for(ng = 0; ng < HGW; ng++) { | 3086 for(ng = 0; ng < HGW; ng++) { |
3087 x = (HGX + mg * HRY + ng * HRX) >> 8; | 3087 x = (HGX + mg * HRY + ng * HRX) >> 8; |
(...skipping 15 matching lines...) Expand all Loading... |
3103 if(HSKIP) { | 3103 if(HSKIP) { |
3104 delete HSKIP; | 3104 delete HSKIP; |
3105 } | 3105 } |
3106 delete pGID; | 3106 delete pGID; |
3107 delete HTREG; | 3107 delete HTREG; |
3108 return NULL; | 3108 return NULL; |
3109 } | 3109 } |
3110 CJBig2_Image *CJBig2_HTRDProc::decode_MMR(CJBig2_BitStream *pStream, IFX_Pause*
pPause) | 3110 CJBig2_Image *CJBig2_HTRDProc::decode_MMR(CJBig2_BitStream *pStream, IFX_Pause*
pPause) |
3111 { | 3111 { |
3112 FX_DWORD ng, mg; | 3112 FX_DWORD ng, mg; |
3113 FX_INT32 x, y; | 3113 int32_t x, y; |
3114 FX_DWORD HBPP; | 3114 FX_DWORD HBPP; |
3115 FX_DWORD *GI; | 3115 FX_DWORD *GI; |
3116 CJBig2_Image *HTREG; | 3116 CJBig2_Image *HTREG; |
3117 CJBig2_GSIDProc *pGID; | 3117 CJBig2_GSIDProc *pGID; |
3118 JBIG2_ALLOC(HTREG, CJBig2_Image(HBW, HBH)); | 3118 JBIG2_ALLOC(HTREG, CJBig2_Image(HBW, HBH)); |
3119 HTREG->fill(HDEFPIXEL); | 3119 HTREG->fill(HDEFPIXEL); |
3120 HBPP = 1; | 3120 HBPP = 1; |
3121 while((FX_DWORD)(1 << HBPP) < HNUMPATS) { | 3121 while((FX_DWORD)(1 << HBPP) < HNUMPATS) { |
3122 HBPP ++; | 3122 HBPP ++; |
3123 } | 3123 } |
3124 JBIG2_ALLOC(pGID, CJBig2_GSIDProc()); | 3124 JBIG2_ALLOC(pGID, CJBig2_GSIDProc()); |
3125 pGID->GSMMR = HMMR; | 3125 pGID->GSMMR = HMMR; |
3126 pGID->GSW = HGW; | 3126 pGID->GSW = HGW; |
3127 pGID->GSH = HGH; | 3127 pGID->GSH = HGH; |
3128 pGID->GSBPP = (FX_BYTE)HBPP; | 3128 pGID->GSBPP = (uint8_t)HBPP; |
3129 pGID->GSUSESKIP = 0; | 3129 pGID->GSUSESKIP = 0; |
3130 GI = pGID->decode_MMR(pStream, pPause); | 3130 GI = pGID->decode_MMR(pStream, pPause); |
3131 if(GI == NULL) { | 3131 if(GI == NULL) { |
3132 goto failed; | 3132 goto failed; |
3133 } | 3133 } |
3134 for(mg = 0; mg < HGH; mg++) { | 3134 for(mg = 0; mg < HGH; mg++) { |
3135 for(ng = 0; ng < HGW; ng++) { | 3135 for(ng = 0; ng < HGW; ng++) { |
3136 x = (HGX + mg * HRY + ng * HRX) >> 8; | 3136 x = (HGX + mg * HRY + ng * HRX) >> 8; |
3137 y = (HGY + mg * HRX - ng * HRY) >> 8; | 3137 y = (HGY + mg * HRX - ng * HRY) >> 8; |
3138 FX_DWORD pat_index = GI[mg * HGW + ng]; | 3138 FX_DWORD pat_index = GI[mg * HGW + ng]; |
(...skipping 22 matching lines...) Expand all Loading... |
3161 pDict->NUMPATS = GRAYMAX + 1; | 3161 pDict->NUMPATS = GRAYMAX + 1; |
3162 pDict->HDPATS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(sizeof(CJBig2_Image
*), pDict->NUMPATS); | 3162 pDict->HDPATS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(sizeof(CJBig2_Image
*), pDict->NUMPATS); |
3163 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*)*pDict->NUMPATS); | 3163 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*)*pDict->NUMPATS); |
3164 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); | 3164 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); |
3165 pGRD->MMR = HDMMR; | 3165 pGRD->MMR = HDMMR; |
3166 pGRD->GBW = (GRAYMAX + 1) * HDPW; | 3166 pGRD->GBW = (GRAYMAX + 1) * HDPW; |
3167 pGRD->GBH = HDPH; | 3167 pGRD->GBH = HDPH; |
3168 pGRD->GBTEMPLATE = HDTEMPLATE; | 3168 pGRD->GBTEMPLATE = HDTEMPLATE; |
3169 pGRD->TPGDON = 0; | 3169 pGRD->TPGDON = 0; |
3170 pGRD->USESKIP = 0; | 3170 pGRD->USESKIP = 0; |
3171 pGRD->GBAT[0] = -(FX_INT32)HDPW; | 3171 pGRD->GBAT[0] = -(int32_t)HDPW; |
3172 pGRD->GBAT[1] = 0; | 3172 pGRD->GBAT[1] = 0; |
3173 if(pGRD->GBTEMPLATE == 0) { | 3173 if(pGRD->GBTEMPLATE == 0) { |
3174 pGRD->GBAT[2] = -3; | 3174 pGRD->GBAT[2] = -3; |
3175 pGRD->GBAT[3] = -1; | 3175 pGRD->GBAT[3] = -1; |
3176 pGRD->GBAT[4] = 2; | 3176 pGRD->GBAT[4] = 2; |
3177 pGRD->GBAT[5] = -2; | 3177 pGRD->GBAT[5] = -2; |
3178 pGRD->GBAT[6] = -2; | 3178 pGRD->GBAT[6] = -2; |
3179 pGRD->GBAT[7] = -2; | 3179 pGRD->GBAT[7] = -2; |
3180 } | 3180 } |
3181 FXCODEC_STATUS status = pGRD->Start_decode_Arith(&BHDC, pArithDecoder, gbCon
text); | 3181 FXCODEC_STATUS status = pGRD->Start_decode_Arith(&BHDC, pArithDecoder, gbCon
text); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3230 delete BHDC; | 3230 delete BHDC; |
3231 return pDict; | 3231 return pDict; |
3232 failed: | 3232 failed: |
3233 delete pDict; | 3233 delete pDict; |
3234 return NULL; | 3234 return NULL; |
3235 } | 3235 } |
3236 FX_DWORD *CJBig2_GSIDProc::decode_Arith(CJBig2_ArithDecoder *pArithDecoder, | 3236 FX_DWORD *CJBig2_GSIDProc::decode_Arith(CJBig2_ArithDecoder *pArithDecoder, |
3237 JBig2ArithCtx *gbContext, IFX_Pause* pPa
use) | 3237 JBig2ArithCtx *gbContext, IFX_Pause* pPa
use) |
3238 { | 3238 { |
3239 CJBig2_Image **GSPLANES; | 3239 CJBig2_Image **GSPLANES; |
3240 FX_INT32 J, K; | 3240 int32_t J, K; |
3241 FX_DWORD x, y; | 3241 FX_DWORD x, y; |
3242 FX_DWORD *GSVALS; | 3242 FX_DWORD *GSVALS; |
3243 CJBig2_GRDProc *pGRD; | 3243 CJBig2_GRDProc *pGRD; |
3244 GSPLANES = (CJBig2_Image **)m_pModule->JBig2_Malloc2(sizeof(CJBig2_Image*),
GSBPP); | 3244 GSPLANES = (CJBig2_Image **)m_pModule->JBig2_Malloc2(sizeof(CJBig2_Image*),
GSBPP); |
3245 if (!GSPLANES) { | 3245 if (!GSPLANES) { |
3246 return NULL; | 3246 return NULL; |
3247 } | 3247 } |
3248 GSVALS = (FX_DWORD*)m_pModule->JBig2_Malloc3(sizeof(FX_DWORD), GSW, GSH); | 3248 GSVALS = (FX_DWORD*)m_pModule->JBig2_Malloc3(sizeof(FX_DWORD), GSW, GSH); |
3249 if (!GSVALS) { | 3249 if (!GSVALS) { |
3250 m_pModule->JBig2_Free(GSPLANES); | 3250 m_pModule->JBig2_Free(GSPLANES); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3311 return GSVALS; | 3311 return GSVALS; |
3312 failed: | 3312 failed: |
3313 m_pModule->JBig2_Free(GSPLANES); | 3313 m_pModule->JBig2_Free(GSPLANES); |
3314 delete pGRD; | 3314 delete pGRD; |
3315 m_pModule->JBig2_Free(GSVALS); | 3315 m_pModule->JBig2_Free(GSVALS); |
3316 return NULL; | 3316 return NULL; |
3317 } | 3317 } |
3318 FX_DWORD *CJBig2_GSIDProc::decode_MMR(CJBig2_BitStream *pStream, IFX_Pause* pPau
se) | 3318 FX_DWORD *CJBig2_GSIDProc::decode_MMR(CJBig2_BitStream *pStream, IFX_Pause* pPau
se) |
3319 { | 3319 { |
3320 CJBig2_Image **GSPLANES; | 3320 CJBig2_Image **GSPLANES; |
3321 FX_INT32 J, K; | 3321 int32_t J, K; |
3322 FX_DWORD x, y; | 3322 FX_DWORD x, y; |
3323 FX_DWORD *GSVALS; | 3323 FX_DWORD *GSVALS; |
3324 CJBig2_GRDProc *pGRD; | 3324 CJBig2_GRDProc *pGRD; |
3325 GSPLANES = (CJBig2_Image **)m_pModule->JBig2_Malloc2(sizeof(CJBig2_Image*),
GSBPP); | 3325 GSPLANES = (CJBig2_Image **)m_pModule->JBig2_Malloc2(sizeof(CJBig2_Image*),
GSBPP); |
3326 if (!GSPLANES) { | 3326 if (!GSPLANES) { |
3327 return NULL; | 3327 return NULL; |
3328 } | 3328 } |
3329 GSVALS = (FX_DWORD*)m_pModule->JBig2_Malloc3(sizeof(FX_DWORD), GSW, GSH); | 3329 GSVALS = (FX_DWORD*)m_pModule->JBig2_Malloc3(sizeof(FX_DWORD), GSW, GSH); |
3330 if (!GSVALS) { | 3330 if (!GSVALS) { |
3331 if (GSPLANES) { | 3331 if (GSPLANES) { |
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3801 return decode_MMR(); | 3801 return decode_MMR(); |
3802 } | 3802 } |
3803 m_ProssiveStatus = FXCODEC_STATUS_ERROR; | 3803 m_ProssiveStatus = FXCODEC_STATUS_ERROR; |
3804 return m_ProssiveStatus; | 3804 return m_ProssiveStatus; |
3805 } | 3805 } |
3806 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template0_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) | 3806 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template0_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) |
3807 { | 3807 { |
3808 FX_BOOL SLTP, bVal; | 3808 FX_BOOL SLTP, bVal; |
3809 FX_DWORD CONTEXT; | 3809 FX_DWORD CONTEXT; |
3810 FX_DWORD line1, line2; | 3810 FX_DWORD line1, line2; |
3811 FX_BYTE *pLine1, *pLine2, cVal; | 3811 uint8_t *pLine1, *pLine2, cVal; |
3812 FX_INT32 nStride, nStride2, k; | 3812 int32_t nStride, nStride2, k; |
3813 FX_INT32 nLineBytes, nBitsLeft, cc; | 3813 int32_t nLineBytes, nBitsLeft, cc; |
3814 if(m_pLine == NULL) { | 3814 if(m_pLine == NULL) { |
3815 m_pLine = pImage->m_pData; | 3815 m_pLine = pImage->m_pData; |
3816 } | 3816 } |
3817 nStride = pImage->m_nStride; | 3817 nStride = pImage->m_nStride; |
3818 nStride2 = nStride << 1; | 3818 nStride2 = nStride << 1; |
3819 nLineBytes = ((GBW + 7) >> 3) - 1; | 3819 nLineBytes = ((GBW + 7) >> 3) - 1; |
3820 nBitsLeft = GBW - (nLineBytes << 3); | 3820 nBitsLeft = GBW - (nLineBytes << 3); |
3821 FX_DWORD height = GBH & 0x7fffffff; | 3821 FX_DWORD height = GBH & 0x7fffffff; |
3822 for(; m_loopIndex < height; m_loopIndex++) { | 3822 for(; m_loopIndex < height; m_loopIndex++) { |
3823 if(TPGDON) { | 3823 if(TPGDON) { |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3942 } | 3942 } |
3943 } | 3943 } |
3944 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; | 3944 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; |
3945 return FXCODEC_STATUS_DECODE_FINISH; | 3945 return FXCODEC_STATUS_DECODE_FINISH; |
3946 } | 3946 } |
3947 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template1_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) | 3947 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template1_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) |
3948 { | 3948 { |
3949 FX_BOOL SLTP, bVal; | 3949 FX_BOOL SLTP, bVal; |
3950 FX_DWORD CONTEXT; | 3950 FX_DWORD CONTEXT; |
3951 FX_DWORD line1, line2; | 3951 FX_DWORD line1, line2; |
3952 FX_BYTE *pLine1, *pLine2, cVal; | 3952 uint8_t *pLine1, *pLine2, cVal; |
3953 FX_INT32 nStride, nStride2, k; | 3953 int32_t nStride, nStride2, k; |
3954 FX_INT32 nLineBytes, nBitsLeft, cc; | 3954 int32_t nLineBytes, nBitsLeft, cc; |
3955 if (!m_pLine) { | 3955 if (!m_pLine) { |
3956 m_pLine = pImage->m_pData; | 3956 m_pLine = pImage->m_pData; |
3957 } | 3957 } |
3958 nStride = pImage->m_nStride; | 3958 nStride = pImage->m_nStride; |
3959 nStride2 = nStride << 1; | 3959 nStride2 = nStride << 1; |
3960 nLineBytes = ((GBW + 7) >> 3) - 1; | 3960 nLineBytes = ((GBW + 7) >> 3) - 1; |
3961 nBitsLeft = GBW - (nLineBytes << 3); | 3961 nBitsLeft = GBW - (nLineBytes << 3); |
3962 for(; m_loopIndex < GBH; m_loopIndex++) { | 3962 for(; m_loopIndex < GBH; m_loopIndex++) { |
3963 if(TPGDON) { | 3963 if(TPGDON) { |
3964 SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); | 3964 SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4080 } | 4080 } |
4081 } | 4081 } |
4082 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; | 4082 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; |
4083 return FXCODEC_STATUS_DECODE_FINISH; | 4083 return FXCODEC_STATUS_DECODE_FINISH; |
4084 } | 4084 } |
4085 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template2_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) | 4085 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template2_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) |
4086 { | 4086 { |
4087 FX_BOOL SLTP, bVal; | 4087 FX_BOOL SLTP, bVal; |
4088 FX_DWORD CONTEXT; | 4088 FX_DWORD CONTEXT; |
4089 FX_DWORD line1, line2; | 4089 FX_DWORD line1, line2; |
4090 FX_BYTE *pLine1, *pLine2, cVal; | 4090 uint8_t *pLine1, *pLine2, cVal; |
4091 FX_INT32 nStride, nStride2, k; | 4091 int32_t nStride, nStride2, k; |
4092 FX_INT32 nLineBytes, nBitsLeft, cc; | 4092 int32_t nLineBytes, nBitsLeft, cc; |
4093 if(!m_pLine) { | 4093 if(!m_pLine) { |
4094 m_pLine = pImage->m_pData; | 4094 m_pLine = pImage->m_pData; |
4095 } | 4095 } |
4096 nStride = pImage->m_nStride; | 4096 nStride = pImage->m_nStride; |
4097 nStride2 = nStride << 1; | 4097 nStride2 = nStride << 1; |
4098 nLineBytes = ((GBW + 7) >> 3) - 1; | 4098 nLineBytes = ((GBW + 7) >> 3) - 1; |
4099 nBitsLeft = GBW - (nLineBytes << 3); | 4099 nBitsLeft = GBW - (nLineBytes << 3); |
4100 for(; m_loopIndex < GBH; m_loopIndex++) { | 4100 for(; m_loopIndex < GBH; m_loopIndex++) { |
4101 if(TPGDON) { | 4101 if(TPGDON) { |
4102 SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); | 4102 SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4216 } | 4216 } |
4217 } | 4217 } |
4218 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; | 4218 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; |
4219 return FXCODEC_STATUS_DECODE_FINISH; | 4219 return FXCODEC_STATUS_DECODE_FINISH; |
4220 } | 4220 } |
4221 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template3_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) | 4221 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template3_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) |
4222 { | 4222 { |
4223 FX_BOOL SLTP, bVal; | 4223 FX_BOOL SLTP, bVal; |
4224 FX_DWORD CONTEXT; | 4224 FX_DWORD CONTEXT; |
4225 FX_DWORD line1; | 4225 FX_DWORD line1; |
4226 FX_BYTE *pLine1, cVal; | 4226 uint8_t *pLine1, cVal; |
4227 FX_INT32 nStride, k; | 4227 int32_t nStride, k; |
4228 FX_INT32 nLineBytes, nBitsLeft, cc; | 4228 int32_t nLineBytes, nBitsLeft, cc; |
4229 if (!m_pLine) { | 4229 if (!m_pLine) { |
4230 m_pLine = pImage->m_pData; | 4230 m_pLine = pImage->m_pData; |
4231 } | 4231 } |
4232 nStride = pImage->m_nStride; | 4232 nStride = pImage->m_nStride; |
4233 nLineBytes = ((GBW + 7) >> 3) - 1; | 4233 nLineBytes = ((GBW + 7) >> 3) - 1; |
4234 nBitsLeft = GBW - (nLineBytes << 3); | 4234 nBitsLeft = GBW - (nLineBytes << 3); |
4235 for(; m_loopIndex < GBH; m_loopIndex++) { | 4235 for(; m_loopIndex < GBH; m_loopIndex++) { |
4236 if(TPGDON) { | 4236 if(TPGDON) { |
4237 SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); | 4237 SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); |
4238 LTP = LTP ^ SLTP; | 4238 LTP = LTP ^ SLTP; |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4328 } | 4328 } |
4329 if(pPause && pPause->NeedToPauseNow()) { | 4329 if(pPause && pPause->NeedToPauseNow()) { |
4330 m_loopIndex++; | 4330 m_loopIndex++; |
4331 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4331 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
4332 return FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4332 return FXCODEC_STATUS_DECODE_TOBECONTINUE; |
4333 } | 4333 } |
4334 } | 4334 } |
4335 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; | 4335 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; |
4336 return FXCODEC_STATUS_DECODE_FINISH; | 4336 return FXCODEC_STATUS_DECODE_FINISH; |
4337 } | 4337 } |
OLD | NEW |