Index: core/src/fxcodec/jbig2/JBig2_GeneralDecoder.cpp |
diff --git a/core/src/fxcodec/jbig2/JBig2_GeneralDecoder.cpp b/core/src/fxcodec/jbig2/JBig2_GeneralDecoder.cpp |
index a4100320cbb29a2c39f463a1e4880ebba5d6f72b..a2dc397af2ee54249bb47eed9085daaa84242538 100644 |
--- a/core/src/fxcodec/jbig2/JBig2_GeneralDecoder.cpp |
+++ b/core/src/fxcodec/jbig2/JBig2_GeneralDecoder.cpp |
@@ -66,123 +66,6 @@ CJBig2_Image* CJBig2_GRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, |
} |
} |
} |
-CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template0_opt( |
- CJBig2_ArithDecoder* pArithDecoder, |
- JBig2ArithCtx* gbContext) { |
- FX_BOOL LTP, SLTP, bVal; |
- FX_DWORD CONTEXT; |
- CJBig2_Image* GBREG; |
- FX_DWORD line1, line2, line3; |
- LTP = 0; |
- JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
- GBREG->fill(0); |
- for (FX_DWORD h = 0; h < GBH; h++) { |
- if (TPGDON) { |
- SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); |
- LTP = LTP ^ SLTP; |
- } |
- if (LTP == 1) { |
- GBREG->copyLine(h, h - 1); |
- } else { |
- line1 = GBREG->getPixel(2, h - 2); |
- line1 |= GBREG->getPixel(1, h - 2) << 1; |
- line1 |= GBREG->getPixel(0, h - 2) << 2; |
- line2 = GBREG->getPixel(3, h - 1); |
- line2 |= GBREG->getPixel(2, h - 1) << 1; |
- line2 |= GBREG->getPixel(1, h - 1) << 2; |
- line2 |= GBREG->getPixel(0, h - 1) << 3; |
- line3 = 0; |
- for (FX_DWORD w = 0; w < GBW; w++) { |
- if (USESKIP && SKIP->getPixel(w, h)) { |
- bVal = 0; |
- } else { |
- CONTEXT = line3; |
- CONTEXT |= line2 << 4; |
- CONTEXT |= line1 << 11; |
- bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); |
- } |
- if (bVal) { |
- GBREG->setPixel(w, h, bVal); |
- } |
- line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 2)) & 0x1f; |
- line2 = ((line2 << 1) | GBREG->getPixel(w + 4, h - 1)) & 0x7f; |
- line3 = ((line3 << 1) | bVal) & 0x0f; |
- } |
- } |
- } |
- return GBREG; |
-} |
-CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template0_opt2( |
- CJBig2_ArithDecoder* pArithDecoder, |
- JBig2ArithCtx* gbContext) { |
- FX_BOOL LTP, SLTP, bVal; |
- FX_DWORD CONTEXT; |
- CJBig2_Image* GBREG; |
- FX_DWORD line1, line2; |
- uint8_t *pLine, cVal; |
- intptr_t nStride, nStride2; |
- int32_t nBits, k; |
- LTP = 0; |
- JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
- if (GBREG->m_pData == NULL) { |
- delete GBREG; |
- m_pModule->JBig2_Error( |
- "Generic region decoding procedure: Create Image Failed with width = " |
- "%d, height = %d\n", |
- GBW, GBH); |
- return NULL; |
- } |
- pLine = GBREG->m_pData; |
- nStride = GBREG->m_nStride; |
- nStride2 = nStride << 1; |
- for (FX_DWORD h = 0; h < GBH; h++) { |
- if (TPGDON) { |
- SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); |
- LTP = LTP ^ SLTP; |
- } |
- if (LTP == 1) { |
- GBREG->copyLine(h, h - 1); |
- } else { |
- line1 = (h > 1) ? pLine[-nStride2] << 6 : 0; |
- line2 = (h > 0) ? pLine[-nStride] : 0; |
- CONTEXT = (line1 & 0xf800) | (line2 & 0x07f0); |
- for (FX_DWORD w = 0; w < GBW; w += 8) { |
- if (w + 8 < GBW) { |
- nBits = 8; |
- if (h > 1) { |
- line1 = (line1 << 8) | (pLine[-nStride2 + (w >> 3) + 1] << 6); |
- } |
- if (h > 0) { |
- line2 = (line2 << 8) | (pLine[-nStride + (w >> 3) + 1]); |
- } |
- } else { |
- nBits = GBW - w; |
- if (h > 1) { |
- line1 <<= 8; |
- } |
- if (h > 0) { |
- line2 <<= 8; |
- } |
- } |
- cVal = 0; |
- for (k = 0; k < nBits; k++) { |
- if (USESKIP && SKIP->getPixel(w, h)) { |
- bVal = 0; |
- } else { |
- bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); |
- } |
- cVal |= bVal << (7 - k); |
- CONTEXT = ((CONTEXT & 0x7bf7) << 1) | bVal | |
- ((line1 >> (7 - k)) & 0x0800) | |
- ((line2 >> (7 - k)) & 0x0010); |
- } |
- pLine[w >> 3] = cVal; |
- } |
- } |
- pLine += nStride; |
- } |
- return GBREG; |
-} |
CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template0_opt3( |
CJBig2_ArithDecoder* pArithDecoder, |
JBig2ArithCtx* gbContext) { |
@@ -326,123 +209,6 @@ CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template0_unopt( |
} |
return GBREG; |
} |
-CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template1_opt( |
- CJBig2_ArithDecoder* pArithDecoder, |
- JBig2ArithCtx* gbContext) { |
- FX_BOOL LTP, SLTP, bVal; |
- FX_DWORD CONTEXT; |
- CJBig2_Image* GBREG; |
- FX_DWORD line1, line2, line3; |
- LTP = 0; |
- JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
- GBREG->fill(0); |
- for (FX_DWORD h = 0; h < GBH; h++) { |
- if (TPGDON) { |
- SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); |
- LTP = LTP ^ SLTP; |
- } |
- if (LTP == 1) { |
- GBREG->copyLine(h, h - 1); |
- } else { |
- line1 = GBREG->getPixel(2, h - 2); |
- line1 |= GBREG->getPixel(1, h - 2) << 1; |
- line1 |= GBREG->getPixel(0, h - 2) << 2; |
- line2 = GBREG->getPixel(3, h - 1); |
- line2 |= GBREG->getPixel(2, h - 1) << 1; |
- line2 |= GBREG->getPixel(1, h - 1) << 2; |
- line2 |= GBREG->getPixel(0, h - 1) << 3; |
- line3 = 0; |
- for (FX_DWORD w = 0; w < GBW; w++) { |
- if (USESKIP && SKIP->getPixel(w, h)) { |
- bVal = 0; |
- } else { |
- CONTEXT = line3; |
- CONTEXT |= line2 << 3; |
- CONTEXT |= line1 << 9; |
- bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); |
- } |
- if (bVal) { |
- GBREG->setPixel(w, h, bVal); |
- } |
- line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 2)) & 0x0f; |
- line2 = ((line2 << 1) | GBREG->getPixel(w + 4, h - 1)) & 0x3f; |
- line3 = ((line3 << 1) | bVal) & 0x07; |
- } |
- } |
- } |
- return GBREG; |
-} |
-CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template1_opt2( |
- CJBig2_ArithDecoder* pArithDecoder, |
- JBig2ArithCtx* gbContext) { |
- FX_BOOL LTP, SLTP, bVal; |
- FX_DWORD CONTEXT; |
- CJBig2_Image* GBREG; |
- FX_DWORD line1, line2; |
- uint8_t *pLine, cVal; |
- intptr_t nStride, nStride2; |
- int32_t nBits, k; |
- LTP = 0; |
- JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
- if (GBREG->m_pData == NULL) { |
- delete GBREG; |
- m_pModule->JBig2_Error( |
- "Generic region decoding procedure: Create Image Failed with width = " |
- "%d, height = %d\n", |
- GBW, GBH); |
- return NULL; |
- } |
- pLine = GBREG->m_pData; |
- nStride = GBREG->m_nStride; |
- nStride2 = nStride << 1; |
- for (FX_DWORD h = 0; h < GBH; h++) { |
- if (TPGDON) { |
- SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); |
- LTP = LTP ^ SLTP; |
- } |
- if (LTP == 1) { |
- GBREG->copyLine(h, h - 1); |
- } else { |
- line1 = (h > 1) ? pLine[-nStride2] << 4 : 0; |
- line2 = (h > 0) ? pLine[-nStride] : 0; |
- CONTEXT = (line1 & 0x1e00) | ((line2 >> 1) & 0x01f8); |
- for (FX_DWORD w = 0; w < GBW; w += 8) { |
- if (w + 8 < GBW) { |
- nBits = 8; |
- if (h > 1) { |
- line1 = (line1 << 8) | (pLine[-nStride2 + (w >> 3) + 1] << 4); |
- } |
- if (h > 0) { |
- line2 = (line2 << 8) | (pLine[-nStride + (w >> 3) + 1]); |
- } |
- } else { |
- nBits = GBW - w; |
- if (h > 1) { |
- line1 <<= 8; |
- } |
- if (h > 0) { |
- line2 <<= 8; |
- } |
- } |
- cVal = 0; |
- for (k = 0; k < nBits; k++) { |
- if (USESKIP && SKIP->getPixel(w, h)) { |
- bVal = 0; |
- } else { |
- bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); |
- } |
- cVal |= bVal << (7 - k); |
- CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | |
- ((line1 >> (7 - k)) & 0x0200) | |
- ((line2 >> (8 - k)) & 0x0008); |
- } |
- pLine[w >> 3] = cVal; |
- } |
- } |
- pLine += nStride; |
- } |
- return GBREG; |
-} |
CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template1_opt3( |
CJBig2_ArithDecoder* pArithDecoder, |
JBig2ArithCtx* gbContext) { |
@@ -583,121 +349,6 @@ CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template1_unopt( |
} |
return GBREG; |
} |
-CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template2_opt( |
- CJBig2_ArithDecoder* pArithDecoder, |
- JBig2ArithCtx* gbContext) { |
- FX_BOOL LTP, SLTP, bVal; |
- FX_DWORD CONTEXT; |
- CJBig2_Image* GBREG; |
- FX_DWORD line1, line2, line3; |
- LTP = 0; |
- JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
- GBREG->fill(0); |
- for (FX_DWORD h = 0; h < GBH; h++) { |
- if (TPGDON) { |
- SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); |
- LTP = LTP ^ SLTP; |
- } |
- if (LTP == 1) { |
- GBREG->copyLine(h, h - 1); |
- } else { |
- line1 = GBREG->getPixel(1, h - 2); |
- line1 |= GBREG->getPixel(0, h - 2) << 1; |
- line2 = GBREG->getPixel(2, h - 1); |
- line2 |= GBREG->getPixel(1, h - 1) << 1; |
- line2 |= GBREG->getPixel(0, h - 1) << 2; |
- line3 = 0; |
- for (FX_DWORD w = 0; w < GBW; w++) { |
- if (USESKIP && SKIP->getPixel(w, h)) { |
- bVal = 0; |
- } else { |
- CONTEXT = line3; |
- CONTEXT |= line2 << 2; |
- CONTEXT |= line1 << 7; |
- bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); |
- } |
- if (bVal) { |
- GBREG->setPixel(w, h, bVal); |
- } |
- line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 2)) & 0x07; |
- line2 = ((line2 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x1f; |
- line3 = ((line3 << 1) | bVal) & 0x03; |
- } |
- } |
- } |
- return GBREG; |
-} |
-CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template2_opt2( |
- CJBig2_ArithDecoder* pArithDecoder, |
- JBig2ArithCtx* gbContext) { |
- FX_BOOL LTP, SLTP, bVal; |
- FX_DWORD CONTEXT; |
- CJBig2_Image* GBREG; |
- FX_DWORD line1, line2; |
- uint8_t *pLine, cVal; |
- intptr_t nStride, nStride2; |
- int32_t nBits, k; |
- LTP = 0; |
- JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
- if (GBREG->m_pData == NULL) { |
- delete GBREG; |
- m_pModule->JBig2_Error( |
- "Generic region decoding procedure: Create Image Failed with width = " |
- "%d, height = %d\n", |
- GBW, GBH); |
- return NULL; |
- } |
- pLine = GBREG->m_pData; |
- nStride = GBREG->m_nStride; |
- nStride2 = nStride << 1; |
- for (FX_DWORD h = 0; h < GBH; h++) { |
- if (TPGDON) { |
- SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); |
- LTP = LTP ^ SLTP; |
- } |
- if (LTP == 1) { |
- GBREG->copyLine(h, h - 1); |
- } else { |
- line1 = (h > 1) ? pLine[-nStride2] << 1 : 0; |
- line2 = (h > 0) ? pLine[-nStride] : 0; |
- CONTEXT = (line1 & 0x0380) | ((line2 >> 3) & 0x007c); |
- for (FX_DWORD w = 0; w < GBW; w += 8) { |
- if (w + 8 < GBW) { |
- nBits = 8; |
- if (h > 1) { |
- line1 = (line1 << 8) | (pLine[-nStride2 + (w >> 3) + 1] << 1); |
- } |
- if (h > 0) { |
- line2 = (line2 << 8) | (pLine[-nStride + (w >> 3) + 1]); |
- } |
- } else { |
- nBits = GBW - w; |
- if (h > 1) { |
- line1 <<= 8; |
- } |
- if (h > 0) { |
- line2 <<= 8; |
- } |
- } |
- cVal = 0; |
- for (k = 0; k < nBits; k++) { |
- if (USESKIP && SKIP->getPixel(w, h)) { |
- bVal = 0; |
- } else { |
- bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); |
- } |
- cVal |= bVal << (7 - k); |
- CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | |
- ((line1 >> (7 - k)) & 0x0080) | |
- ((line2 >> (10 - k)) & 0x0004); |
- } |
- pLine[w >> 3] = cVal; |
- } |
- } |
- pLine += nStride; |
- } |
- return GBREG; |
-} |
CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template2_opt3( |
CJBig2_ArithDecoder* pArithDecoder, |
JBig2ArithCtx* gbContext) { |
@@ -836,108 +487,6 @@ CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template2_unopt( |
} |
return GBREG; |
} |
-CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template3_opt( |
- CJBig2_ArithDecoder* pArithDecoder, |
- JBig2ArithCtx* gbContext) { |
- FX_BOOL LTP, SLTP, bVal; |
- FX_DWORD CONTEXT; |
- CJBig2_Image* GBREG; |
- FX_DWORD line1, line2; |
- LTP = 0; |
- JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
- GBREG->fill(0); |
- for (FX_DWORD h = 0; h < GBH; h++) { |
- if (TPGDON) { |
- SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); |
- LTP = LTP ^ SLTP; |
- } |
- if (LTP == 1) { |
- GBREG->copyLine(h, h - 1); |
- } else { |
- line1 = GBREG->getPixel(2, h - 1); |
- line1 |= GBREG->getPixel(1, h - 1) << 1; |
- line1 |= GBREG->getPixel(0, h - 1) << 2; |
- line2 = 0; |
- for (FX_DWORD w = 0; w < GBW; w++) { |
- if (USESKIP && SKIP->getPixel(w, h)) { |
- bVal = 0; |
- } else { |
- CONTEXT = line2; |
- CONTEXT |= line1 << 4; |
- bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); |
- } |
- if (bVal) { |
- GBREG->setPixel(w, h, bVal); |
- } |
- line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x3f; |
- line2 = ((line2 << 1) | bVal) & 0x0f; |
- } |
- } |
- } |
- return GBREG; |
-} |
-CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template3_opt2( |
- CJBig2_ArithDecoder* pArithDecoder, |
- JBig2ArithCtx* gbContext) { |
- FX_BOOL LTP, SLTP, bVal; |
- FX_DWORD CONTEXT; |
- CJBig2_Image* GBREG; |
- FX_DWORD line1; |
- uint8_t *pLine, cVal; |
- intptr_t nStride; |
- int32_t nBits, k; |
- LTP = 0; |
- JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); |
- if (GBREG->m_pData == NULL) { |
- delete GBREG; |
- m_pModule->JBig2_Error( |
- "Generic region decoding procedure: Create Image Failed with width = " |
- "%d, height = %d\n", |
- GBW, GBH); |
- return NULL; |
- } |
- pLine = GBREG->m_pData; |
- nStride = GBREG->m_nStride; |
- for (FX_DWORD h = 0; h < GBH; h++) { |
- if (TPGDON) { |
- SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); |
- LTP = LTP ^ SLTP; |
- } |
- if (LTP == 1) { |
- GBREG->copyLine(h, h - 1); |
- } else { |
- line1 = (h > 0) ? pLine[-nStride] : 0; |
- CONTEXT = (line1 >> 1) & 0x03f0; |
- for (FX_DWORD w = 0; w < GBW; w += 8) { |
- if (w + 8 < GBW) { |
- nBits = 8; |
- if (h > 0) { |
- line1 = (line1 << 8) | (pLine[-nStride + (w >> 3) + 1]); |
- } |
- } else { |
- nBits = GBW - w; |
- if (h > 0) { |
- line1 <<= 8; |
- } |
- } |
- cVal = 0; |
- for (k = 0; k < nBits; k++) { |
- if (USESKIP && SKIP->getPixel(w, h)) { |
- bVal = 0; |
- } else { |
- bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); |
- } |
- cVal |= bVal << (7 - k); |
- CONTEXT = |
- ((CONTEXT & 0x01f7) << 1) | bVal | ((line1 >> (8 - k)) & 0x0010); |
- } |
- pLine[w >> 3] = cVal; |
- } |
- } |
- pLine += nStride; |
- } |
- return GBREG; |
-} |
CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template3_opt3( |
CJBig2_ArithDecoder* pArithDecoder, |
JBig2ArithCtx* gbContext) { |