| 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 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 } else { | 94 } else { |
| 95 if((GBAT[0] == 2) && (GBAT[1] == (signed char) - 1)) { | 95 if((GBAT[0] == 2) && (GBAT[1] == (signed char) - 1)) { |
| 96 return decode_Arith_Template3_opt3(pArithDecoder, gbContext); | 96 return decode_Arith_Template3_opt3(pArithDecoder, gbContext); |
| 97 } else { | 97 } else { |
| 98 return decode_Arith_Template3_unopt(pArithDecoder, gbContext); | 98 return decode_Arith_Template3_unopt(pArithDecoder, gbContext); |
| 99 } | 99 } |
| 100 } | 100 } |
| 101 } | 101 } |
| 102 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template0_opt(CJBig2_ArithDecoder *pA
rithDecoder, JBig2ArithCtx *gbContext) | 102 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template0_opt(CJBig2_ArithDecoder *pA
rithDecoder, JBig2ArithCtx *gbContext) |
| 103 { | 103 { |
| 104 FX_BOOL LTP, SLTP, bVal; | 104 bool LTP, SLTP, bVal; |
| 105 FX_DWORD CONTEXT; | 105 FX_DWORD CONTEXT; |
| 106 CJBig2_Image *GBREG; | 106 CJBig2_Image *GBREG; |
| 107 FX_DWORD line1, line2, line3; | 107 FX_DWORD line1, line2, line3; |
| 108 LTP = 0; | 108 LTP = 0; |
| 109 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 109 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
| 110 GBREG->fill(0); | 110 GBREG->fill(0); |
| 111 for(FX_DWORD h = 0; h < GBH; h++) { | 111 for(FX_DWORD h = 0; h < GBH; h++) { |
| 112 if(TPGDON) { | 112 if(TPGDON) { |
| 113 SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); | 113 SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); |
| 114 LTP = LTP ^ SLTP; | 114 LTP = LTP ^ SLTP; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 139 line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 2)) & 0x1f; | 139 line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 2)) & 0x1f; |
| 140 line2 = ((line2 << 1) | GBREG->getPixel(w + 4, h - 1)) & 0x7f; | 140 line2 = ((line2 << 1) | GBREG->getPixel(w + 4, h - 1)) & 0x7f; |
| 141 line3 = ((line3 << 1) | bVal) & 0x0f; | 141 line3 = ((line3 << 1) | bVal) & 0x0f; |
| 142 } | 142 } |
| 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 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 uint8_t *pLine, cVal; | 153 uint8_t *pLine, cVal; |
| 154 intptr_t nStride, nStride2; | 154 intptr_t nStride, nStride2; |
| 155 int32_t 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; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 } | 206 } |
| 207 pLine[w >> 3] = cVal; | 207 pLine[w >> 3] = cVal; |
| 208 } | 208 } |
| 209 } | 209 } |
| 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 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 uint8_t *pLine, *pLine1, *pLine2, cVal; | 220 uint8_t *pLine, *pLine1, *pLine2, cVal; |
| 221 int32_t nStride, nStride2, k; | 221 int32_t nStride, nStride2, k; |
| 222 int32_t 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; |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 } | 298 } |
| 299 pLine[nLineBytes] = cVal; | 299 pLine[nLineBytes] = cVal; |
| 300 } | 300 } |
| 301 } | 301 } |
| 302 pLine += nStride; | 302 pLine += nStride; |
| 303 } | 303 } |
| 304 return GBREG; | 304 return GBREG; |
| 305 } | 305 } |
| 306 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template0_unopt(CJBig2_ArithDecoder *
pArithDecoder, JBig2ArithCtx *gbContext) | 306 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template0_unopt(CJBig2_ArithDecoder *
pArithDecoder, JBig2ArithCtx *gbContext) |
| 307 { | 307 { |
| 308 FX_BOOL LTP, SLTP, bVal; | 308 bool LTP, SLTP, bVal; |
| 309 FX_DWORD CONTEXT; | 309 FX_DWORD CONTEXT; |
| 310 CJBig2_Image *GBREG; | 310 CJBig2_Image *GBREG; |
| 311 FX_DWORD line1, line2, line3; | 311 FX_DWORD line1, line2, line3; |
| 312 LTP = 0; | 312 LTP = 0; |
| 313 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 313 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
| 314 GBREG->fill(0); | 314 GBREG->fill(0); |
| 315 for(FX_DWORD h = 0; h < GBH; h++) { | 315 for(FX_DWORD h = 0; h < GBH; h++) { |
| 316 if(TPGDON) { | 316 if(TPGDON) { |
| 317 SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); | 317 SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); |
| 318 LTP = LTP ^ SLTP; | 318 LTP = LTP ^ SLTP; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 345 line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 2)) & 0x07; | 345 line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 2)) & 0x07; |
| 346 line2 = ((line2 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x1f; | 346 line2 = ((line2 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x1f; |
| 347 line3 = ((line3 << 1) | bVal) & 0x0f; | 347 line3 = ((line3 << 1) | bVal) & 0x0f; |
| 348 } | 348 } |
| 349 } | 349 } |
| 350 } | 350 } |
| 351 return GBREG; | 351 return GBREG; |
| 352 } | 352 } |
| 353 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template1_opt(CJBig2_ArithDecoder *pA
rithDecoder, JBig2ArithCtx *gbContext) | 353 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template1_opt(CJBig2_ArithDecoder *pA
rithDecoder, JBig2ArithCtx *gbContext) |
| 354 { | 354 { |
| 355 FX_BOOL LTP, SLTP, bVal; | 355 bool LTP, SLTP, bVal; |
| 356 FX_DWORD CONTEXT; | 356 FX_DWORD CONTEXT; |
| 357 CJBig2_Image *GBREG; | 357 CJBig2_Image *GBREG; |
| 358 FX_DWORD line1, line2, line3; | 358 FX_DWORD line1, line2, line3; |
| 359 LTP = 0; | 359 LTP = 0; |
| 360 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 360 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
| 361 GBREG->fill(0); | 361 GBREG->fill(0); |
| 362 for(FX_DWORD h = 0; h < GBH; h++) { | 362 for(FX_DWORD h = 0; h < GBH; h++) { |
| 363 if(TPGDON) { | 363 if(TPGDON) { |
| 364 SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); | 364 SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); |
| 365 LTP = LTP ^ SLTP; | 365 LTP = LTP ^ SLTP; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 390 line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 2)) & 0x0f; | 390 line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 2)) & 0x0f; |
| 391 line2 = ((line2 << 1) | GBREG->getPixel(w + 4, h - 1)) & 0x3f; | 391 line2 = ((line2 << 1) | GBREG->getPixel(w + 4, h - 1)) & 0x3f; |
| 392 line3 = ((line3 << 1) | bVal) & 0x07; | 392 line3 = ((line3 << 1) | bVal) & 0x07; |
| 393 } | 393 } |
| 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 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 uint8_t *pLine, cVal; | 404 uint8_t *pLine, cVal; |
| 405 intptr_t nStride, nStride2; | 405 intptr_t nStride, nStride2; |
| 406 int32_t 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; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 457 } | 457 } |
| 458 pLine[w >> 3] = cVal; | 458 pLine[w >> 3] = cVal; |
| 459 } | 459 } |
| 460 } | 460 } |
| 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 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 uint8_t *pLine, *pLine1, *pLine2, cVal; | 471 uint8_t *pLine, *pLine1, *pLine2, cVal; |
| 472 int32_t nStride, nStride2, k; | 472 int32_t nStride, nStride2, k; |
| 473 int32_t 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; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 } | 548 } |
| 549 pLine[nLineBytes] = cVal; | 549 pLine[nLineBytes] = cVal; |
| 550 } | 550 } |
| 551 } | 551 } |
| 552 pLine += nStride; | 552 pLine += nStride; |
| 553 } | 553 } |
| 554 return GBREG; | 554 return GBREG; |
| 555 } | 555 } |
| 556 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template1_unopt(CJBig2_ArithDecoder *
pArithDecoder, JBig2ArithCtx *gbContext) | 556 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template1_unopt(CJBig2_ArithDecoder *
pArithDecoder, JBig2ArithCtx *gbContext) |
| 557 { | 557 { |
| 558 FX_BOOL LTP, SLTP, bVal; | 558 bool LTP, SLTP, bVal; |
| 559 FX_DWORD CONTEXT; | 559 FX_DWORD CONTEXT; |
| 560 CJBig2_Image *GBREG; | 560 CJBig2_Image *GBREG; |
| 561 FX_DWORD line1, line2, line3; | 561 FX_DWORD line1, line2, line3; |
| 562 LTP = 0; | 562 LTP = 0; |
| 563 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 563 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
| 564 GBREG->fill(0); | 564 GBREG->fill(0); |
| 565 for(FX_DWORD h = 0; h < GBH; h++) { | 565 for(FX_DWORD h = 0; h < GBH; h++) { |
| 566 if(TPGDON) { | 566 if(TPGDON) { |
| 567 SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); | 567 SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); |
| 568 LTP = LTP ^ SLTP; | 568 LTP = LTP ^ SLTP; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 593 line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 2)) & 0x0f; | 593 line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 2)) & 0x0f; |
| 594 line2 = ((line2 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x1f; | 594 line2 = ((line2 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x1f; |
| 595 line3 = ((line3 << 1) | bVal) & 0x07; | 595 line3 = ((line3 << 1) | bVal) & 0x07; |
| 596 } | 596 } |
| 597 } | 597 } |
| 598 } | 598 } |
| 599 return GBREG; | 599 return GBREG; |
| 600 } | 600 } |
| 601 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template2_opt(CJBig2_ArithDecoder *pA
rithDecoder, JBig2ArithCtx *gbContext) | 601 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template2_opt(CJBig2_ArithDecoder *pA
rithDecoder, JBig2ArithCtx *gbContext) |
| 602 { | 602 { |
| 603 FX_BOOL LTP, SLTP, bVal; | 603 bool LTP, SLTP, bVal; |
| 604 FX_DWORD CONTEXT; | 604 FX_DWORD CONTEXT; |
| 605 CJBig2_Image *GBREG; | 605 CJBig2_Image *GBREG; |
| 606 FX_DWORD line1, line2, line3; | 606 FX_DWORD line1, line2, line3; |
| 607 LTP = 0; | 607 LTP = 0; |
| 608 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 608 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
| 609 GBREG->fill(0); | 609 GBREG->fill(0); |
| 610 for(FX_DWORD h = 0; h < GBH; h++) { | 610 for(FX_DWORD h = 0; h < GBH; h++) { |
| 611 if(TPGDON) { | 611 if(TPGDON) { |
| 612 SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); | 612 SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); |
| 613 LTP = LTP ^ SLTP; | 613 LTP = LTP ^ SLTP; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 636 line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 2)) & 0x07; | 636 line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 2)) & 0x07; |
| 637 line2 = ((line2 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x1f; | 637 line2 = ((line2 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x1f; |
| 638 line3 = ((line3 << 1) | bVal) & 0x03; | 638 line3 = ((line3 << 1) | bVal) & 0x03; |
| 639 } | 639 } |
| 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 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 uint8_t *pLine, cVal; | 650 uint8_t *pLine, cVal; |
| 651 intptr_t nStride, nStride2; | 651 intptr_t nStride, nStride2; |
| 652 int32_t 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; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 703 } | 703 } |
| 704 pLine[w >> 3] = cVal; | 704 pLine[w >> 3] = cVal; |
| 705 } | 705 } |
| 706 } | 706 } |
| 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 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 uint8_t *pLine, *pLine1, *pLine2, cVal; | 717 uint8_t *pLine, *pLine1, *pLine2, cVal; |
| 718 int32_t nStride, nStride2, k; | 718 int32_t nStride, nStride2, k; |
| 719 int32_t 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; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 794 } | 794 } |
| 795 pLine[nLineBytes] = cVal; | 795 pLine[nLineBytes] = cVal; |
| 796 } | 796 } |
| 797 } | 797 } |
| 798 pLine += nStride; | 798 pLine += nStride; |
| 799 } | 799 } |
| 800 return GBREG; | 800 return GBREG; |
| 801 } | 801 } |
| 802 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template2_unopt(CJBig2_ArithDecoder *
pArithDecoder, JBig2ArithCtx *gbContext) | 802 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template2_unopt(CJBig2_ArithDecoder *
pArithDecoder, JBig2ArithCtx *gbContext) |
| 803 { | 803 { |
| 804 FX_BOOL LTP, SLTP, bVal; | 804 bool LTP, SLTP, bVal; |
| 805 FX_DWORD CONTEXT; | 805 FX_DWORD CONTEXT; |
| 806 CJBig2_Image *GBREG; | 806 CJBig2_Image *GBREG; |
| 807 FX_DWORD line1, line2, line3; | 807 FX_DWORD line1, line2, line3; |
| 808 LTP = 0; | 808 LTP = 0; |
| 809 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 809 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
| 810 GBREG->fill(0); | 810 GBREG->fill(0); |
| 811 for(FX_DWORD h = 0; h < GBH; h++) { | 811 for(FX_DWORD h = 0; h < GBH; h++) { |
| 812 if(TPGDON) { | 812 if(TPGDON) { |
| 813 SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); | 813 SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); |
| 814 LTP = LTP ^ SLTP; | 814 LTP = LTP ^ SLTP; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 837 line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 2)) & 0x07; | 837 line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 2)) & 0x07; |
| 838 line2 = ((line2 << 1) | GBREG->getPixel(w + 2, h - 1)) & 0x0f; | 838 line2 = ((line2 << 1) | GBREG->getPixel(w + 2, h - 1)) & 0x0f; |
| 839 line3 = ((line3 << 1) | bVal) & 0x03; | 839 line3 = ((line3 << 1) | bVal) & 0x03; |
| 840 } | 840 } |
| 841 } | 841 } |
| 842 } | 842 } |
| 843 return GBREG; | 843 return GBREG; |
| 844 } | 844 } |
| 845 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template3_opt(CJBig2_ArithDecoder *pA
rithDecoder, JBig2ArithCtx *gbContext) | 845 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template3_opt(CJBig2_ArithDecoder *pA
rithDecoder, JBig2ArithCtx *gbContext) |
| 846 { | 846 { |
| 847 FX_BOOL LTP, SLTP, bVal; | 847 bool LTP, SLTP, bVal; |
| 848 FX_DWORD CONTEXT; | 848 FX_DWORD CONTEXT; |
| 849 CJBig2_Image *GBREG; | 849 CJBig2_Image *GBREG; |
| 850 FX_DWORD line1, line2; | 850 FX_DWORD line1, line2; |
| 851 LTP = 0; | 851 LTP = 0; |
| 852 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 852 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
| 853 GBREG->fill(0); | 853 GBREG->fill(0); |
| 854 for(FX_DWORD h = 0; h < GBH; h++) { | 854 for(FX_DWORD h = 0; h < GBH; h++) { |
| 855 if(TPGDON) { | 855 if(TPGDON) { |
| 856 SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); | 856 SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); |
| 857 LTP = LTP ^ SLTP; | 857 LTP = LTP ^ SLTP; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 876 } | 876 } |
| 877 line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x3f; | 877 line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x3f; |
| 878 line2 = ((line2 << 1) | bVal) & 0x0f; | 878 line2 = ((line2 << 1) | bVal) & 0x0f; |
| 879 } | 879 } |
| 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 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 uint8_t *pLine, cVal; | 890 uint8_t *pLine, cVal; |
| 891 intptr_t nStride; | 891 intptr_t nStride; |
| 892 int32_t 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; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 934 } | 934 } |
| 935 pLine[w >> 3] = cVal; | 935 pLine[w >> 3] = cVal; |
| 936 } | 936 } |
| 937 } | 937 } |
| 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 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 uint8_t *pLine, *pLine1, cVal; | 948 uint8_t *pLine, *pLine1, cVal; |
| 949 int32_t nStride, k; | 949 int32_t nStride, k; |
| 950 int32_t 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; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1010 } | 1010 } |
| 1011 pLine[nLineBytes] = cVal; | 1011 pLine[nLineBytes] = cVal; |
| 1012 } | 1012 } |
| 1013 } | 1013 } |
| 1014 pLine += nStride; | 1014 pLine += nStride; |
| 1015 } | 1015 } |
| 1016 return GBREG; | 1016 return GBREG; |
| 1017 } | 1017 } |
| 1018 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template3_unopt(CJBig2_ArithDecoder *
pArithDecoder, JBig2ArithCtx *gbContext) | 1018 CJBig2_Image *CJBig2_GRDProc::decode_Arith_Template3_unopt(CJBig2_ArithDecoder *
pArithDecoder, JBig2ArithCtx *gbContext) |
| 1019 { | 1019 { |
| 1020 FX_BOOL LTP, SLTP, bVal; | 1020 bool LTP, SLTP, bVal; |
| 1021 FX_DWORD CONTEXT; | 1021 FX_DWORD CONTEXT; |
| 1022 CJBig2_Image *GBREG; | 1022 CJBig2_Image *GBREG; |
| 1023 FX_DWORD line1, line2; | 1023 FX_DWORD line1, line2; |
| 1024 LTP = 0; | 1024 LTP = 0; |
| 1025 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 1025 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
| 1026 GBREG->fill(0); | 1026 GBREG->fill(0); |
| 1027 for(FX_DWORD h = 0; h < GBH; h++) { | 1027 for(FX_DWORD h = 0; h < GBH; h++) { |
| 1028 if(TPGDON) { | 1028 if(TPGDON) { |
| 1029 SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); | 1029 SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); |
| 1030 LTP = LTP ^ SLTP; | 1030 LTP = LTP ^ SLTP; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1049 } | 1049 } |
| 1050 line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 1)) & 0x1f; | 1050 line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 1)) & 0x1f; |
| 1051 line2 = ((line2 << 1) | bVal) & 0x0f; | 1051 line2 = ((line2 << 1) | bVal) & 0x0f; |
| 1052 } | 1052 } |
| 1053 } | 1053 } |
| 1054 } | 1054 } |
| 1055 return GBREG; | 1055 return GBREG; |
| 1056 } | 1056 } |
| 1057 CJBig2_Image *CJBig2_GRDProc::decode_Arith_V2(CJBig2_ArithDecoder *pArithDecoder
, JBig2ArithCtx *gbContext) | 1057 CJBig2_Image *CJBig2_GRDProc::decode_Arith_V2(CJBig2_ArithDecoder *pArithDecoder
, JBig2ArithCtx *gbContext) |
| 1058 { | 1058 { |
| 1059 FX_BOOL LTP, SLTP, bVal; | 1059 bool LTP, SLTP, bVal; |
| 1060 FX_DWORD CONTEXT; | 1060 FX_DWORD CONTEXT; |
| 1061 CJBig2_Image *GBREG; | 1061 CJBig2_Image *GBREG; |
| 1062 FX_DWORD line1, line2, line3; | 1062 FX_DWORD line1, line2, line3; |
| 1063 LTP = 0; | 1063 LTP = 0; |
| 1064 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 1064 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
| 1065 GBREG->fill(0); | 1065 GBREG->fill(0); |
| 1066 for(FX_DWORD h = 0; h < GBH; h++) { | 1066 for(FX_DWORD h = 0; h < GBH; h++) { |
| 1067 if(TPGDON) { | 1067 if(TPGDON) { |
| 1068 switch(GBTEMPLATE) { | 1068 switch(GBTEMPLATE) { |
| 1069 case 0: | 1069 case 0: |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1188 } | 1188 } |
| 1189 } | 1189 } |
| 1190 break; | 1190 break; |
| 1191 } | 1191 } |
| 1192 } | 1192 } |
| 1193 } | 1193 } |
| 1194 return GBREG; | 1194 return GBREG; |
| 1195 } | 1195 } |
| 1196 CJBig2_Image *CJBig2_GRDProc::decode_Arith_V1(CJBig2_ArithDecoder *pArithDecoder
, JBig2ArithCtx *gbContext) | 1196 CJBig2_Image *CJBig2_GRDProc::decode_Arith_V1(CJBig2_ArithDecoder *pArithDecoder
, JBig2ArithCtx *gbContext) |
| 1197 { | 1197 { |
| 1198 FX_BOOL LTP, SLTP, bVal; | 1198 bool LTP, SLTP, bVal; |
| 1199 FX_DWORD CONTEXT = 0; | 1199 FX_DWORD CONTEXT = 0; |
| 1200 CJBig2_Image *GBREG; | 1200 CJBig2_Image *GBREG; |
| 1201 LTP = 0; | 1201 LTP = 0; |
| 1202 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 1202 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
| 1203 GBREG->fill(0); | 1203 GBREG->fill(0); |
| 1204 for(FX_DWORD h = 0; h < GBH; h++) { | 1204 for(FX_DWORD h = 0; h < GBH; h++) { |
| 1205 if(TPGDON) { | 1205 if(TPGDON) { |
| 1206 switch(GBTEMPLATE) { | 1206 switch(GBTEMPLATE) { |
| 1207 case 0: | 1207 case 0: |
| 1208 CONTEXT = 0x9b25; | 1208 CONTEXT = 0x9b25; |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1333 } else { | 1333 } else { |
| 1334 if((GRREFERENCEDX == 0) && (GRW == (FX_DWORD)GRREFERENCE->m_nWidth)) { | 1334 if((GRREFERENCEDX == 0) && (GRW == (FX_DWORD)GRREFERENCE->m_nWidth)) { |
| 1335 return decode_Template1_opt(pArithDecoder, grContext); | 1335 return decode_Template1_opt(pArithDecoder, grContext); |
| 1336 } else { | 1336 } else { |
| 1337 return decode_Template1_unopt(pArithDecoder, grContext); | 1337 return decode_Template1_unopt(pArithDecoder, grContext); |
| 1338 } | 1338 } |
| 1339 } | 1339 } |
| 1340 } | 1340 } |
| 1341 CJBig2_Image *CJBig2_GRRDProc::decode_Template0_unopt(CJBig2_ArithDecoder *pArit
hDecoder, JBig2ArithCtx *grContext) | 1341 CJBig2_Image *CJBig2_GRRDProc::decode_Template0_unopt(CJBig2_ArithDecoder *pArit
hDecoder, JBig2ArithCtx *grContext) |
| 1342 { | 1342 { |
| 1343 FX_BOOL LTP, SLTP, bVal; | 1343 bool LTP, SLTP, bVal; |
| 1344 FX_DWORD CONTEXT; | 1344 FX_DWORD CONTEXT; |
| 1345 CJBig2_Image *GRREG; | 1345 CJBig2_Image *GRREG; |
| 1346 FX_DWORD line1, line2, line3, line4, line5; | 1346 FX_DWORD line1, line2, line3, line4, line5; |
| 1347 LTP = 0; | 1347 LTP = 0; |
| 1348 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); | 1348 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); |
| 1349 GRREG->fill(0); | 1349 GRREG->fill(0); |
| 1350 for(FX_DWORD h = 0; h < GRH; h++) { | 1350 for(FX_DWORD h = 0; h < GRH; h++) { |
| 1351 if(TPGRON) { | 1351 if(TPGRON) { |
| 1352 SLTP = pArithDecoder->DECODE(&grContext[0x0010]); | 1352 SLTP = pArithDecoder->DECODE(&grContext[0x0010]); |
| 1353 LTP = LTP ^ SLTP; | 1353 LTP = LTP ^ SLTP; |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1417 line3 = ((line3 << 1) | GRREFERENCE->getPixel(w - GRREFERENCEDX
+ 2, h - GRREFERENCEDY - 1)) & 0x03; | 1417 line3 = ((line3 << 1) | GRREFERENCE->getPixel(w - GRREFERENCEDX
+ 2, h - GRREFERENCEDY - 1)) & 0x03; |
| 1418 line4 = ((line4 << 1) | GRREFERENCE->getPixel(w - GRREFERENCEDX
+ 2, h - GRREFERENCEDY)) & 0x07; | 1418 line4 = ((line4 << 1) | GRREFERENCE->getPixel(w - GRREFERENCEDX
+ 2, h - GRREFERENCEDY)) & 0x07; |
| 1419 line5 = ((line5 << 1) | GRREFERENCE->getPixel(w - GRREFERENCEDX
+ 2, h - GRREFERENCEDY + 1)) & 0x07; | 1419 line5 = ((line5 << 1) | GRREFERENCE->getPixel(w - GRREFERENCEDX
+ 2, h - GRREFERENCEDY + 1)) & 0x07; |
| 1420 } | 1420 } |
| 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 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 uint8_t *pLine, *pLineR, cVal; | 1431 uint8_t *pLine, *pLineR, cVal; |
| 1432 intptr_t nStride, nStrideR, nOffset; | 1432 intptr_t nStride, nStrideR, nOffset; |
| 1433 int32_t k, nBits; | 1433 int32_t k, nBits; |
| 1434 int32_t GRWR, GRHR; | 1434 int32_t GRWR, GRHR; |
| 1435 int32_t GRW, GRH; | 1435 int32_t GRW, GRH; |
| 1436 GRW = (int32_t)CJBig2_GRRDProc::GRW; | 1436 GRW = (int32_t)CJBig2_GRRDProc::GRW; |
| 1437 GRH = (int32_t)CJBig2_GRRDProc::GRH; | 1437 GRH = (int32_t)CJBig2_GRRDProc::GRH; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1452 GRREFERENCEDY = 0; | 1452 GRREFERENCEDY = 0; |
| 1453 } | 1453 } |
| 1454 nOffset = -GRREFERENCEDY * nStrideR; | 1454 nOffset = -GRREFERENCEDY * nStrideR; |
| 1455 for (int32_t 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 int32_t 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 bool line1_r_ok = (reference_h > 0 && reference_h < GRHR + 1); |
| 1463 FX_BOOL line2_r_ok = (reference_h > -1 && reference_h < GRHR); | 1463 bool line2_r_ok = (reference_h > -1 && reference_h < GRHR); |
| 1464 FX_BOOL line3_r_ok = (reference_h > -2 && reference_h < GRHR - 1); | 1464 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 (int32_t 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) | |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1548 } | 1548 } |
| 1549 pLine += nStride; | 1549 pLine += nStride; |
| 1550 if (h < GRHR + GRREFERENCEDY) { | 1550 if (h < GRHR + GRREFERENCEDY) { |
| 1551 pLineR += nStrideR; | 1551 pLineR += nStrideR; |
| 1552 } | 1552 } |
| 1553 } | 1553 } |
| 1554 return GRREG; | 1554 return GRREG; |
| 1555 } | 1555 } |
| 1556 CJBig2_Image *CJBig2_GRRDProc::decode_Template1_unopt(CJBig2_ArithDecoder *pArit
hDecoder, JBig2ArithCtx *grContext) | 1556 CJBig2_Image *CJBig2_GRRDProc::decode_Template1_unopt(CJBig2_ArithDecoder *pArit
hDecoder, JBig2ArithCtx *grContext) |
| 1557 { | 1557 { |
| 1558 FX_BOOL LTP, SLTP, bVal; | 1558 bool LTP, SLTP, bVal; |
| 1559 FX_DWORD CONTEXT; | 1559 FX_DWORD CONTEXT; |
| 1560 CJBig2_Image *GRREG; | 1560 CJBig2_Image *GRREG; |
| 1561 FX_DWORD line1, line2, line3, line4, line5; | 1561 FX_DWORD line1, line2, line3, line4, line5; |
| 1562 LTP = 0; | 1562 LTP = 0; |
| 1563 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); | 1563 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); |
| 1564 GRREG->fill(0); | 1564 GRREG->fill(0); |
| 1565 for(FX_DWORD h = 0; h < GRH; h++) { | 1565 for(FX_DWORD h = 0; h < GRH; h++) { |
| 1566 if(TPGRON) { | 1566 if(TPGRON) { |
| 1567 SLTP = pArithDecoder->DECODE(&grContext[0x0008]); | 1567 SLTP = pArithDecoder->DECODE(&grContext[0x0008]); |
| 1568 LTP = LTP ^ SLTP; | 1568 LTP = LTP ^ SLTP; |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1626 line3 = ((line3 << 1) | GRREFERENCE->getPixel(w - GRREFERENCEDX
+ 1, h - GRREFERENCEDY - 1)) & 0x01; | 1626 line3 = ((line3 << 1) | GRREFERENCE->getPixel(w - GRREFERENCEDX
+ 1, h - GRREFERENCEDY - 1)) & 0x01; |
| 1627 line4 = ((line4 << 1) | GRREFERENCE->getPixel(w - GRREFERENCEDX
+ 2, h - GRREFERENCEDY)) & 0x07; | 1627 line4 = ((line4 << 1) | GRREFERENCE->getPixel(w - GRREFERENCEDX
+ 2, h - GRREFERENCEDY)) & 0x07; |
| 1628 line5 = ((line5 << 1) | GRREFERENCE->getPixel(w - GRREFERENCEDX
+ 2, h - GRREFERENCEDY + 1)) & 0x03; | 1628 line5 = ((line5 << 1) | GRREFERENCE->getPixel(w - GRREFERENCEDX
+ 2, h - GRREFERENCEDY + 1)) & 0x03; |
| 1629 } | 1629 } |
| 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 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 uint8_t *pLine, *pLineR, cVal; | 1640 uint8_t *pLine, *pLineR, cVal; |
| 1641 intptr_t nStride, nStrideR, nOffset; | 1641 intptr_t nStride, nStrideR, nOffset; |
| 1642 int32_t k, nBits; | 1642 int32_t k, nBits; |
| 1643 int32_t GRWR, GRHR; | 1643 int32_t GRWR, GRHR; |
| 1644 int32_t GRW, GRH; | 1644 int32_t GRW, GRH; |
| 1645 GRW = (int32_t)CJBig2_GRRDProc::GRW; | 1645 GRW = (int32_t)CJBig2_GRRDProc::GRW; |
| 1646 GRH = (int32_t)CJBig2_GRRDProc::GRH; | 1646 GRH = (int32_t)CJBig2_GRRDProc::GRH; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1661 GRREFERENCEDY = 0; | 1661 GRREFERENCEDY = 0; |
| 1662 } | 1662 } |
| 1663 nOffset = -GRREFERENCEDY * nStrideR; | 1663 nOffset = -GRREFERENCEDY * nStrideR; |
| 1664 for (int32_t 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 int32_t 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 bool line1_r_ok = (reference_h > 0 && reference_h < GRHR + 1); |
| 1672 FX_BOOL line2_r_ok = (reference_h > -1 && reference_h < GRHR); | 1672 bool line2_r_ok = (reference_h > -1 && reference_h < GRHR); |
| 1673 FX_BOOL line3_r_ok = (reference_h > -2 && reference_h < GRHR - 1); | 1673 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 (int32_t 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) | |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1751 } | 1751 } |
| 1752 pLine += nStride; | 1752 pLine += nStride; |
| 1753 if (h < GRHR + GRREFERENCEDY) { | 1753 if (h < GRHR + GRREFERENCEDY) { |
| 1754 pLineR += nStrideR; | 1754 pLineR += nStrideR; |
| 1755 } | 1755 } |
| 1756 } | 1756 } |
| 1757 return GRREG; | 1757 return GRREG; |
| 1758 } | 1758 } |
| 1759 CJBig2_Image *CJBig2_GRRDProc::decode_V1(CJBig2_ArithDecoder *pArithDecoder, JBi
g2ArithCtx *grContext) | 1759 CJBig2_Image *CJBig2_GRRDProc::decode_V1(CJBig2_ArithDecoder *pArithDecoder, JBi
g2ArithCtx *grContext) |
| 1760 { | 1760 { |
| 1761 FX_BOOL LTP, SLTP, bVal; | 1761 bool LTP, SLTP, bVal; |
| 1762 FX_BOOL TPGRPIX, TPGRVAL; | 1762 bool TPGRPIX, TPGRVAL; |
| 1763 FX_DWORD CONTEXT; | 1763 FX_DWORD CONTEXT; |
| 1764 CJBig2_Image *GRREG; | 1764 CJBig2_Image *GRREG; |
| 1765 LTP = 0; | 1765 LTP = 0; |
| 1766 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); | 1766 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); |
| 1767 GRREG->fill(0); | 1767 GRREG->fill(0); |
| 1768 for(FX_DWORD h = 0; h < GRH; h++) { | 1768 for(FX_DWORD h = 0; h < GRH; h++) { |
| 1769 if(TPGRON) { | 1769 if(TPGRON) { |
| 1770 switch(GRTEMPLATE) { | 1770 switch(GRTEMPLATE) { |
| 1771 case 0: | 1771 case 0: |
| 1772 CONTEXT = 0x0010; | 1772 CONTEXT = 0x0010; |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1874 { | 1874 { |
| 1875 int32_t STRIPT, FIRSTS; | 1875 int32_t STRIPT, FIRSTS; |
| 1876 FX_DWORD NINSTANCES; | 1876 FX_DWORD NINSTANCES; |
| 1877 int32_t DT, DFS, CURS; | 1877 int32_t DT, DFS, CURS; |
| 1878 uint8_t CURT; | 1878 uint8_t CURT; |
| 1879 int32_t 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 int32_t IDS; | 1883 int32_t IDS; |
| 1884 FX_BOOL RI; | 1884 bool RI; |
| 1885 int32_t 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 bool bFirst; |
| 1890 FX_DWORD nTmp; | 1890 FX_DWORD nTmp; |
| 1891 int32_t 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 } |
| 1902 STRIPT *= SBSTRIPS; | 1902 STRIPT *= SBSTRIPS; |
| 1903 STRIPT = -STRIPT; | 1903 STRIPT = -STRIPT; |
| 1904 FIRSTS = 0; | 1904 FIRSTS = 0; |
| 1905 NINSTANCES = 0; | 1905 NINSTANCES = 0; |
| 1906 while(NINSTANCES < SBNUMINSTANCES) { | 1906 while(NINSTANCES < SBNUMINSTANCES) { |
| 1907 if(pHuffmanDecoder->decodeAValue(SBHUFFDT, &DT) != 0) { | 1907 if(pHuffmanDecoder->decodeAValue(SBHUFFDT, &DT) != 0) { |
| 1908 m_pModule->JBig2_Error("text region decoding procedure (huffman): to
o short."); | 1908 m_pModule->JBig2_Error("text region decoding procedure (huffman): to
o short."); |
| 1909 goto failed; | 1909 goto failed; |
| 1910 } | 1910 } |
| 1911 DT *= SBSTRIPS; | 1911 DT *= SBSTRIPS; |
| 1912 STRIPT = STRIPT + DT; | 1912 STRIPT = STRIPT + DT; |
| 1913 bFirst = TRUE; | 1913 bFirst = true; |
| 1914 for(;;) { | 1914 for(;;) { |
| 1915 if(bFirst) { | 1915 if(bFirst) { |
| 1916 if(pHuffmanDecoder->decodeAValue(SBHUFFFS, &DFS) != 0) { | 1916 if(pHuffmanDecoder->decodeAValue(SBHUFFFS, &DFS) != 0) { |
| 1917 m_pModule->JBig2_Error("text region decoding procedure (huff
man): too short."); | 1917 m_pModule->JBig2_Error("text region decoding procedure (huff
man): too short."); |
| 1918 goto failed; | 1918 goto failed; |
| 1919 } | 1919 } |
| 1920 FIRSTS = FIRSTS + DFS; | 1920 FIRSTS = FIRSTS + DFS; |
| 1921 CURS = FIRSTS; | 1921 CURS = FIRSTS; |
| 1922 bFirst = FALSE; | 1922 bFirst = false; |
| 1923 } else { | 1923 } else { |
| 1924 nVal = pHuffmanDecoder->decodeAValue(SBHUFFDS, &IDS); | 1924 nVal = pHuffmanDecoder->decodeAValue(SBHUFFDS, &IDS); |
| 1925 if(nVal == JBIG2_OOB) { | 1925 if(nVal == JBIG2_OOB) { |
| 1926 break; | 1926 break; |
| 1927 } else if(nVal != 0) { | 1927 } else if(nVal != 0) { |
| 1928 m_pModule->JBig2_Error("text region decoding procedure (huff
man): too short."); | 1928 m_pModule->JBig2_Error("text region decoding procedure (huff
man): too short."); |
| 1929 goto failed; | 1929 goto failed; |
| 1930 } else { | 1930 } else { |
| 1931 CURS = CURS + IDS + SBDSOFFSET; | 1931 CURS = CURS + IDS + SBDSOFFSET; |
| 1932 } | 1932 } |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2099 int32_t 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 int32_t IDS; | 2103 int32_t IDS; |
| 2104 int RI; | 2104 int RI; |
| 2105 int32_t 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 bool bFirst; |
| 2110 int32_t nRet, nVal; | 2110 int32_t nRet, nVal; |
| 2111 int32_t 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; |
| 2122 IARDH = pIDS->IARDH; | 2122 IARDH = pIDS->IARDH; |
| 2123 IARDX = pIDS->IARDX; | 2123 IARDX = pIDS->IARDX; |
| 2124 IARDY = pIDS->IARDY; | 2124 IARDY = pIDS->IARDY; |
| 2125 IAID = pIDS->IAID; | 2125 IAID = pIDS->IAID; |
| 2126 bRetained = TRUE; | 2126 bRetained = true; |
| 2127 } else { | 2127 } else { |
| 2128 JBIG2_ALLOC(IADT, CJBig2_ArithIntDecoder()); | 2128 JBIG2_ALLOC(IADT, CJBig2_ArithIntDecoder()); |
| 2129 JBIG2_ALLOC(IAFS, CJBig2_ArithIntDecoder()); | 2129 JBIG2_ALLOC(IAFS, CJBig2_ArithIntDecoder()); |
| 2130 JBIG2_ALLOC(IADS, CJBig2_ArithIntDecoder()); | 2130 JBIG2_ALLOC(IADS, CJBig2_ArithIntDecoder()); |
| 2131 JBIG2_ALLOC(IAIT, CJBig2_ArithIntDecoder()); | 2131 JBIG2_ALLOC(IAIT, CJBig2_ArithIntDecoder()); |
| 2132 JBIG2_ALLOC(IARI, CJBig2_ArithIntDecoder()); | 2132 JBIG2_ALLOC(IARI, CJBig2_ArithIntDecoder()); |
| 2133 JBIG2_ALLOC(IARDW, CJBig2_ArithIntDecoder()); | 2133 JBIG2_ALLOC(IARDW, CJBig2_ArithIntDecoder()); |
| 2134 JBIG2_ALLOC(IARDH, CJBig2_ArithIntDecoder()); | 2134 JBIG2_ALLOC(IARDH, CJBig2_ArithIntDecoder()); |
| 2135 JBIG2_ALLOC(IARDX, CJBig2_ArithIntDecoder()); | 2135 JBIG2_ALLOC(IARDX, CJBig2_ArithIntDecoder()); |
| 2136 JBIG2_ALLOC(IARDY, CJBig2_ArithIntDecoder()); | 2136 JBIG2_ALLOC(IARDY, CJBig2_ArithIntDecoder()); |
| 2137 JBIG2_ALLOC(IAID , CJBig2_ArithIaidDecoder(SBSYMCODELEN)); | 2137 JBIG2_ALLOC(IAID , CJBig2_ArithIaidDecoder(SBSYMCODELEN)); |
| 2138 bRetained = FALSE; | 2138 bRetained = false; |
| 2139 } | 2139 } |
| 2140 JBIG2_ALLOC(SBREG, CJBig2_Image(SBW, SBH)); | 2140 JBIG2_ALLOC(SBREG, CJBig2_Image(SBW, SBH)); |
| 2141 SBREG->fill(SBDEFPIXEL); | 2141 SBREG->fill(SBDEFPIXEL); |
| 2142 if(IADT->decode(pArithDecoder, &STRIPT) == -1) { | 2142 if(IADT->decode(pArithDecoder, &STRIPT) == -1) { |
| 2143 m_pModule->JBig2_Error("text region decoding procedure (arith): too shor
t."); | 2143 m_pModule->JBig2_Error("text region decoding procedure (arith): too shor
t."); |
| 2144 goto failed; | 2144 goto failed; |
| 2145 } | 2145 } |
| 2146 STRIPT *= SBSTRIPS; | 2146 STRIPT *= SBSTRIPS; |
| 2147 STRIPT = -STRIPT; | 2147 STRIPT = -STRIPT; |
| 2148 FIRSTS = 0; | 2148 FIRSTS = 0; |
| 2149 NINSTANCES = 0; | 2149 NINSTANCES = 0; |
| 2150 while(NINSTANCES < SBNUMINSTANCES) { | 2150 while(NINSTANCES < SBNUMINSTANCES) { |
| 2151 if(IADT->decode(pArithDecoder, &DT) == -1) { | 2151 if(IADT->decode(pArithDecoder, &DT) == -1) { |
| 2152 m_pModule->JBig2_Error("text region decoding procedure (arith): too
short."); | 2152 m_pModule->JBig2_Error("text region decoding procedure (arith): too
short."); |
| 2153 goto failed; | 2153 goto failed; |
| 2154 } | 2154 } |
| 2155 DT *= SBSTRIPS; | 2155 DT *= SBSTRIPS; |
| 2156 STRIPT = STRIPT + DT; | 2156 STRIPT = STRIPT + DT; |
| 2157 bFirst = TRUE; | 2157 bFirst = true; |
| 2158 for(;;) { | 2158 for(;;) { |
| 2159 if(bFirst) { | 2159 if(bFirst) { |
| 2160 if(IAFS->decode(pArithDecoder, &DFS) == -1) { | 2160 if(IAFS->decode(pArithDecoder, &DFS) == -1) { |
| 2161 m_pModule->JBig2_Error("text region decoding procedure (arit
h): too short."); | 2161 m_pModule->JBig2_Error("text region decoding procedure (arit
h): too short."); |
| 2162 goto failed; | 2162 goto failed; |
| 2163 } | 2163 } |
| 2164 FIRSTS = FIRSTS + DFS; | 2164 FIRSTS = FIRSTS + DFS; |
| 2165 CURS = FIRSTS; | 2165 CURS = FIRSTS; |
| 2166 bFirst = FALSE; | 2166 bFirst = false; |
| 2167 } else { | 2167 } else { |
| 2168 nRet = IADS->decode(pArithDecoder, &IDS); | 2168 nRet = IADS->decode(pArithDecoder, &IDS); |
| 2169 if(nRet == JBIG2_OOB) { | 2169 if(nRet == JBIG2_OOB) { |
| 2170 break; | 2170 break; |
| 2171 } else if(nRet != 0) { | 2171 } else if(nRet != 0) { |
| 2172 m_pModule->JBig2_Error("text region decoding procedure (arit
h): too short."); | 2172 m_pModule->JBig2_Error("text region decoding procedure (arit
h): too short."); |
| 2173 goto failed; | 2173 goto failed; |
| 2174 } else { | 2174 } else { |
| 2175 CURS = CURS + IDS + SBDSOFFSET; | 2175 CURS = CURS + IDS + SBDSOFFSET; |
| 2176 } | 2176 } |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2292 if(TRANSPOSED == 0 && ((REFCORNER == JBIG2_CORNER_TOPLEFT) | 2292 if(TRANSPOSED == 0 && ((REFCORNER == JBIG2_CORNER_TOPLEFT) |
| 2293 || (REFCORNER == JBIG2_CORNER_BOTTOMLEFT))) { | 2293 || (REFCORNER == JBIG2_CORNER_BOTTOMLEFT))) { |
| 2294 CURS = CURS + WI - 1; | 2294 CURS = CURS + WI - 1; |
| 2295 } else if(TRANSPOSED == 1 && ((REFCORNER == JBIG2_CORNER_TOPLEFT) | 2295 } else if(TRANSPOSED == 1 && ((REFCORNER == JBIG2_CORNER_TOPLEFT) |
| 2296 || (REFCORNER == JBIG2_CORNER_TOPRIGHT
))) { | 2296 || (REFCORNER == JBIG2_CORNER_TOPRIGHT
))) { |
| 2297 CURS = CURS + HI - 1; | 2297 CURS = CURS + HI - 1; |
| 2298 } | 2298 } |
| 2299 NINSTANCES = NINSTANCES + 1; | 2299 NINSTANCES = NINSTANCES + 1; |
| 2300 } | 2300 } |
| 2301 } | 2301 } |
| 2302 if(bRetained == FALSE) { | 2302 if(bRetained == false) { |
| 2303 delete IADT; | 2303 delete IADT; |
| 2304 delete IAFS; | 2304 delete IAFS; |
| 2305 delete IADS; | 2305 delete IADS; |
| 2306 delete IAIT; | 2306 delete IAIT; |
| 2307 delete IARI; | 2307 delete IARI; |
| 2308 delete IARDW; | 2308 delete IARDW; |
| 2309 delete IARDH; | 2309 delete IARDH; |
| 2310 delete IARDX; | 2310 delete IARDX; |
| 2311 delete IARDY; | 2311 delete IARDY; |
| 2312 delete IAID; | 2312 delete IAID; |
| 2313 } | 2313 } |
| 2314 return SBREG; | 2314 return SBREG; |
| 2315 failed: | 2315 failed: |
| 2316 if(bRetained == FALSE) { | 2316 if(bRetained == false) { |
| 2317 delete IADT; | 2317 delete IADT; |
| 2318 delete IAFS; | 2318 delete IAFS; |
| 2319 delete IADS; | 2319 delete IADS; |
| 2320 delete IAIT; | 2320 delete IAIT; |
| 2321 delete IARI; | 2321 delete IARI; |
| 2322 delete IARDW; | 2322 delete IARDW; |
| 2323 delete IARDH; | 2323 delete IARDH; |
| 2324 delete IARDX; | 2324 delete IARDX; |
| 2325 delete IARDY; | 2325 delete IARDY; |
| 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 int32_t HCDH; | 2336 int32_t HCDH; |
| 2337 FX_DWORD SYMWIDTH, TOTWIDTH; | 2337 FX_DWORD SYMWIDTH, TOTWIDTH; |
| 2338 int32_t 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 bool *EXFLAGS; |
| 2342 FX_DWORD EXINDEX; | 2342 FX_DWORD EXINDEX; |
| 2343 FX_BOOL CUREXFLAG; | 2343 bool CUREXFLAG; |
| 2344 FX_DWORD EXRUNLENGTH; | 2344 FX_DWORD EXRUNLENGTH; |
| 2345 int32_t nVal; | 2345 int32_t nVal; |
| 2346 FX_DWORD nTmp; | 2346 FX_DWORD nTmp; |
| 2347 FX_DWORD SBNUMSYMS; | 2347 FX_DWORD SBNUMSYMS; |
| 2348 uint8_t SBSYMCODELEN; | 2348 uint8_t SBSYMCODELEN; |
| 2349 FX_DWORD IDI; | 2349 FX_DWORD IDI; |
| 2350 int32_t 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; |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2578 delete pGRRD; | 2578 delete pGRRD; |
| 2579 } | 2579 } |
| 2580 } | 2580 } |
| 2581 SDNEWSYMS[NSYMSDECODED] = BS; | 2581 SDNEWSYMS[NSYMSDECODED] = BS; |
| 2582 BS = NULL; | 2582 BS = NULL; |
| 2583 NSYMSDECODED = NSYMSDECODED + 1; | 2583 NSYMSDECODED = NSYMSDECODED + 1; |
| 2584 } | 2584 } |
| 2585 } | 2585 } |
| 2586 EXINDEX = 0; | 2586 EXINDEX = 0; |
| 2587 CUREXFLAG = 0; | 2587 CUREXFLAG = 0; |
| 2588 EXFLAGS = (FX_BOOL*)m_pModule->JBig2_Malloc2(sizeof(FX_BOOL), (SDNUMINSYMS +
SDNUMNEWSYMS)); | 2588 EXFLAGS = (bool*)m_pModule->JBig2_Malloc2(sizeof(bool), (SDNUMINSYMS + SDNUM
NEWSYMS)); |
| 2589 while(EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { | 2589 while(EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { |
| 2590 if(IAEX->decode(pArithDecoder, (int*)&EXRUNLENGTH) == -1) { | 2590 if(IAEX->decode(pArithDecoder, (int*)&EXRUNLENGTH) == -1) { |
| 2591 m_pModule->JBig2_Free(EXFLAGS); | 2591 m_pModule->JBig2_Free(EXFLAGS); |
| 2592 m_pModule->JBig2_Error("symbol dictionary decoding procedure (arith)
: too short."); | 2592 m_pModule->JBig2_Error("symbol dictionary decoding procedure (arith)
: too short."); |
| 2593 goto failed; | 2593 goto failed; |
| 2594 } | 2594 } |
| 2595 if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) { | 2595 if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) { |
| 2596 m_pModule->JBig2_Free(EXFLAGS); | 2596 m_pModule->JBig2_Free(EXFLAGS); |
| 2597 m_pModule->JBig2_Error("symbol dictionary decoding procedure (arith)
: Invalid EXRUNLENGTH value."); | 2597 m_pModule->JBig2_Error("symbol dictionary decoding procedure (arith)
: Invalid EXRUNLENGTH value."); |
| 2598 goto failed; | 2598 goto failed; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 int32_t HCDH; | 2674 int32_t HCDH; |
| 2675 FX_DWORD SYMWIDTH, TOTWIDTH, HCFIRSTSYM; | 2675 FX_DWORD SYMWIDTH, TOTWIDTH, HCFIRSTSYM; |
| 2676 int32_t 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 bool *EXFLAGS; |
| 2680 FX_DWORD EXINDEX; | 2680 FX_DWORD EXINDEX; |
| 2681 FX_BOOL CUREXFLAG; | 2681 bool CUREXFLAG; |
| 2682 FX_DWORD EXRUNLENGTH; | 2682 FX_DWORD EXRUNLENGTH; |
| 2683 int32_t nVal, nBits; | 2683 int32_t nVal, nBits; |
| 2684 FX_DWORD nTmp; | 2684 FX_DWORD nTmp; |
| 2685 FX_DWORD SBNUMSYMS; | 2685 FX_DWORD SBNUMSYMS; |
| 2686 uint8_t SBSYMCODELEN; | 2686 uint8_t SBSYMCODELEN; |
| 2687 JBig2HuffmanCode *SBSYMCODES; | 2687 JBig2HuffmanCode *SBSYMCODES; |
| 2688 FX_DWORD IDI; | 2688 FX_DWORD IDI; |
| 2689 int32_t RDXI, RDYI; | 2689 int32_t RDXI, RDYI; |
| 2690 FX_DWORD BMSIZE; | 2690 FX_DWORD BMSIZE; |
| 2691 FX_DWORD stride; | 2691 FX_DWORD stride; |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2969 nTmp += SDNEWSYMWIDTHS[I]; | 2969 nTmp += SDNEWSYMWIDTHS[I]; |
| 2970 } | 2970 } |
| 2971 delete BHC; | 2971 delete BHC; |
| 2972 BHC = NULL; | 2972 BHC = NULL; |
| 2973 } | 2973 } |
| 2974 } | 2974 } |
| 2975 EXINDEX = 0; | 2975 EXINDEX = 0; |
| 2976 CUREXFLAG = 0; | 2976 CUREXFLAG = 0; |
| 2977 JBIG2_ALLOC(pTable, CJBig2_HuffmanTable(HuffmanTable_B1, | 2977 JBIG2_ALLOC(pTable, CJBig2_HuffmanTable(HuffmanTable_B1, |
| 2978 sizeof(HuffmanTable_B1) / sizeof(JBi
g2TableLine), HuffmanTable_HTOOB_B1)); | 2978 sizeof(HuffmanTable_B1) / sizeof(JBi
g2TableLine), HuffmanTable_HTOOB_B1)); |
| 2979 EXFLAGS = (FX_BOOL*)m_pModule->JBig2_Malloc2(sizeof(FX_BOOL), (SDNUMINSYMS +
SDNUMNEWSYMS)); | 2979 EXFLAGS = (bool*)m_pModule->JBig2_Malloc2(sizeof(bool), (SDNUMINSYMS + SDNUM
NEWSYMS)); |
| 2980 while(EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { | 2980 while(EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { |
| 2981 if(pHuffmanDecoder->decodeAValue(pTable, (int*)&EXRUNLENGTH) != 0) { | 2981 if(pHuffmanDecoder->decodeAValue(pTable, (int*)&EXRUNLENGTH) != 0) { |
| 2982 delete pTable; | 2982 delete pTable; |
| 2983 m_pModule->JBig2_Free(EXFLAGS); | 2983 m_pModule->JBig2_Free(EXFLAGS); |
| 2984 m_pModule->JBig2_Error("symbol dictionary decoding procedure (huffma
n): too short."); | 2984 m_pModule->JBig2_Error("symbol dictionary decoding procedure (huffma
n): too short."); |
| 2985 goto failed; | 2985 goto failed; |
| 2986 } | 2986 } |
| 2987 if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) { | 2987 if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) { |
| 2988 delete pTable; | 2988 delete pTable; |
| 2989 m_pModule->JBig2_Free(EXFLAGS); | 2989 m_pModule->JBig2_Free(EXFLAGS); |
| (...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3470 m_pImage = pImage; | 3470 m_pImage = pImage; |
| 3471 (*m_pImage)->fill(0); | 3471 (*m_pImage)->fill(0); |
| 3472 LTP = 0; | 3472 LTP = 0; |
| 3473 m_loopIndex = 0; | 3473 m_loopIndex = 0; |
| 3474 m_pArithDecoder = pArithDecoder; | 3474 m_pArithDecoder = pArithDecoder; |
| 3475 m_gbContext = gbContext; | 3475 m_gbContext = gbContext; |
| 3476 return decode_Arith_V2(pPause); | 3476 return decode_Arith_V2(pPause); |
| 3477 } | 3477 } |
| 3478 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_V2(IFX_Pause* pPause) | 3478 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_V2(IFX_Pause* pPause) |
| 3479 { | 3479 { |
| 3480 FX_BOOL SLTP, bVal; | 3480 bool SLTP, bVal; |
| 3481 FX_DWORD CONTEXT; | 3481 FX_DWORD CONTEXT; |
| 3482 CJBig2_Image *GBREG = *m_pImage; | 3482 CJBig2_Image *GBREG = *m_pImage; |
| 3483 FX_DWORD line1, line2, line3; | 3483 FX_DWORD line1, line2, line3; |
| 3484 LTP = 0; | 3484 LTP = 0; |
| 3485 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); | 3485 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
| 3486 GBREG->fill(0); | 3486 GBREG->fill(0); |
| 3487 for(; m_loopIndex < GBH; m_loopIndex++) { | 3487 for(; m_loopIndex < GBH; m_loopIndex++) { |
| 3488 if(TPGDON) { | 3488 if(TPGDON) { |
| 3489 switch(GBTEMPLATE) { | 3489 switch(GBTEMPLATE) { |
| 3490 case 0: | 3490 case 0: |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3643 m_DecodeType = 3; | 3643 m_DecodeType = 3; |
| 3644 (*m_pImage)->fill(0); | 3644 (*m_pImage)->fill(0); |
| 3645 LTP = 0; | 3645 LTP = 0; |
| 3646 m_loopIndex = 0; | 3646 m_loopIndex = 0; |
| 3647 m_pArithDecoder = pArithDecoder; | 3647 m_pArithDecoder = pArithDecoder; |
| 3648 m_gbContext = gbContext; | 3648 m_gbContext = gbContext; |
| 3649 return decode_Arith_V1(pPause); | 3649 return decode_Arith_V1(pPause); |
| 3650 } | 3650 } |
| 3651 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_V1(IFX_Pause* pPause) | 3651 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_V1(IFX_Pause* pPause) |
| 3652 { | 3652 { |
| 3653 FX_BOOL SLTP, bVal; | 3653 bool SLTP, bVal; |
| 3654 FX_DWORD CONTEXT = 0; | 3654 FX_DWORD CONTEXT = 0; |
| 3655 CJBig2_Image *GBREG = (*m_pImage); | 3655 CJBig2_Image *GBREG = (*m_pImage); |
| 3656 for(; m_loopIndex < GBH; m_loopIndex++) { | 3656 for(; m_loopIndex < GBH; m_loopIndex++) { |
| 3657 if(TPGDON) { | 3657 if(TPGDON) { |
| 3658 switch(GBTEMPLATE) { | 3658 switch(GBTEMPLATE) { |
| 3659 case 0: | 3659 case 0: |
| 3660 CONTEXT = 0x9b25; | 3660 CONTEXT = 0x9b25; |
| 3661 break; | 3661 break; |
| 3662 case 1: | 3662 case 1: |
| 3663 CONTEXT = 0x0795; | 3663 CONTEXT = 0x0795; |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3792 case 3: | 3792 case 3: |
| 3793 return decode_Arith_V1(pPause); | 3793 return decode_Arith_V1(pPause); |
| 3794 case 4: | 3794 case 4: |
| 3795 return decode_MMR(); | 3795 return decode_MMR(); |
| 3796 } | 3796 } |
| 3797 m_ProssiveStatus = FXCODEC_STATUS_ERROR; | 3797 m_ProssiveStatus = FXCODEC_STATUS_ERROR; |
| 3798 return m_ProssiveStatus; | 3798 return m_ProssiveStatus; |
| 3799 } | 3799 } |
| 3800 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template0_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) | 3800 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template0_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) |
| 3801 { | 3801 { |
| 3802 FX_BOOL SLTP, bVal; | 3802 bool SLTP, bVal; |
| 3803 FX_DWORD CONTEXT; | 3803 FX_DWORD CONTEXT; |
| 3804 FX_DWORD line1, line2; | 3804 FX_DWORD line1, line2; |
| 3805 uint8_t *pLine1, *pLine2, cVal; | 3805 uint8_t *pLine1, *pLine2, cVal; |
| 3806 int32_t nStride, nStride2, k; | 3806 int32_t nStride, nStride2, k; |
| 3807 int32_t nLineBytes, nBitsLeft, cc; | 3807 int32_t nLineBytes, nBitsLeft, cc; |
| 3808 if(m_pLine == NULL) { | 3808 if(m_pLine == NULL) { |
| 3809 m_pLine = pImage->m_pData; | 3809 m_pLine = pImage->m_pData; |
| 3810 } | 3810 } |
| 3811 nStride = pImage->m_nStride; | 3811 nStride = pImage->m_nStride; |
| 3812 nStride2 = nStride << 1; | 3812 nStride2 = nStride << 1; |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3884 m_loopIndex++; | 3884 m_loopIndex++; |
| 3885 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 3885 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 3886 return FXCODEC_STATUS_DECODE_TOBECONTINUE; | 3886 return FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 3887 } | 3887 } |
| 3888 } | 3888 } |
| 3889 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; | 3889 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; |
| 3890 return FXCODEC_STATUS_DECODE_FINISH; | 3890 return FXCODEC_STATUS_DECODE_FINISH; |
| 3891 } | 3891 } |
| 3892 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template0_unopt(CJBig2_Image * pImag
e, CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPau
se) | 3892 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template0_unopt(CJBig2_Image * pImag
e, CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPau
se) |
| 3893 { | 3893 { |
| 3894 FX_BOOL SLTP, bVal; | 3894 bool SLTP, bVal; |
| 3895 FX_DWORD CONTEXT; | 3895 FX_DWORD CONTEXT; |
| 3896 FX_DWORD line1, line2, line3; | 3896 FX_DWORD line1, line2, line3; |
| 3897 for(; m_loopIndex < GBH; m_loopIndex++) { | 3897 for(; m_loopIndex < GBH; m_loopIndex++) { |
| 3898 if(TPGDON) { | 3898 if(TPGDON) { |
| 3899 SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); | 3899 SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); |
| 3900 LTP = LTP ^ SLTP; | 3900 LTP = LTP ^ SLTP; |
| 3901 } | 3901 } |
| 3902 if(LTP == 1) { | 3902 if(LTP == 1) { |
| 3903 pImage->copyLine(m_loopIndex, m_loopIndex - 1); | 3903 pImage->copyLine(m_loopIndex, m_loopIndex - 1); |
| 3904 } else { | 3904 } else { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 3933 m_loopIndex++; | 3933 m_loopIndex++; |
| 3934 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 3934 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 3935 return FXCODEC_STATUS_DECODE_TOBECONTINUE; | 3935 return FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 3936 } | 3936 } |
| 3937 } | 3937 } |
| 3938 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; | 3938 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; |
| 3939 return FXCODEC_STATUS_DECODE_FINISH; | 3939 return FXCODEC_STATUS_DECODE_FINISH; |
| 3940 } | 3940 } |
| 3941 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template1_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) | 3941 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template1_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) |
| 3942 { | 3942 { |
| 3943 FX_BOOL SLTP, bVal; | 3943 bool SLTP, bVal; |
| 3944 FX_DWORD CONTEXT; | 3944 FX_DWORD CONTEXT; |
| 3945 FX_DWORD line1, line2; | 3945 FX_DWORD line1, line2; |
| 3946 uint8_t *pLine1, *pLine2, cVal; | 3946 uint8_t *pLine1, *pLine2, cVal; |
| 3947 int32_t nStride, nStride2, k; | 3947 int32_t nStride, nStride2, k; |
| 3948 int32_t nLineBytes, nBitsLeft, cc; | 3948 int32_t nLineBytes, nBitsLeft, cc; |
| 3949 if (!m_pLine) { | 3949 if (!m_pLine) { |
| 3950 m_pLine = pImage->m_pData; | 3950 m_pLine = pImage->m_pData; |
| 3951 } | 3951 } |
| 3952 nStride = pImage->m_nStride; | 3952 nStride = pImage->m_nStride; |
| 3953 nStride2 = nStride << 1; | 3953 nStride2 = nStride << 1; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4024 m_loopIndex++; | 4024 m_loopIndex++; |
| 4025 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4025 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 4026 return FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4026 return FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 4027 } | 4027 } |
| 4028 } | 4028 } |
| 4029 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; | 4029 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; |
| 4030 return FXCODEC_STATUS_DECODE_FINISH; | 4030 return FXCODEC_STATUS_DECODE_FINISH; |
| 4031 } | 4031 } |
| 4032 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template1_unopt(CJBig2_Image * pImag
e, CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPau
se) | 4032 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template1_unopt(CJBig2_Image * pImag
e, CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPau
se) |
| 4033 { | 4033 { |
| 4034 FX_BOOL SLTP, bVal; | 4034 bool SLTP, bVal; |
| 4035 FX_DWORD CONTEXT; | 4035 FX_DWORD CONTEXT; |
| 4036 FX_DWORD line1, line2, line3; | 4036 FX_DWORD line1, line2, line3; |
| 4037 for(FX_DWORD h = 0; h < GBH; h++) { | 4037 for(FX_DWORD h = 0; h < GBH; h++) { |
| 4038 if(TPGDON) { | 4038 if(TPGDON) { |
| 4039 SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); | 4039 SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); |
| 4040 LTP = LTP ^ SLTP; | 4040 LTP = LTP ^ SLTP; |
| 4041 } | 4041 } |
| 4042 if(LTP == 1) { | 4042 if(LTP == 1) { |
| 4043 pImage->copyLine(h, h - 1); | 4043 pImage->copyLine(h, h - 1); |
| 4044 } else { | 4044 } else { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 4071 m_loopIndex++; | 4071 m_loopIndex++; |
| 4072 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4072 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 4073 return FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4073 return FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 4074 } | 4074 } |
| 4075 } | 4075 } |
| 4076 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; | 4076 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; |
| 4077 return FXCODEC_STATUS_DECODE_FINISH; | 4077 return FXCODEC_STATUS_DECODE_FINISH; |
| 4078 } | 4078 } |
| 4079 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template2_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) | 4079 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template2_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) |
| 4080 { | 4080 { |
| 4081 FX_BOOL SLTP, bVal; | 4081 bool SLTP, bVal; |
| 4082 FX_DWORD CONTEXT; | 4082 FX_DWORD CONTEXT; |
| 4083 FX_DWORD line1, line2; | 4083 FX_DWORD line1, line2; |
| 4084 uint8_t *pLine1, *pLine2, cVal; | 4084 uint8_t *pLine1, *pLine2, cVal; |
| 4085 int32_t nStride, nStride2, k; | 4085 int32_t nStride, nStride2, k; |
| 4086 int32_t nLineBytes, nBitsLeft, cc; | 4086 int32_t nLineBytes, nBitsLeft, cc; |
| 4087 if(!m_pLine) { | 4087 if(!m_pLine) { |
| 4088 m_pLine = pImage->m_pData; | 4088 m_pLine = pImage->m_pData; |
| 4089 } | 4089 } |
| 4090 nStride = pImage->m_nStride; | 4090 nStride = pImage->m_nStride; |
| 4091 nStride2 = nStride << 1; | 4091 nStride2 = nStride << 1; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4162 m_loopIndex++; | 4162 m_loopIndex++; |
| 4163 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4163 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 4164 return FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4164 return FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 4165 } | 4165 } |
| 4166 } | 4166 } |
| 4167 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; | 4167 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; |
| 4168 return FXCODEC_STATUS_DECODE_FINISH; | 4168 return FXCODEC_STATUS_DECODE_FINISH; |
| 4169 } | 4169 } |
| 4170 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template2_unopt(CJBig2_Image * pImag
e, CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPau
se) | 4170 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template2_unopt(CJBig2_Image * pImag
e, CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPau
se) |
| 4171 { | 4171 { |
| 4172 FX_BOOL SLTP, bVal; | 4172 bool SLTP, bVal; |
| 4173 FX_DWORD CONTEXT; | 4173 FX_DWORD CONTEXT; |
| 4174 FX_DWORD line1, line2, line3; | 4174 FX_DWORD line1, line2, line3; |
| 4175 for(; m_loopIndex < GBH; m_loopIndex++) { | 4175 for(; m_loopIndex < GBH; m_loopIndex++) { |
| 4176 if(TPGDON) { | 4176 if(TPGDON) { |
| 4177 SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); | 4177 SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); |
| 4178 LTP = LTP ^ SLTP; | 4178 LTP = LTP ^ SLTP; |
| 4179 } | 4179 } |
| 4180 if(LTP == 1) { | 4180 if(LTP == 1) { |
| 4181 pImage->copyLine(m_loopIndex, m_loopIndex - 1); | 4181 pImage->copyLine(m_loopIndex, m_loopIndex - 1); |
| 4182 } else { | 4182 } else { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 4207 m_loopIndex++; | 4207 m_loopIndex++; |
| 4208 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4208 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 4209 return FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4209 return FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 4210 } | 4210 } |
| 4211 } | 4211 } |
| 4212 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; | 4212 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; |
| 4213 return FXCODEC_STATUS_DECODE_FINISH; | 4213 return FXCODEC_STATUS_DECODE_FINISH; |
| 4214 } | 4214 } |
| 4215 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template3_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) | 4215 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template3_opt3(CJBig2_Image *pImage,
CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPause
) |
| 4216 { | 4216 { |
| 4217 FX_BOOL SLTP, bVal; | 4217 bool SLTP, bVal; |
| 4218 FX_DWORD CONTEXT; | 4218 FX_DWORD CONTEXT; |
| 4219 FX_DWORD line1; | 4219 FX_DWORD line1; |
| 4220 uint8_t *pLine1, cVal; | 4220 uint8_t *pLine1, cVal; |
| 4221 int32_t nStride, k; | 4221 int32_t nStride, k; |
| 4222 int32_t nLineBytes, nBitsLeft, cc; | 4222 int32_t nLineBytes, nBitsLeft, cc; |
| 4223 if (!m_pLine) { | 4223 if (!m_pLine) { |
| 4224 m_pLine = pImage->m_pData; | 4224 m_pLine = pImage->m_pData; |
| 4225 } | 4225 } |
| 4226 nStride = pImage->m_nStride; | 4226 nStride = pImage->m_nStride; |
| 4227 nLineBytes = ((GBW + 7) >> 3) - 1; | 4227 nLineBytes = ((GBW + 7) >> 3) - 1; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4283 m_loopIndex++; | 4283 m_loopIndex++; |
| 4284 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4284 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 4285 return FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4285 return FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 4286 } | 4286 } |
| 4287 } | 4287 } |
| 4288 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; | 4288 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; |
| 4289 return FXCODEC_STATUS_DECODE_FINISH; | 4289 return FXCODEC_STATUS_DECODE_FINISH; |
| 4290 } | 4290 } |
| 4291 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template3_unopt(CJBig2_Image * pImag
e, CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPau
se) | 4291 FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template3_unopt(CJBig2_Image * pImag
e, CJBig2_ArithDecoder *pArithDecoder, JBig2ArithCtx *gbContext, IFX_Pause* pPau
se) |
| 4292 { | 4292 { |
| 4293 FX_BOOL SLTP, bVal; | 4293 bool SLTP, bVal; |
| 4294 FX_DWORD CONTEXT; | 4294 FX_DWORD CONTEXT; |
| 4295 FX_DWORD line1, line2; | 4295 FX_DWORD line1, line2; |
| 4296 for(; m_loopIndex < GBH; m_loopIndex++) { | 4296 for(; m_loopIndex < GBH; m_loopIndex++) { |
| 4297 if(TPGDON) { | 4297 if(TPGDON) { |
| 4298 SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); | 4298 SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); |
| 4299 LTP = LTP ^ SLTP; | 4299 LTP = LTP ^ SLTP; |
| 4300 } | 4300 } |
| 4301 if(LTP == 1) { | 4301 if(LTP == 1) { |
| 4302 pImage->copyLine(m_loopIndex, m_loopIndex - 1); | 4302 pImage->copyLine(m_loopIndex, m_loopIndex - 1); |
| 4303 } else { | 4303 } else { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 4322 } | 4322 } |
| 4323 if(pPause && pPause->NeedToPauseNow()) { | 4323 if(pPause && pPause->NeedToPauseNow()) { |
| 4324 m_loopIndex++; | 4324 m_loopIndex++; |
| 4325 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4325 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 4326 return FXCODEC_STATUS_DECODE_TOBECONTINUE; | 4326 return FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 4327 } | 4327 } |
| 4328 } | 4328 } |
| 4329 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; | 4329 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; |
| 4330 return FXCODEC_STATUS_DECODE_FINISH; | 4330 return FXCODEC_STATUS_DECODE_FINISH; |
| 4331 } | 4331 } |
| OLD | NEW |