Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: core/src/fxcodec/jbig2/JBig2_GeneralDecoder.cpp

Issue 1319713003: Make a bunch of JBig2 classes independent of CJBig2_Object. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 1120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1131 FX_DWORD WI, HI; 1131 FX_DWORD WI, HI;
1132 int32_t IDS; 1132 int32_t IDS;
1133 FX_BOOL RI; 1133 FX_BOOL RI;
1134 int32_t RDWI, RDHI, RDXI, RDYI; 1134 int32_t RDWI, RDHI, RDXI, RDYI;
1135 CJBig2_Image* IBOI; 1135 CJBig2_Image* IBOI;
1136 FX_DWORD WOI, HOI; 1136 FX_DWORD WOI, HOI;
1137 CJBig2_Image* SBREG; 1137 CJBig2_Image* SBREG;
1138 FX_BOOL bFirst; 1138 FX_BOOL bFirst;
1139 FX_DWORD nTmp; 1139 FX_DWORD nTmp;
1140 int32_t nVal, nBits; 1140 int32_t nVal, nBits;
1141 CJBig2_HuffmanDecoder* pHuffmanDecoder;
1142 CJBig2_GRRDProc* pGRRD; 1141 CJBig2_GRRDProc* pGRRD;
1143 CJBig2_ArithDecoder* pArithDecoder; 1142 CJBig2_ArithDecoder* pArithDecoder;
1144 JBIG2_ALLOC(pHuffmanDecoder, CJBig2_HuffmanDecoder(pStream)); 1143 CJBig2_HuffmanDecoder* pHuffmanDecoder = new CJBig2_HuffmanDecoder(pStream);
1145 JBIG2_ALLOC(SBREG, CJBig2_Image(SBW, SBH)); 1144 JBIG2_ALLOC(SBREG, CJBig2_Image(SBW, SBH));
Tom Sepez 2015/09/03 20:24:58 nit: Did you want to fix this one too?
Lei Zhang 2015/09/03 22:52:12 CJBig2_Image is still a CJBig2_Object subclass for
1146 SBREG->fill(SBDEFPIXEL); 1145 SBREG->fill(SBDEFPIXEL);
1147 if (pHuffmanDecoder->decodeAValue(SBHUFFDT, &STRIPT) != 0) { 1146 if (pHuffmanDecoder->decodeAValue(SBHUFFDT, &STRIPT) != 0) {
1148 m_pModule->JBig2_Error( 1147 m_pModule->JBig2_Error(
1149 "text region decoding procedure (huffman): too short."); 1148 "text region decoding procedure (huffman): too short.");
1150 goto failed; 1149 goto failed;
1151 } 1150 }
1152 STRIPT *= SBSTRIPS; 1151 STRIPT *= SBSTRIPS;
1153 STRIPT = -STRIPT; 1152 STRIPT = -STRIPT;
1154 FIRSTS = 0; 1153 FIRSTS = 0;
1155 NINSTANCES = 0; 1154 NINSTANCES = 0;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 pGRRD->GRH = HOI + RDHI; 1258 pGRRD->GRH = HOI + RDHI;
1260 pGRRD->GRTEMPLATE = SBRTEMPLATE; 1259 pGRRD->GRTEMPLATE = SBRTEMPLATE;
1261 pGRRD->GRREFERENCE = IBOI; 1260 pGRRD->GRREFERENCE = IBOI;
1262 pGRRD->GRREFERENCEDX = (RDWI >> 2) + RDXI; 1261 pGRRD->GRREFERENCEDX = (RDWI >> 2) + RDXI;
1263 pGRRD->GRREFERENCEDY = (RDHI >> 2) + RDYI; 1262 pGRRD->GRREFERENCEDY = (RDHI >> 2) + RDYI;
1264 pGRRD->TPGRON = 0; 1263 pGRRD->TPGRON = 0;
1265 pGRRD->GRAT[0] = SBRAT[0]; 1264 pGRRD->GRAT[0] = SBRAT[0];
1266 pGRRD->GRAT[1] = SBRAT[1]; 1265 pGRRD->GRAT[1] = SBRAT[1];
1267 pGRRD->GRAT[2] = SBRAT[2]; 1266 pGRRD->GRAT[2] = SBRAT[2];
1268 pGRRD->GRAT[3] = SBRAT[3]; 1267 pGRRD->GRAT[3] = SBRAT[3];
1269 JBIG2_ALLOC(pArithDecoder, CJBig2_ArithDecoder(pStream)); 1268 pArithDecoder = new CJBig2_ArithDecoder(pStream);
1270 IBI = pGRRD->decode(pArithDecoder, grContext); 1269 IBI = pGRRD->decode(pArithDecoder, grContext);
1271 if (IBI == NULL) { 1270 if (IBI == NULL) {
1272 delete pGRRD; 1271 delete pGRRD;
1273 delete pArithDecoder; 1272 delete pArithDecoder;
1274 goto failed; 1273 goto failed;
1275 } 1274 }
1276 delete pArithDecoder; 1275 delete pArithDecoder;
1277 pStream->alignByte(); 1276 pStream->alignByte();
1278 pStream->offset(2); 1277 pStream->offset(2);
1279 if ((FX_DWORD)nVal != (pStream->getOffset() - nTmp)) { 1278 if ((FX_DWORD)nVal != (pStream->getOffset() - nTmp)) {
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1381 IADS = pIDS->IADS; 1380 IADS = pIDS->IADS;
1382 IAIT = pIDS->IAIT; 1381 IAIT = pIDS->IAIT;
1383 IARI = pIDS->IARI; 1382 IARI = pIDS->IARI;
1384 IARDW = pIDS->IARDW; 1383 IARDW = pIDS->IARDW;
1385 IARDH = pIDS->IARDH; 1384 IARDH = pIDS->IARDH;
1386 IARDX = pIDS->IARDX; 1385 IARDX = pIDS->IARDX;
1387 IARDY = pIDS->IARDY; 1386 IARDY = pIDS->IARDY;
1388 IAID = pIDS->IAID; 1387 IAID = pIDS->IAID;
1389 bRetained = TRUE; 1388 bRetained = TRUE;
1390 } else { 1389 } else {
1391 JBIG2_ALLOC(IADT, CJBig2_ArithIntDecoder()); 1390 IADT = new CJBig2_ArithIntDecoder();
1392 JBIG2_ALLOC(IAFS, CJBig2_ArithIntDecoder()); 1391 IAFS = new CJBig2_ArithIntDecoder();
1393 JBIG2_ALLOC(IADS, CJBig2_ArithIntDecoder()); 1392 IADS = new CJBig2_ArithIntDecoder();
1394 JBIG2_ALLOC(IAIT, CJBig2_ArithIntDecoder()); 1393 IAIT = new CJBig2_ArithIntDecoder();
1395 JBIG2_ALLOC(IARI, CJBig2_ArithIntDecoder()); 1394 IARI = new CJBig2_ArithIntDecoder();
1396 JBIG2_ALLOC(IARDW, CJBig2_ArithIntDecoder()); 1395 IARDW = new CJBig2_ArithIntDecoder();
1397 JBIG2_ALLOC(IARDH, CJBig2_ArithIntDecoder()); 1396 IARDH = new CJBig2_ArithIntDecoder();
1398 JBIG2_ALLOC(IARDX, CJBig2_ArithIntDecoder()); 1397 IARDX = new CJBig2_ArithIntDecoder();
1399 JBIG2_ALLOC(IARDY, CJBig2_ArithIntDecoder()); 1398 IARDY = new CJBig2_ArithIntDecoder();
1400 JBIG2_ALLOC(IAID, CJBig2_ArithIaidDecoder(SBSYMCODELEN)); 1399 IAID = new CJBig2_ArithIaidDecoder(SBSYMCODELEN);
1401 bRetained = FALSE; 1400 bRetained = FALSE;
1402 } 1401 }
1403 JBIG2_ALLOC(SBREG, CJBig2_Image(SBW, SBH)); 1402 JBIG2_ALLOC(SBREG, CJBig2_Image(SBW, SBH));
1404 SBREG->fill(SBDEFPIXEL); 1403 SBREG->fill(SBDEFPIXEL);
1405 if (IADT->decode(pArithDecoder, &STRIPT) == -1) { 1404 if (IADT->decode(pArithDecoder, &STRIPT) == -1) {
1406 m_pModule->JBig2_Error( 1405 m_pModule->JBig2_Error(
1407 "text region decoding procedure (arith): too short."); 1406 "text region decoding procedure (arith): too short.");
1408 goto failed; 1407 goto failed;
1409 } 1408 }
1410 STRIPT *= SBSTRIPS; 1409 STRIPT *= SBSTRIPS;
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
1626 int32_t RDXI, RDYI; 1625 int32_t RDXI, RDYI;
1627 CJBig2_Image** SBSYMS; 1626 CJBig2_Image** SBSYMS;
1628 CJBig2_HuffmanTable *SBHUFFFS, *SBHUFFDS, *SBHUFFDT, *SBHUFFRDW, *SBHUFFRDH, 1627 CJBig2_HuffmanTable *SBHUFFFS, *SBHUFFDS, *SBHUFFDT, *SBHUFFRDW, *SBHUFFRDH,
1629 *SBHUFFRDX, *SBHUFFRDY, *SBHUFFRSIZE; 1628 *SBHUFFRDX, *SBHUFFRDY, *SBHUFFRSIZE;
1630 CJBig2_GRRDProc* pGRRD; 1629 CJBig2_GRRDProc* pGRRD;
1631 CJBig2_GRDProc* pGRD; 1630 CJBig2_GRDProc* pGRD;
1632 CJBig2_ArithIntDecoder *IADH, *IADW, *IAAI, *IARDX, *IARDY, *IAEX, *IADT, 1631 CJBig2_ArithIntDecoder *IADH, *IADW, *IAAI, *IARDX, *IARDY, *IAEX, *IADT,
1633 *IAFS, *IADS, *IAIT, *IARI, *IARDW, *IARDH; 1632 *IAFS, *IADS, *IAIT, *IARI, *IARDW, *IARDH;
1634 CJBig2_ArithIaidDecoder* IAID; 1633 CJBig2_ArithIaidDecoder* IAID;
1635 CJBig2_SymbolDict* pDict; 1634 CJBig2_SymbolDict* pDict;
1636 JBIG2_ALLOC(IADH, CJBig2_ArithIntDecoder()); 1635 IADH = new CJBig2_ArithIntDecoder();
1637 JBIG2_ALLOC(IADW, CJBig2_ArithIntDecoder()); 1636 IADW = new CJBig2_ArithIntDecoder();
1638 JBIG2_ALLOC(IAAI, CJBig2_ArithIntDecoder()); 1637 IAAI = new CJBig2_ArithIntDecoder();
1639 JBIG2_ALLOC(IARDX, CJBig2_ArithIntDecoder()); 1638 IARDX = new CJBig2_ArithIntDecoder();
1640 JBIG2_ALLOC(IARDY, CJBig2_ArithIntDecoder()); 1639 IARDY = new CJBig2_ArithIntDecoder();
1641 JBIG2_ALLOC(IAEX, CJBig2_ArithIntDecoder()); 1640 IAEX = new CJBig2_ArithIntDecoder();
1642 JBIG2_ALLOC(IADT, CJBig2_ArithIntDecoder()); 1641 IADT = new CJBig2_ArithIntDecoder();
1643 JBIG2_ALLOC(IAFS, CJBig2_ArithIntDecoder()); 1642 IAFS = new CJBig2_ArithIntDecoder();
1644 JBIG2_ALLOC(IADS, CJBig2_ArithIntDecoder()); 1643 IADS = new CJBig2_ArithIntDecoder();
1645 JBIG2_ALLOC(IAIT, CJBig2_ArithIntDecoder()); 1644 IAIT = new CJBig2_ArithIntDecoder();
1646 JBIG2_ALLOC(IARI, CJBig2_ArithIntDecoder()); 1645 IARI = new CJBig2_ArithIntDecoder();
1647 JBIG2_ALLOC(IARDW, CJBig2_ArithIntDecoder()); 1646 IARDW = new CJBig2_ArithIntDecoder();
1648 JBIG2_ALLOC(IARDH, CJBig2_ArithIntDecoder()); 1647 IARDH = new CJBig2_ArithIntDecoder();
1649 nTmp = 0; 1648 nTmp = 0;
1650 while ((FX_DWORD)(1 << nTmp) < (SDNUMINSYMS + SDNUMNEWSYMS)) { 1649 while ((FX_DWORD)(1 << nTmp) < (SDNUMINSYMS + SDNUMNEWSYMS)) {
1651 nTmp++; 1650 nTmp++;
1652 } 1651 }
1653 JBIG2_ALLOC(IAID, CJBig2_ArithIaidDecoder((uint8_t)nTmp)); 1652 IAID = new CJBig2_ArithIaidDecoder((uint8_t)nTmp);
1654 SDNEWSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS, 1653 SDNEWSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS,
1655 sizeof(CJBig2_Image*)); 1654 sizeof(CJBig2_Image*));
1656 FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*)); 1655 FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*));
1657 HCHEIGHT = 0; 1656 HCHEIGHT = 0;
1658 NSYMSDECODED = 0; 1657 NSYMSDECODED = 0;
1659 while (NSYMSDECODED < SDNUMNEWSYMS) { 1658 while (NSYMSDECODED < SDNUMNEWSYMS) {
1660 BS = NULL; 1659 BS = NULL;
1661 if (IADH->decode(pArithDecoder, &HCDH) == -1) { 1660 if (IADH->decode(pArithDecoder, &HCDH) == -1) {
1662 m_pModule->JBig2_Error( 1661 m_pModule->JBig2_Error(
1663 "symbol dictionary decoding procedure (arith): too short."); 1662 "symbol dictionary decoding procedure (arith): too short.");
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1750 SBNUMSYMS, sizeof(CJBig2_Image*)); 1749 SBNUMSYMS, sizeof(CJBig2_Image*));
1751 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); 1750 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*));
1752 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, 1751 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS,
1753 NSYMSDECODED * sizeof(CJBig2_Image*)); 1752 NSYMSDECODED * sizeof(CJBig2_Image*));
1754 pDecoder->SBSYMS = SBSYMS; 1753 pDecoder->SBSYMS = SBSYMS;
1755 pDecoder->SBDEFPIXEL = 0; 1754 pDecoder->SBDEFPIXEL = 0;
1756 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR; 1755 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR;
1757 pDecoder->TRANSPOSED = 0; 1756 pDecoder->TRANSPOSED = 0;
1758 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT; 1757 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT;
1759 pDecoder->SBDSOFFSET = 0; 1758 pDecoder->SBDSOFFSET = 0;
1760 JBIG2_ALLOC(SBHUFFFS, CJBig2_HuffmanTable(HuffmanTable_B6, 1759 SBHUFFFS = new CJBig2_HuffmanTable(
1761 sizeof(HuffmanTable_B6) / 1760 HuffmanTable_B6, sizeof(HuffmanTable_B6) / sizeof(JBig2TableLine),
Tom Sepez 2015/09/03 20:24:58 nit: FX_ArraySize() usage?
Lei Zhang 2015/09/03 22:52:12 Done.
1762 sizeof(JBig2TableLine), 1761 HuffmanTable_HTOOB_B6);
1763 HuffmanTable_HTOOB_B6)); 1762 SBHUFFDS = new CJBig2_HuffmanTable(
1764 JBIG2_ALLOC(SBHUFFDS, CJBig2_HuffmanTable(HuffmanTable_B8, 1763 HuffmanTable_B8, sizeof(HuffmanTable_B8) / sizeof(JBig2TableLine),
1765 sizeof(HuffmanTable_B8) / 1764 HuffmanTable_HTOOB_B8);
1766 sizeof(JBig2TableLine), 1765 SBHUFFDT = new CJBig2_HuffmanTable(
1767 HuffmanTable_HTOOB_B8)); 1766 HuffmanTable_B11,
1768 JBIG2_ALLOC(SBHUFFDT, CJBig2_HuffmanTable(HuffmanTable_B11, 1767 sizeof(HuffmanTable_B11) / sizeof(JBig2TableLine),
1769 sizeof(HuffmanTable_B11) / 1768 HuffmanTable_HTOOB_B11);
1770 sizeof(JBig2TableLine), 1769 SBHUFFRDW = new CJBig2_HuffmanTable(
1771 HuffmanTable_HTOOB_B11)); 1770 HuffmanTable_B15,
1772 JBIG2_ALLOC(SBHUFFRDW, CJBig2_HuffmanTable(HuffmanTable_B15, 1771 sizeof(HuffmanTable_B15) / sizeof(JBig2TableLine),
1773 sizeof(HuffmanTable_B15) / 1772 HuffmanTable_HTOOB_B15);
1774 sizeof(JBig2TableLine), 1773 SBHUFFRDH = new CJBig2_HuffmanTable(
1775 HuffmanTable_HTOOB_B15)); 1774 HuffmanTable_B15,
1776 JBIG2_ALLOC(SBHUFFRDH, CJBig2_HuffmanTable(HuffmanTable_B15, 1775 sizeof(HuffmanTable_B15) / sizeof(JBig2TableLine),
1777 sizeof(HuffmanTable_B15) / 1776 HuffmanTable_HTOOB_B15);
1778 sizeof(JBig2TableLine), 1777 SBHUFFRDX = new CJBig2_HuffmanTable(
1779 HuffmanTable_HTOOB_B15)); 1778 HuffmanTable_B15,
1780 JBIG2_ALLOC(SBHUFFRDX, CJBig2_HuffmanTable(HuffmanTable_B15, 1779 sizeof(HuffmanTable_B15) / sizeof(JBig2TableLine),
1781 sizeof(HuffmanTable_B15) / 1780 HuffmanTable_HTOOB_B15);
1782 sizeof(JBig2TableLine), 1781 SBHUFFRDY = new CJBig2_HuffmanTable(
1783 HuffmanTable_HTOOB_B15)); 1782 HuffmanTable_B15,
1784 JBIG2_ALLOC(SBHUFFRDY, CJBig2_HuffmanTable(HuffmanTable_B15, 1783 sizeof(HuffmanTable_B15) / sizeof(JBig2TableLine),
1785 sizeof(HuffmanTable_B15) / 1784 HuffmanTable_HTOOB_B15);
1786 sizeof(JBig2TableLine), 1785 SBHUFFRSIZE = new CJBig2_HuffmanTable(
1787 HuffmanTable_HTOOB_B15)); 1786 HuffmanTable_B1, sizeof(HuffmanTable_B1) / sizeof(JBig2TableLine),
1788 JBIG2_ALLOC(SBHUFFRSIZE, 1787 HuffmanTable_HTOOB_B1);
1789 CJBig2_HuffmanTable(
1790 HuffmanTable_B1,
1791 sizeof(HuffmanTable_B1) / sizeof(JBig2TableLine),
1792 HuffmanTable_HTOOB_B1));
1793 pDecoder->SBHUFFFS = SBHUFFFS; 1788 pDecoder->SBHUFFFS = SBHUFFFS;
1794 pDecoder->SBHUFFDS = SBHUFFDS; 1789 pDecoder->SBHUFFDS = SBHUFFDS;
1795 pDecoder->SBHUFFDT = SBHUFFDT; 1790 pDecoder->SBHUFFDT = SBHUFFDT;
1796 pDecoder->SBHUFFRDW = SBHUFFRDW; 1791 pDecoder->SBHUFFRDW = SBHUFFRDW;
1797 pDecoder->SBHUFFRDH = SBHUFFRDH; 1792 pDecoder->SBHUFFRDH = SBHUFFRDH;
1798 pDecoder->SBHUFFRDX = SBHUFFRDX; 1793 pDecoder->SBHUFFRDX = SBHUFFRDX;
1799 pDecoder->SBHUFFRDY = SBHUFFRDY; 1794 pDecoder->SBHUFFRDY = SBHUFFRDY;
1800 pDecoder->SBHUFFRSIZE = SBHUFFRSIZE; 1795 pDecoder->SBHUFFRSIZE = SBHUFFRSIZE;
1801 pDecoder->SBRTEMPLATE = SDRTEMPLATE; 1796 pDecoder->SBRTEMPLATE = SDRTEMPLATE;
1802 pDecoder->SBRAT[0] = SDRAT[0]; 1797 pDecoder->SBRAT[0] = SDRAT[0];
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
2007 FX_DWORD BMSIZE; 2002 FX_DWORD BMSIZE;
2008 FX_DWORD stride; 2003 FX_DWORD stride;
2009 CJBig2_Image** SBSYMS; 2004 CJBig2_Image** SBSYMS;
2010 CJBig2_HuffmanTable *SBHUFFFS, *SBHUFFDS, *SBHUFFDT, *SBHUFFRDW, *SBHUFFRDH, 2005 CJBig2_HuffmanTable *SBHUFFFS, *SBHUFFDS, *SBHUFFDT, *SBHUFFRDW, *SBHUFFRDH,
2011 *SBHUFFRDX, *SBHUFFRDY, *SBHUFFRSIZE, *pTable; 2006 *SBHUFFRDX, *SBHUFFRDY, *SBHUFFRSIZE, *pTable;
2012 CJBig2_HuffmanDecoder* pHuffmanDecoder; 2007 CJBig2_HuffmanDecoder* pHuffmanDecoder;
2013 CJBig2_GRRDProc* pGRRD; 2008 CJBig2_GRRDProc* pGRRD;
2014 CJBig2_ArithDecoder* pArithDecoder; 2009 CJBig2_ArithDecoder* pArithDecoder;
2015 CJBig2_GRDProc* pGRD; 2010 CJBig2_GRDProc* pGRD;
2016 CJBig2_SymbolDict* pDict; 2011 CJBig2_SymbolDict* pDict;
2017 JBIG2_ALLOC(pHuffmanDecoder, CJBig2_HuffmanDecoder(pStream)); 2012 pHuffmanDecoder = new CJBig2_HuffmanDecoder(pStream);
2018 SDNEWSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS, 2013 SDNEWSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS,
2019 sizeof(CJBig2_Image*)); 2014 sizeof(CJBig2_Image*));
2020 FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*)); 2015 FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*));
2021 SDNEWSYMWIDTHS = NULL; 2016 SDNEWSYMWIDTHS = NULL;
2022 BHC = NULL; 2017 BHC = NULL;
2023 if (SDREFAGG == 0) { 2018 if (SDREFAGG == 0) {
2024 SDNEWSYMWIDTHS = 2019 SDNEWSYMWIDTHS =
2025 (FX_DWORD*)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS, sizeof(FX_DWORD)); 2020 (FX_DWORD*)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS, sizeof(FX_DWORD));
2026 FXSYS_memset(SDNEWSYMWIDTHS, 0, SDNUMNEWSYMS * sizeof(FX_DWORD)); 2021 FXSYS_memset(SDNEWSYMWIDTHS, 0, SDNUMNEWSYMS * sizeof(FX_DWORD));
2027 } 2022 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
2107 SBNUMSYMS, sizeof(CJBig2_Image*)); 2102 SBNUMSYMS, sizeof(CJBig2_Image*));
2108 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); 2103 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*));
2109 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, 2104 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS,
2110 NSYMSDECODED * sizeof(CJBig2_Image*)); 2105 NSYMSDECODED * sizeof(CJBig2_Image*));
2111 pDecoder->SBSYMS = SBSYMS; 2106 pDecoder->SBSYMS = SBSYMS;
2112 pDecoder->SBDEFPIXEL = 0; 2107 pDecoder->SBDEFPIXEL = 0;
2113 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR; 2108 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR;
2114 pDecoder->TRANSPOSED = 0; 2109 pDecoder->TRANSPOSED = 0;
2115 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT; 2110 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT;
2116 pDecoder->SBDSOFFSET = 0; 2111 pDecoder->SBDSOFFSET = 0;
2117 JBIG2_ALLOC(SBHUFFFS, CJBig2_HuffmanTable(HuffmanTable_B6, 2112 SBHUFFFS = new CJBig2_HuffmanTable(
2118 sizeof(HuffmanTable_B6) / 2113 HuffmanTable_B6, sizeof(HuffmanTable_B6) / sizeof(JBig2TableLine),
2119 sizeof(JBig2TableLine), 2114 HuffmanTable_HTOOB_B6);
2120 HuffmanTable_HTOOB_B6)); 2115 SBHUFFDS = new CJBig2_HuffmanTable(
2121 JBIG2_ALLOC(SBHUFFDS, CJBig2_HuffmanTable(HuffmanTable_B8, 2116 HuffmanTable_B8, sizeof(HuffmanTable_B8) / sizeof(JBig2TableLine),
2122 sizeof(HuffmanTable_B8) / 2117 HuffmanTable_HTOOB_B8);
2123 sizeof(JBig2TableLine), 2118 SBHUFFDT = new CJBig2_HuffmanTable(
2124 HuffmanTable_HTOOB_B8)); 2119 HuffmanTable_B11,
2125 JBIG2_ALLOC(SBHUFFDT, CJBig2_HuffmanTable(HuffmanTable_B11, 2120 sizeof(HuffmanTable_B11) / sizeof(JBig2TableLine),
2126 sizeof(HuffmanTable_B11) / 2121 HuffmanTable_HTOOB_B11);
2127 sizeof(JBig2TableLine), 2122 SBHUFFRDW = new CJBig2_HuffmanTable(
2128 HuffmanTable_HTOOB_B11)); 2123 HuffmanTable_B15,
2129 JBIG2_ALLOC(SBHUFFRDW, CJBig2_HuffmanTable(HuffmanTable_B15, 2124 sizeof(HuffmanTable_B15) / sizeof(JBig2TableLine),
2130 sizeof(HuffmanTable_B15) / 2125 HuffmanTable_HTOOB_B15);
2131 sizeof(JBig2TableLine), 2126 SBHUFFRDH = new CJBig2_HuffmanTable(
2132 HuffmanTable_HTOOB_B15)); 2127 HuffmanTable_B15,
2133 JBIG2_ALLOC(SBHUFFRDH, CJBig2_HuffmanTable(HuffmanTable_B15, 2128 sizeof(HuffmanTable_B15) / sizeof(JBig2TableLine),
2134 sizeof(HuffmanTable_B15) / 2129 HuffmanTable_HTOOB_B15);
2135 sizeof(JBig2TableLine), 2130 SBHUFFRDX = new CJBig2_HuffmanTable(
2136 HuffmanTable_HTOOB_B15)); 2131 HuffmanTable_B15,
2137 JBIG2_ALLOC(SBHUFFRDX, CJBig2_HuffmanTable(HuffmanTable_B15, 2132 sizeof(HuffmanTable_B15) / sizeof(JBig2TableLine),
2138 sizeof(HuffmanTable_B15) / 2133 HuffmanTable_HTOOB_B15);
2139 sizeof(JBig2TableLine), 2134 SBHUFFRDY = new CJBig2_HuffmanTable(
2140 HuffmanTable_HTOOB_B15)); 2135 HuffmanTable_B15,
2141 JBIG2_ALLOC(SBHUFFRDY, CJBig2_HuffmanTable(HuffmanTable_B15, 2136 sizeof(HuffmanTable_B15) / sizeof(JBig2TableLine),
2142 sizeof(HuffmanTable_B15) / 2137 HuffmanTable_HTOOB_B15);
2143 sizeof(JBig2TableLine), 2138 SBHUFFRSIZE = new CJBig2_HuffmanTable(
2144 HuffmanTable_HTOOB_B15)); 2139 HuffmanTable_B1, sizeof(HuffmanTable_B1) / sizeof(JBig2TableLine),
2145 JBIG2_ALLOC(SBHUFFRSIZE, 2140 HuffmanTable_HTOOB_B1);
2146 CJBig2_HuffmanTable(
2147 HuffmanTable_B1,
2148 sizeof(HuffmanTable_B1) / sizeof(JBig2TableLine),
2149 HuffmanTable_HTOOB_B1));
2150 pDecoder->SBHUFFFS = SBHUFFFS; 2141 pDecoder->SBHUFFFS = SBHUFFFS;
2151 pDecoder->SBHUFFDS = SBHUFFDS; 2142 pDecoder->SBHUFFDS = SBHUFFDS;
2152 pDecoder->SBHUFFDT = SBHUFFDT; 2143 pDecoder->SBHUFFDT = SBHUFFDT;
2153 pDecoder->SBHUFFRDW = SBHUFFRDW; 2144 pDecoder->SBHUFFRDW = SBHUFFRDW;
2154 pDecoder->SBHUFFRDH = SBHUFFRDH; 2145 pDecoder->SBHUFFRDH = SBHUFFRDH;
2155 pDecoder->SBHUFFRDX = SBHUFFRDX; 2146 pDecoder->SBHUFFRDX = SBHUFFRDX;
2156 pDecoder->SBHUFFRDY = SBHUFFRDY; 2147 pDecoder->SBHUFFRDY = SBHUFFRDY;
2157 pDecoder->SBHUFFRSIZE = SBHUFFRSIZE; 2148 pDecoder->SBHUFFRSIZE = SBHUFFRSIZE;
2158 pDecoder->SBRTEMPLATE = SDRTEMPLATE; 2149 pDecoder->SBRTEMPLATE = SDRTEMPLATE;
2159 pDecoder->SBRAT[0] = SDRAT[0]; 2150 pDecoder->SBRAT[0] = SDRAT[0];
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
2213 if ((nVal == SBSYMCODES[IDI].code) && 2204 if ((nVal == SBSYMCODES[IDI].code) &&
2214 (nBits == SBSYMCODES[IDI].codelen)) { 2205 (nBits == SBSYMCODES[IDI].codelen)) {
2215 break; 2206 break;
2216 } 2207 }
2217 } 2208 }
2218 if (IDI < SBNUMSYMS) { 2209 if (IDI < SBNUMSYMS) {
2219 break; 2210 break;
2220 } 2211 }
2221 } 2212 }
2222 m_pModule->JBig2_Free(SBSYMCODES); 2213 m_pModule->JBig2_Free(SBSYMCODES);
2223 JBIG2_ALLOC(SBHUFFRDX, CJBig2_HuffmanTable(HuffmanTable_B15, 2214 SBHUFFRDX = new CJBig2_HuffmanTable(
2224 sizeof(HuffmanTable_B15) / 2215 HuffmanTable_B15,
2225 sizeof(JBig2TableLine), 2216 sizeof(HuffmanTable_B15) / sizeof(JBig2TableLine),
2226 HuffmanTable_HTOOB_B15)); 2217 HuffmanTable_HTOOB_B15);
2227 JBIG2_ALLOC(SBHUFFRSIZE, 2218 SBHUFFRSIZE = new CJBig2_HuffmanTable(
2228 CJBig2_HuffmanTable( 2219 HuffmanTable_B1, sizeof(HuffmanTable_B1) / sizeof(JBig2TableLine),
2229 HuffmanTable_B1, 2220 HuffmanTable_HTOOB_B1);
2230 sizeof(HuffmanTable_B1) / sizeof(JBig2TableLine),
2231 HuffmanTable_HTOOB_B1));
2232 if ((pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDXI) != 0) || 2221 if ((pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDXI) != 0) ||
2233 (pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDYI) != 0) || 2222 (pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDYI) != 0) ||
2234 (pHuffmanDecoder->decodeAValue(SBHUFFRSIZE, &nVal) != 0)) { 2223 (pHuffmanDecoder->decodeAValue(SBHUFFRSIZE, &nVal) != 0)) {
2235 delete SBHUFFRDX; 2224 delete SBHUFFRDX;
2236 delete SBHUFFRSIZE; 2225 delete SBHUFFRSIZE;
2237 m_pModule->JBig2_Error( 2226 m_pModule->JBig2_Error(
2238 "symbol dictionary decoding procedure (huffman): too short."); 2227 "symbol dictionary decoding procedure (huffman): too short.");
2239 goto failed; 2228 goto failed;
2240 } 2229 }
2241 delete SBHUFFRDX; 2230 delete SBHUFFRDX;
(...skipping 10 matching lines...) Expand all
2252 pGRRD->GRH = HCHEIGHT; 2241 pGRRD->GRH = HCHEIGHT;
2253 pGRRD->GRTEMPLATE = SDRTEMPLATE; 2242 pGRRD->GRTEMPLATE = SDRTEMPLATE;
2254 pGRRD->GRREFERENCE = SBSYMS[IDI]; 2243 pGRRD->GRREFERENCE = SBSYMS[IDI];
2255 pGRRD->GRREFERENCEDX = RDXI; 2244 pGRRD->GRREFERENCEDX = RDXI;
2256 pGRRD->GRREFERENCEDY = RDYI; 2245 pGRRD->GRREFERENCEDY = RDYI;
2257 pGRRD->TPGRON = 0; 2246 pGRRD->TPGRON = 0;
2258 pGRRD->GRAT[0] = SDRAT[0]; 2247 pGRRD->GRAT[0] = SDRAT[0];
2259 pGRRD->GRAT[1] = SDRAT[1]; 2248 pGRRD->GRAT[1] = SDRAT[1];
2260 pGRRD->GRAT[2] = SDRAT[2]; 2249 pGRRD->GRAT[2] = SDRAT[2];
2261 pGRRD->GRAT[3] = SDRAT[3]; 2250 pGRRD->GRAT[3] = SDRAT[3];
2262 JBIG2_ALLOC(pArithDecoder, CJBig2_ArithDecoder(pStream)); 2251 pArithDecoder = new CJBig2_ArithDecoder(pStream);
2263 BS = pGRRD->decode(pArithDecoder, grContext); 2252 BS = pGRRD->decode(pArithDecoder, grContext);
2264 if (BS == NULL) { 2253 if (BS == NULL) {
2265 m_pModule->JBig2_Free(SBSYMS); 2254 m_pModule->JBig2_Free(SBSYMS);
2266 delete pGRRD; 2255 delete pGRRD;
2267 delete pArithDecoder; 2256 delete pArithDecoder;
2268 goto failed; 2257 goto failed;
2269 } 2258 }
2270 pStream->alignByte(); 2259 pStream->alignByte();
2271 pStream->offset(2); 2260 pStream->offset(2);
2272 if ((FX_DWORD)nVal != (pStream->getOffset() - nTmp)) { 2261 if ((FX_DWORD)nVal != (pStream->getOffset() - nTmp)) {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
2331 for (I = HCFIRSTSYM; I < NSYMSDECODED; I++) { 2320 for (I = HCFIRSTSYM; I < NSYMSDECODED; I++) {
2332 SDNEWSYMS[I] = BHC->subImage(nTmp, 0, SDNEWSYMWIDTHS[I], HCHEIGHT); 2321 SDNEWSYMS[I] = BHC->subImage(nTmp, 0, SDNEWSYMWIDTHS[I], HCHEIGHT);
2333 nTmp += SDNEWSYMWIDTHS[I]; 2322 nTmp += SDNEWSYMWIDTHS[I];
2334 } 2323 }
2335 delete BHC; 2324 delete BHC;
2336 BHC = NULL; 2325 BHC = NULL;
2337 } 2326 }
2338 } 2327 }
2339 EXINDEX = 0; 2328 EXINDEX = 0;
2340 CUREXFLAG = 0; 2329 CUREXFLAG = 0;
2341 JBIG2_ALLOC(pTable, CJBig2_HuffmanTable( 2330 pTable = new CJBig2_HuffmanTable(
2342 HuffmanTable_B1, 2331 HuffmanTable_B1, sizeof(HuffmanTable_B1) / sizeof(JBig2TableLine),
2343 sizeof(HuffmanTable_B1) / sizeof(JBig2TableLine), 2332 HuffmanTable_HTOOB_B1);
2344 HuffmanTable_HTOOB_B1));
2345 EXFLAGS = (FX_BOOL*)m_pModule->JBig2_Malloc2(sizeof(FX_BOOL), 2333 EXFLAGS = (FX_BOOL*)m_pModule->JBig2_Malloc2(sizeof(FX_BOOL),
2346 (SDNUMINSYMS + SDNUMNEWSYMS)); 2334 (SDNUMINSYMS + SDNUMNEWSYMS));
2347 while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { 2335 while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) {
2348 if (pHuffmanDecoder->decodeAValue(pTable, (int*)&EXRUNLENGTH) != 0) { 2336 if (pHuffmanDecoder->decodeAValue(pTable, (int*)&EXRUNLENGTH) != 0) {
2349 delete pTable; 2337 delete pTable;
2350 m_pModule->JBig2_Free(EXFLAGS); 2338 m_pModule->JBig2_Free(EXFLAGS);
2351 m_pModule->JBig2_Error( 2339 m_pModule->JBig2_Error(
2352 "symbol dictionary decoding procedure (huffman): too short."); 2340 "symbol dictionary decoding procedure (huffman): too short.");
2353 goto failed; 2341 goto failed;
2354 } 2342 }
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
2516 return NULL; 2504 return NULL;
2517 } 2505 }
2518 CJBig2_PatternDict* CJBig2_PDDProc::decode_Arith( 2506 CJBig2_PatternDict* CJBig2_PDDProc::decode_Arith(
2519 CJBig2_ArithDecoder* pArithDecoder, 2507 CJBig2_ArithDecoder* pArithDecoder,
2520 JBig2ArithCtx* gbContext, 2508 JBig2ArithCtx* gbContext,
2521 IFX_Pause* pPause) { 2509 IFX_Pause* pPause) {
2522 FX_DWORD GRAY; 2510 FX_DWORD GRAY;
2523 CJBig2_Image* BHDC = NULL; 2511 CJBig2_Image* BHDC = NULL;
2524 CJBig2_PatternDict* pDict; 2512 CJBig2_PatternDict* pDict;
2525 CJBig2_GRDProc* pGRD; 2513 CJBig2_GRDProc* pGRD;
2526 JBIG2_ALLOC(pDict, CJBig2_PatternDict()); 2514 pDict = new CJBig2_PatternDict();
2527 pDict->NUMPATS = GRAYMAX + 1; 2515 pDict->NUMPATS = GRAYMAX + 1;
2528 pDict->HDPATS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 2516 pDict->HDPATS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(
2529 sizeof(CJBig2_Image*), pDict->NUMPATS); 2517 sizeof(CJBig2_Image*), pDict->NUMPATS);
2530 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS); 2518 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS);
2531 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 2519 JBIG2_ALLOC(pGRD, CJBig2_GRDProc());
2532 pGRD->MMR = HDMMR; 2520 pGRD->MMR = HDMMR;
2533 pGRD->GBW = (GRAYMAX + 1) * HDPW; 2521 pGRD->GBW = (GRAYMAX + 1) * HDPW;
2534 pGRD->GBH = HDPH; 2522 pGRD->GBH = HDPH;
2535 pGRD->GBTEMPLATE = HDTEMPLATE; 2523 pGRD->GBTEMPLATE = HDTEMPLATE;
2536 pGRD->TPGDON = 0; 2524 pGRD->TPGDON = 0;
(...skipping 27 matching lines...) Expand all
2564 return pDict; 2552 return pDict;
2565 failed: 2553 failed:
2566 delete pDict; 2554 delete pDict;
2567 return NULL; 2555 return NULL;
2568 } 2556 }
2569 2557
2570 CJBig2_PatternDict* CJBig2_PDDProc::decode_MMR(CJBig2_BitStream* pStream, 2558 CJBig2_PatternDict* CJBig2_PDDProc::decode_MMR(CJBig2_BitStream* pStream,
2571 IFX_Pause* pPause) { 2559 IFX_Pause* pPause) {
2572 FX_DWORD GRAY; 2560 FX_DWORD GRAY;
2573 CJBig2_Image* BHDC = NULL; 2561 CJBig2_Image* BHDC = NULL;
2574 CJBig2_PatternDict* pDict;
2575 CJBig2_GRDProc* pGRD; 2562 CJBig2_GRDProc* pGRD;
2576 JBIG2_ALLOC(pDict, CJBig2_PatternDict()); 2563 CJBig2_PatternDict* pDict = new CJBig2_PatternDict();
2577 pDict->NUMPATS = GRAYMAX + 1; 2564 pDict->NUMPATS = GRAYMAX + 1;
2578 pDict->HDPATS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 2565 pDict->HDPATS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(
2579 sizeof(CJBig2_Image*), pDict->NUMPATS); 2566 sizeof(CJBig2_Image*), pDict->NUMPATS);
2580 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS); 2567 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS);
2581 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 2568 JBIG2_ALLOC(pGRD, CJBig2_GRDProc());
2582 pGRD->MMR = HDMMR; 2569 pGRD->MMR = HDMMR;
2583 pGRD->GBW = (GRAYMAX + 1) * HDPW; 2570 pGRD->GBW = (GRAYMAX + 1) * HDPW;
2584 pGRD->GBH = HDPH; 2571 pGRD->GBH = HDPH;
2585 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHDC, pStream); 2572 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHDC, pStream);
2586 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { 2573 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) {
(...skipping 840 matching lines...) Expand 10 before | Expand all | Expand 10 after
3427 } 3414 }
3428 if (pPause && pPause->NeedToPauseNow()) { 3415 if (pPause && pPause->NeedToPauseNow()) {
3429 m_loopIndex++; 3416 m_loopIndex++;
3430 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; 3417 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE;
3431 return FXCODEC_STATUS_DECODE_TOBECONTINUE; 3418 return FXCODEC_STATUS_DECODE_TOBECONTINUE;
3432 } 3419 }
3433 } 3420 }
3434 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; 3421 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH;
3435 return FXCODEC_STATUS_DECODE_FINISH; 3422 return FXCODEC_STATUS_DECODE_FINISH;
3436 } 3423 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698