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

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

Issue 1326953006: Remove CJBig2_Object, CJBig2_Module, and friends. (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 16 matching lines...) Expand all
27 {0x0221, 37, 34, 0}, {0x0141, 38, 35, 0}, {0x0111, 39, 36, 0}, 27 {0x0221, 37, 34, 0}, {0x0141, 38, 35, 0}, {0x0111, 39, 36, 0},
28 {0x0085, 40, 37, 0}, {0x0049, 41, 38, 0}, {0x0025, 42, 39, 0}, 28 {0x0085, 40, 37, 0}, {0x0049, 41, 38, 0}, {0x0025, 42, 39, 0},
29 {0x0015, 43, 40, 0}, {0x0009, 44, 41, 0}, {0x0005, 45, 42, 0}, 29 {0x0015, 43, 40, 0}, {0x0009, 44, 41, 0}, {0x0005, 45, 42, 0},
30 {0x0001, 45, 43, 0}, {0x5601, 46, 46, 0}}; 30 {0x0001, 45, 43, 0}, {0x5601, 46, 46, 0}};
31 31
32 extern const unsigned int JBIG2_QE_NUM = FX_ArraySize(QeTable); 32 extern const unsigned int JBIG2_QE_NUM = FX_ArraySize(QeTable);
33 33
34 CJBig2_Image* CJBig2_GRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, 34 CJBig2_Image* CJBig2_GRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder,
35 JBig2ArithCtx* gbContext) { 35 JBig2ArithCtx* gbContext) {
36 if (GBW == 0 || GBH == 0) { 36 if (GBW == 0 || GBH == 0) {
37 CJBig2_Image* pImage; 37 return new CJBig2_Image(GBW, GBH);
38 JBIG2_ALLOC(pImage, CJBig2_Image(GBW, GBH));
39 return pImage;
40 } 38 }
41 if (GBTEMPLATE == 0) { 39 if (GBTEMPLATE == 0) {
42 if ((GBAT[0] == 3) && (GBAT[1] == (int8_t)-1) && (GBAT[2] == (int8_t)-3) && 40 if ((GBAT[0] == 3) && (GBAT[1] == (int8_t)-1) && (GBAT[2] == (int8_t)-3) &&
43 (GBAT[3] == (int8_t)-1) && (GBAT[4] == 2) && (GBAT[5] == (int8_t)-2) && 41 (GBAT[3] == (int8_t)-1) && (GBAT[4] == 2) && (GBAT[5] == (int8_t)-2) &&
44 (GBAT[6] == (int8_t)-2) && (GBAT[7] == (int8_t)-2)) { 42 (GBAT[6] == (int8_t)-2) && (GBAT[7] == (int8_t)-2)) {
45 return decode_Arith_Template0_opt3(pArithDecoder, gbContext); 43 return decode_Arith_Template0_opt3(pArithDecoder, gbContext);
46 } else { 44 } else {
47 return decode_Arith_Template0_unopt(pArithDecoder, gbContext); 45 return decode_Arith_Template0_unopt(pArithDecoder, gbContext);
48 } 46 }
49 } else if (GBTEMPLATE == 1) { 47 } else if (GBTEMPLATE == 1) {
(...skipping 14 matching lines...) Expand all
64 } else { 62 } else {
65 return decode_Arith_Template3_unopt(pArithDecoder, gbContext); 63 return decode_Arith_Template3_unopt(pArithDecoder, gbContext);
66 } 64 }
67 } 65 }
68 } 66 }
69 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template0_opt3( 67 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template0_opt3(
70 CJBig2_ArithDecoder* pArithDecoder, 68 CJBig2_ArithDecoder* pArithDecoder,
71 JBig2ArithCtx* gbContext) { 69 JBig2ArithCtx* gbContext) {
72 FX_BOOL LTP, SLTP, bVal; 70 FX_BOOL LTP, SLTP, bVal;
73 FX_DWORD CONTEXT; 71 FX_DWORD CONTEXT;
74 CJBig2_Image* GBREG;
75 FX_DWORD line1, line2; 72 FX_DWORD line1, line2;
76 uint8_t *pLine, *pLine1, *pLine2, cVal; 73 uint8_t *pLine, *pLine1, *pLine2, cVal;
77 int32_t nStride, nStride2, k; 74 int32_t nStride, nStride2, k;
78 int32_t nLineBytes, nBitsLeft, cc; 75 int32_t nLineBytes, nBitsLeft, cc;
79 LTP = 0; 76 LTP = 0;
80 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); 77 CJBig2_Image* GBREG = new CJBig2_Image(GBW, GBH);
81 if (GBREG->m_pData == NULL) { 78 if (GBREG->m_pData == NULL) {
82 delete GBREG; 79 delete GBREG;
83 return NULL; 80 return NULL;
84 } 81 }
85 pLine = GBREG->m_pData; 82 pLine = GBREG->m_pData;
86 nStride = GBREG->m_nStride; 83 nStride = GBREG->m_nStride;
87 nStride2 = nStride << 1; 84 nStride2 = nStride << 1;
88 nLineBytes = ((GBW + 7) >> 3) - 1; 85 nLineBytes = ((GBW + 7) >> 3) - 1;
89 nBitsLeft = GBW - (nLineBytes << 3); 86 nBitsLeft = GBW - (nLineBytes << 3);
90 FX_DWORD height = GBH & 0x7fffffff; 87 FX_DWORD height = GBH & 0x7fffffff;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 } 152 }
156 pLine += nStride; 153 pLine += nStride;
157 } 154 }
158 return GBREG; 155 return GBREG;
159 } 156 }
160 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template0_unopt( 157 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template0_unopt(
161 CJBig2_ArithDecoder* pArithDecoder, 158 CJBig2_ArithDecoder* pArithDecoder,
162 JBig2ArithCtx* gbContext) { 159 JBig2ArithCtx* gbContext) {
163 FX_BOOL LTP, SLTP, bVal; 160 FX_BOOL LTP, SLTP, bVal;
164 FX_DWORD CONTEXT; 161 FX_DWORD CONTEXT;
165 CJBig2_Image* GBREG;
166 FX_DWORD line1, line2, line3; 162 FX_DWORD line1, line2, line3;
167 LTP = 0; 163 LTP = 0;
168 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); 164 CJBig2_Image* GBREG = new CJBig2_Image(GBW, GBH);
169 GBREG->fill(0); 165 GBREG->fill(0);
170 for (FX_DWORD h = 0; h < GBH; h++) { 166 for (FX_DWORD h = 0; h < GBH; h++) {
171 if (TPGDON) { 167 if (TPGDON) {
172 SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); 168 SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]);
173 LTP = LTP ^ SLTP; 169 LTP = LTP ^ SLTP;
174 } 170 }
175 if (LTP == 1) { 171 if (LTP == 1) {
176 GBREG->copyLine(h, h - 1); 172 GBREG->copyLine(h, h - 1);
177 } else { 173 } else {
178 line1 = GBREG->getPixel(1, h - 2); 174 line1 = GBREG->getPixel(1, h - 2);
(...skipping 24 matching lines...) Expand all
203 } 199 }
204 } 200 }
205 } 201 }
206 return GBREG; 202 return GBREG;
207 } 203 }
208 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template1_opt3( 204 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template1_opt3(
209 CJBig2_ArithDecoder* pArithDecoder, 205 CJBig2_ArithDecoder* pArithDecoder,
210 JBig2ArithCtx* gbContext) { 206 JBig2ArithCtx* gbContext) {
211 FX_BOOL LTP, SLTP, bVal; 207 FX_BOOL LTP, SLTP, bVal;
212 FX_DWORD CONTEXT; 208 FX_DWORD CONTEXT;
213 CJBig2_Image* GBREG;
214 FX_DWORD line1, line2; 209 FX_DWORD line1, line2;
215 uint8_t *pLine, *pLine1, *pLine2, cVal; 210 uint8_t *pLine, *pLine1, *pLine2, cVal;
216 int32_t nStride, nStride2, k; 211 int32_t nStride, nStride2, k;
217 int32_t nLineBytes, nBitsLeft, cc; 212 int32_t nLineBytes, nBitsLeft, cc;
218 LTP = 0; 213 LTP = 0;
219 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); 214 CJBig2_Image* GBREG = new CJBig2_Image(GBW, GBH);
220 if (GBREG->m_pData == NULL) { 215 if (GBREG->m_pData == NULL) {
221 delete GBREG; 216 delete GBREG;
222 return NULL; 217 return NULL;
223 } 218 }
224 pLine = GBREG->m_pData; 219 pLine = GBREG->m_pData;
225 nStride = GBREG->m_nStride; 220 nStride = GBREG->m_nStride;
226 nStride2 = nStride << 1; 221 nStride2 = nStride << 1;
227 nLineBytes = ((GBW + 7) >> 3) - 1; 222 nLineBytes = ((GBW + 7) >> 3) - 1;
228 nBitsLeft = GBW - (nLineBytes << 3); 223 nBitsLeft = GBW - (nLineBytes << 3);
229 for (FX_DWORD h = 0; h < GBH; h++) { 224 for (FX_DWORD h = 0; h < GBH; h++) {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 } 288 }
294 pLine += nStride; 289 pLine += nStride;
295 } 290 }
296 return GBREG; 291 return GBREG;
297 } 292 }
298 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template1_unopt( 293 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template1_unopt(
299 CJBig2_ArithDecoder* pArithDecoder, 294 CJBig2_ArithDecoder* pArithDecoder,
300 JBig2ArithCtx* gbContext) { 295 JBig2ArithCtx* gbContext) {
301 FX_BOOL LTP, SLTP, bVal; 296 FX_BOOL LTP, SLTP, bVal;
302 FX_DWORD CONTEXT; 297 FX_DWORD CONTEXT;
303 CJBig2_Image* GBREG;
304 FX_DWORD line1, line2, line3; 298 FX_DWORD line1, line2, line3;
305 LTP = 0; 299 LTP = 0;
306 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); 300 CJBig2_Image* GBREG = new CJBig2_Image(GBW, GBH);
307 GBREG->fill(0); 301 GBREG->fill(0);
308 for (FX_DWORD h = 0; h < GBH; h++) { 302 for (FX_DWORD h = 0; h < GBH; h++) {
309 if (TPGDON) { 303 if (TPGDON) {
310 SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); 304 SLTP = pArithDecoder->DECODE(&gbContext[0x0795]);
311 LTP = LTP ^ SLTP; 305 LTP = LTP ^ SLTP;
312 } 306 }
313 if (LTP == 1) { 307 if (LTP == 1) {
314 GBREG->copyLine(h, h - 1); 308 GBREG->copyLine(h, h - 1);
315 } else { 309 } else {
316 line1 = GBREG->getPixel(2, h - 2); 310 line1 = GBREG->getPixel(2, h - 2);
(...skipping 22 matching lines...) Expand all
339 } 333 }
340 } 334 }
341 } 335 }
342 return GBREG; 336 return GBREG;
343 } 337 }
344 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template2_opt3( 338 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template2_opt3(
345 CJBig2_ArithDecoder* pArithDecoder, 339 CJBig2_ArithDecoder* pArithDecoder,
346 JBig2ArithCtx* gbContext) { 340 JBig2ArithCtx* gbContext) {
347 FX_BOOL LTP, SLTP, bVal; 341 FX_BOOL LTP, SLTP, bVal;
348 FX_DWORD CONTEXT; 342 FX_DWORD CONTEXT;
349 CJBig2_Image* GBREG;
350 FX_DWORD line1, line2; 343 FX_DWORD line1, line2;
351 uint8_t *pLine, *pLine1, *pLine2, cVal; 344 uint8_t *pLine, *pLine1, *pLine2, cVal;
352 int32_t nStride, nStride2, k; 345 int32_t nStride, nStride2, k;
353 int32_t nLineBytes, nBitsLeft, cc; 346 int32_t nLineBytes, nBitsLeft, cc;
354 LTP = 0; 347 LTP = 0;
355 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); 348 CJBig2_Image* GBREG = new CJBig2_Image(GBW, GBH);
356 if (GBREG->m_pData == NULL) { 349 if (GBREG->m_pData == NULL) {
357 delete GBREG; 350 delete GBREG;
358 return NULL; 351 return NULL;
359 } 352 }
360 pLine = GBREG->m_pData; 353 pLine = GBREG->m_pData;
361 nStride = GBREG->m_nStride; 354 nStride = GBREG->m_nStride;
362 nStride2 = nStride << 1; 355 nStride2 = nStride << 1;
363 nLineBytes = ((GBW + 7) >> 3) - 1; 356 nLineBytes = ((GBW + 7) >> 3) - 1;
364 nBitsLeft = GBW - (nLineBytes << 3); 357 nBitsLeft = GBW - (nLineBytes << 3);
365 for (FX_DWORD h = 0; h < GBH; h++) { 358 for (FX_DWORD h = 0; h < GBH; h++) {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 } 422 }
430 pLine += nStride; 423 pLine += nStride;
431 } 424 }
432 return GBREG; 425 return GBREG;
433 } 426 }
434 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template2_unopt( 427 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template2_unopt(
435 CJBig2_ArithDecoder* pArithDecoder, 428 CJBig2_ArithDecoder* pArithDecoder,
436 JBig2ArithCtx* gbContext) { 429 JBig2ArithCtx* gbContext) {
437 FX_BOOL LTP, SLTP, bVal; 430 FX_BOOL LTP, SLTP, bVal;
438 FX_DWORD CONTEXT; 431 FX_DWORD CONTEXT;
439 CJBig2_Image* GBREG;
440 FX_DWORD line1, line2, line3; 432 FX_DWORD line1, line2, line3;
441 LTP = 0; 433 LTP = 0;
442 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); 434 CJBig2_Image* GBREG = new CJBig2_Image(GBW, GBH);
443 GBREG->fill(0); 435 GBREG->fill(0);
444 for (FX_DWORD h = 0; h < GBH; h++) { 436 for (FX_DWORD h = 0; h < GBH; h++) {
445 if (TPGDON) { 437 if (TPGDON) {
446 SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); 438 SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]);
447 LTP = LTP ^ SLTP; 439 LTP = LTP ^ SLTP;
448 } 440 }
449 if (LTP == 1) { 441 if (LTP == 1) {
450 GBREG->copyLine(h, h - 1); 442 GBREG->copyLine(h, h - 1);
451 } else { 443 } else {
452 line1 = GBREG->getPixel(1, h - 2); 444 line1 = GBREG->getPixel(1, h - 2);
(...skipping 20 matching lines...) Expand all
473 } 465 }
474 } 466 }
475 } 467 }
476 return GBREG; 468 return GBREG;
477 } 469 }
478 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template3_opt3( 470 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template3_opt3(
479 CJBig2_ArithDecoder* pArithDecoder, 471 CJBig2_ArithDecoder* pArithDecoder,
480 JBig2ArithCtx* gbContext) { 472 JBig2ArithCtx* gbContext) {
481 FX_BOOL LTP, SLTP, bVal; 473 FX_BOOL LTP, SLTP, bVal;
482 FX_DWORD CONTEXT; 474 FX_DWORD CONTEXT;
483 CJBig2_Image* GBREG;
484 FX_DWORD line1; 475 FX_DWORD line1;
485 uint8_t *pLine, *pLine1, cVal; 476 uint8_t *pLine, *pLine1, cVal;
486 int32_t nStride, k; 477 int32_t nStride, k;
487 int32_t nLineBytes, nBitsLeft, cc; 478 int32_t nLineBytes, nBitsLeft, cc;
488 LTP = 0; 479 LTP = 0;
489 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); 480 CJBig2_Image* GBREG = new CJBig2_Image(GBW, GBH);
490 if (GBREG->m_pData == NULL) { 481 if (GBREG->m_pData == NULL) {
491 delete GBREG; 482 delete GBREG;
492 return NULL; 483 return NULL;
493 } 484 }
494 pLine = GBREG->m_pData; 485 pLine = GBREG->m_pData;
495 nStride = GBREG->m_nStride; 486 nStride = GBREG->m_nStride;
496 nLineBytes = ((GBW + 7) >> 3) - 1; 487 nLineBytes = ((GBW + 7) >> 3) - 1;
497 nBitsLeft = GBW - (nLineBytes << 3); 488 nBitsLeft = GBW - (nLineBytes << 3);
498 for (FX_DWORD h = 0; h < GBH; h++) { 489 for (FX_DWORD h = 0; h < GBH; h++) {
499 if (TPGDON) { 490 if (TPGDON) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 } 540 }
550 pLine += nStride; 541 pLine += nStride;
551 } 542 }
552 return GBREG; 543 return GBREG;
553 } 544 }
554 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template3_unopt( 545 CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template3_unopt(
555 CJBig2_ArithDecoder* pArithDecoder, 546 CJBig2_ArithDecoder* pArithDecoder,
556 JBig2ArithCtx* gbContext) { 547 JBig2ArithCtx* gbContext) {
557 FX_BOOL LTP, SLTP, bVal; 548 FX_BOOL LTP, SLTP, bVal;
558 FX_DWORD CONTEXT; 549 FX_DWORD CONTEXT;
559 CJBig2_Image* GBREG;
560 FX_DWORD line1, line2; 550 FX_DWORD line1, line2;
561 LTP = 0; 551 LTP = 0;
562 JBIG2_ALLOC(GBREG, CJBig2_Image(GBW, GBH)); 552 CJBig2_Image* GBREG = new CJBig2_Image(GBW, GBH);
563 GBREG->fill(0); 553 GBREG->fill(0);
564 for (FX_DWORD h = 0; h < GBH; h++) { 554 for (FX_DWORD h = 0; h < GBH; h++) {
565 if (TPGDON) { 555 if (TPGDON) {
566 SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); 556 SLTP = pArithDecoder->DECODE(&gbContext[0x0195]);
567 LTP = LTP ^ SLTP; 557 LTP = LTP ^ SLTP;
568 } 558 }
569 if (LTP == 1) { 559 if (LTP == 1) {
570 GBREG->copyLine(h, h - 1); 560 GBREG->copyLine(h, h - 1);
571 } else { 561 } else {
572 line1 = GBREG->getPixel(1, h - 1); 562 line1 = GBREG->getPixel(1, h - 1);
(...skipping 14 matching lines...) Expand all
587 line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 1)) & 0x1f; 577 line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 1)) & 0x1f;
588 line2 = ((line2 << 1) | bVal) & 0x0f; 578 line2 = ((line2 << 1) | bVal) & 0x0f;
589 } 579 }
590 } 580 }
591 } 581 }
592 return GBREG; 582 return GBREG;
593 } 583 }
594 CJBig2_Image* CJBig2_GRRDProc::decode(CJBig2_ArithDecoder* pArithDecoder, 584 CJBig2_Image* CJBig2_GRRDProc::decode(CJBig2_ArithDecoder* pArithDecoder,
595 JBig2ArithCtx* grContext) { 585 JBig2ArithCtx* grContext) {
596 if (GRW == 0 || GRH == 0) { 586 if (GRW == 0 || GRH == 0) {
597 CJBig2_Image* pImage; 587 return new CJBig2_Image(GRW, GRH);
598 JBIG2_ALLOC(pImage, CJBig2_Image(GRW, GRH));
599 return pImage;
600 } 588 }
601 if (GRTEMPLATE == 0) { 589 if (GRTEMPLATE == 0) {
602 if ((GRAT[0] == (int8_t)-1) && (GRAT[1] == (int8_t)-1) && 590 if ((GRAT[0] == (int8_t)-1) && (GRAT[1] == (int8_t)-1) &&
603 (GRAT[2] == (int8_t)-1) && (GRAT[3] == (int8_t)-1) && 591 (GRAT[2] == (int8_t)-1) && (GRAT[3] == (int8_t)-1) &&
604 (GRREFERENCEDX == 0) && (GRW == (FX_DWORD)GRREFERENCE->m_nWidth)) { 592 (GRREFERENCEDX == 0) && (GRW == (FX_DWORD)GRREFERENCE->m_nWidth)) {
605 return decode_Template0_opt(pArithDecoder, grContext); 593 return decode_Template0_opt(pArithDecoder, grContext);
606 } else { 594 } else {
607 return decode_Template0_unopt(pArithDecoder, grContext); 595 return decode_Template0_unopt(pArithDecoder, grContext);
608 } 596 }
609 } else { 597 } else {
610 if ((GRREFERENCEDX == 0) && (GRW == (FX_DWORD)GRREFERENCE->m_nWidth)) { 598 if ((GRREFERENCEDX == 0) && (GRW == (FX_DWORD)GRREFERENCE->m_nWidth)) {
611 return decode_Template1_opt(pArithDecoder, grContext); 599 return decode_Template1_opt(pArithDecoder, grContext);
612 } else { 600 } else {
613 return decode_Template1_unopt(pArithDecoder, grContext); 601 return decode_Template1_unopt(pArithDecoder, grContext);
614 } 602 }
615 } 603 }
616 } 604 }
617 CJBig2_Image* CJBig2_GRRDProc::decode_Template0_unopt( 605 CJBig2_Image* CJBig2_GRRDProc::decode_Template0_unopt(
618 CJBig2_ArithDecoder* pArithDecoder, 606 CJBig2_ArithDecoder* pArithDecoder,
619 JBig2ArithCtx* grContext) { 607 JBig2ArithCtx* grContext) {
620 FX_BOOL LTP, SLTP, bVal; 608 FX_BOOL LTP, SLTP, bVal;
621 FX_DWORD CONTEXT; 609 FX_DWORD CONTEXT;
622 CJBig2_Image* GRREG;
623 FX_DWORD line1, line2, line3, line4, line5; 610 FX_DWORD line1, line2, line3, line4, line5;
624 LTP = 0; 611 LTP = 0;
625 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); 612 CJBig2_Image* GRREG = new CJBig2_Image(GRW, GRH);
626 GRREG->fill(0); 613 GRREG->fill(0);
627 for (FX_DWORD h = 0; h < GRH; h++) { 614 for (FX_DWORD h = 0; h < GRH; h++) {
628 if (TPGRON) { 615 if (TPGRON) {
629 SLTP = pArithDecoder->DECODE(&grContext[0x0010]); 616 SLTP = pArithDecoder->DECODE(&grContext[0x0010]);
630 LTP = LTP ^ SLTP; 617 LTP = LTP ^ SLTP;
631 } 618 }
632 if (LTP == 0) { 619 if (LTP == 0) {
633 line1 = GRREG->getPixel(1, h - 1); 620 line1 = GRREG->getPixel(1, h - 1);
634 line1 |= GRREG->getPixel(0, h - 1) << 1; 621 line1 |= GRREG->getPixel(0, h - 1) << 1;
635 line2 = 0; 622 line2 = 0;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 } 714 }
728 } 715 }
729 } 716 }
730 return GRREG; 717 return GRREG;
731 } 718 }
732 CJBig2_Image* CJBig2_GRRDProc::decode_Template0_opt( 719 CJBig2_Image* CJBig2_GRRDProc::decode_Template0_opt(
733 CJBig2_ArithDecoder* pArithDecoder, 720 CJBig2_ArithDecoder* pArithDecoder,
734 JBig2ArithCtx* grContext) { 721 JBig2ArithCtx* grContext) {
735 FX_BOOL LTP, SLTP, bVal; 722 FX_BOOL LTP, SLTP, bVal;
736 FX_DWORD CONTEXT; 723 FX_DWORD CONTEXT;
737 CJBig2_Image* GRREG;
738 FX_DWORD line1, line1_r, line2_r, line3_r; 724 FX_DWORD line1, line1_r, line2_r, line3_r;
739 uint8_t *pLine, *pLineR, cVal; 725 uint8_t *pLine, *pLineR, cVal;
740 intptr_t nStride, nStrideR, nOffset; 726 intptr_t nStride, nStrideR, nOffset;
741 int32_t k, nBits; 727 int32_t k, nBits;
742 int32_t GRWR, GRHR; 728 int32_t GRWR, GRHR;
743 int32_t GRW, GRH; 729 int32_t GRW, GRH;
744 GRW = (int32_t)CJBig2_GRRDProc::GRW; 730 GRW = (int32_t)CJBig2_GRRDProc::GRW;
745 GRH = (int32_t)CJBig2_GRRDProc::GRH; 731 GRH = (int32_t)CJBig2_GRRDProc::GRH;
746 LTP = 0; 732 LTP = 0;
747 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); 733 CJBig2_Image* GRREG = new CJBig2_Image(GRW, GRH);
748 if (GRREG->m_pData == NULL) { 734 if (GRREG->m_pData == NULL) {
749 delete GRREG; 735 delete GRREG;
750 return NULL; 736 return NULL;
751 } 737 }
752 pLine = GRREG->m_pData; 738 pLine = GRREG->m_pData;
753 pLineR = GRREFERENCE->m_pData; 739 pLineR = GRREFERENCE->m_pData;
754 nStride = GRREG->m_nStride; 740 nStride = GRREG->m_nStride;
755 nStrideR = GRREFERENCE->m_nStride; 741 nStrideR = GRREFERENCE->m_nStride;
756 GRWR = (int32_t)GRREFERENCE->m_nWidth; 742 GRWR = (int32_t)GRREFERENCE->m_nWidth;
757 GRHR = (int32_t)GRREFERENCE->m_nHeight; 743 GRHR = (int32_t)GRREFERENCE->m_nHeight;
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 pLineR += nStrideR; 848 pLineR += nStrideR;
863 } 849 }
864 } 850 }
865 return GRREG; 851 return GRREG;
866 } 852 }
867 CJBig2_Image* CJBig2_GRRDProc::decode_Template1_unopt( 853 CJBig2_Image* CJBig2_GRRDProc::decode_Template1_unopt(
868 CJBig2_ArithDecoder* pArithDecoder, 854 CJBig2_ArithDecoder* pArithDecoder,
869 JBig2ArithCtx* grContext) { 855 JBig2ArithCtx* grContext) {
870 FX_BOOL LTP, SLTP, bVal; 856 FX_BOOL LTP, SLTP, bVal;
871 FX_DWORD CONTEXT; 857 FX_DWORD CONTEXT;
872 CJBig2_Image* GRREG;
873 FX_DWORD line1, line2, line3, line4, line5; 858 FX_DWORD line1, line2, line3, line4, line5;
874 LTP = 0; 859 LTP = 0;
875 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); 860 CJBig2_Image* GRREG = new CJBig2_Image(GRW, GRH);
876 GRREG->fill(0); 861 GRREG->fill(0);
877 for (FX_DWORD h = 0; h < GRH; h++) { 862 for (FX_DWORD h = 0; h < GRH; h++) {
878 if (TPGRON) { 863 if (TPGRON) {
879 SLTP = pArithDecoder->DECODE(&grContext[0x0008]); 864 SLTP = pArithDecoder->DECODE(&grContext[0x0008]);
880 LTP = LTP ^ SLTP; 865 LTP = LTP ^ SLTP;
881 } 866 }
882 if (LTP == 0) { 867 if (LTP == 0) {
883 line1 = GRREG->getPixel(1, h - 1); 868 line1 = GRREG->getPixel(1, h - 1);
884 line1 |= GRREG->getPixel(0, h - 1) << 1; 869 line1 |= GRREG->getPixel(0, h - 1) << 1;
885 line1 |= GRREG->getPixel(-1, h - 1) << 2; 870 line1 |= GRREG->getPixel(-1, h - 1) << 2;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 } 948 }
964 } 949 }
965 } 950 }
966 return GRREG; 951 return GRREG;
967 } 952 }
968 CJBig2_Image* CJBig2_GRRDProc::decode_Template1_opt( 953 CJBig2_Image* CJBig2_GRRDProc::decode_Template1_opt(
969 CJBig2_ArithDecoder* pArithDecoder, 954 CJBig2_ArithDecoder* pArithDecoder,
970 JBig2ArithCtx* grContext) { 955 JBig2ArithCtx* grContext) {
971 FX_BOOL LTP, SLTP, bVal; 956 FX_BOOL LTP, SLTP, bVal;
972 FX_DWORD CONTEXT; 957 FX_DWORD CONTEXT;
973 CJBig2_Image* GRREG;
974 FX_DWORD line1, line1_r, line2_r, line3_r; 958 FX_DWORD line1, line1_r, line2_r, line3_r;
975 uint8_t *pLine, *pLineR, cVal; 959 uint8_t *pLine, *pLineR, cVal;
976 intptr_t nStride, nStrideR, nOffset; 960 intptr_t nStride, nStrideR, nOffset;
977 int32_t k, nBits; 961 int32_t k, nBits;
978 int32_t GRWR, GRHR; 962 int32_t GRWR, GRHR;
979 int32_t GRW, GRH; 963 int32_t GRW, GRH;
980 GRW = (int32_t)CJBig2_GRRDProc::GRW; 964 GRW = (int32_t)CJBig2_GRRDProc::GRW;
981 GRH = (int32_t)CJBig2_GRRDProc::GRH; 965 GRH = (int32_t)CJBig2_GRRDProc::GRH;
982 LTP = 0; 966 LTP = 0;
983 JBIG2_ALLOC(GRREG, CJBig2_Image(GRW, GRH)); 967 CJBig2_Image* GRREG = new CJBig2_Image(GRW, GRH);
984 if (GRREG->m_pData == NULL) { 968 if (GRREG->m_pData == NULL) {
985 delete GRREG; 969 delete GRREG;
986 return NULL; 970 return NULL;
987 } 971 }
988 pLine = GRREG->m_pData; 972 pLine = GRREG->m_pData;
989 pLineR = GRREFERENCE->m_pData; 973 pLineR = GRREFERENCE->m_pData;
990 nStride = GRREG->m_nStride; 974 nStride = GRREG->m_nStride;
991 nStrideR = GRREFERENCE->m_nStride; 975 nStrideR = GRREFERENCE->m_nStride;
992 GRWR = (int32_t)GRREFERENCE->m_nWidth; 976 GRWR = (int32_t)GRREFERENCE->m_nWidth;
993 GRHR = (int32_t)GRREFERENCE->m_nHeight; 977 GRHR = (int32_t)GRREFERENCE->m_nHeight;
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 uint8_t CURT; 1087 uint8_t CURT;
1104 int32_t SI, TI; 1088 int32_t SI, TI;
1105 FX_DWORD IDI; 1089 FX_DWORD IDI;
1106 CJBig2_Image* IBI; 1090 CJBig2_Image* IBI;
1107 FX_DWORD WI, HI; 1091 FX_DWORD WI, HI;
1108 int32_t IDS; 1092 int32_t IDS;
1109 FX_BOOL RI; 1093 FX_BOOL RI;
1110 int32_t RDWI, RDHI, RDXI, RDYI; 1094 int32_t RDWI, RDHI, RDXI, RDYI;
1111 CJBig2_Image* IBOI; 1095 CJBig2_Image* IBOI;
1112 FX_DWORD WOI, HOI; 1096 FX_DWORD WOI, HOI;
1113 CJBig2_Image* SBREG;
1114 FX_BOOL bFirst; 1097 FX_BOOL bFirst;
1115 FX_DWORD nTmp; 1098 FX_DWORD nTmp;
1116 int32_t nVal, nBits; 1099 int32_t nVal, nBits;
1117 CJBig2_GRRDProc* pGRRD; 1100 CJBig2_GRRDProc* pGRRD;
1118 CJBig2_ArithDecoder* pArithDecoder; 1101 CJBig2_ArithDecoder* pArithDecoder;
1119 CJBig2_HuffmanDecoder* pHuffmanDecoder = new CJBig2_HuffmanDecoder(pStream); 1102 CJBig2_HuffmanDecoder* pHuffmanDecoder = new CJBig2_HuffmanDecoder(pStream);
1120 JBIG2_ALLOC(SBREG, CJBig2_Image(SBW, SBH)); 1103 CJBig2_Image* SBREG = new CJBig2_Image(SBW, SBH);
1121 SBREG->fill(SBDEFPIXEL); 1104 SBREG->fill(SBDEFPIXEL);
1122 if (pHuffmanDecoder->decodeAValue(SBHUFFDT, &STRIPT) != 0) { 1105 if (pHuffmanDecoder->decodeAValue(SBHUFFDT, &STRIPT) != 0) {
1123 goto failed; 1106 goto failed;
1124 } 1107 }
1125 STRIPT *= SBSTRIPS; 1108 STRIPT *= SBSTRIPS;
1126 STRIPT = -STRIPT; 1109 STRIPT = -STRIPT;
1127 FIRSTS = 0; 1110 FIRSTS = 0;
1128 NINSTANCES = 0; 1111 NINSTANCES = 0;
1129 while (NINSTANCES < SBNUMINSTANCES) { 1112 while (NINSTANCES < SBNUMINSTANCES) {
1130 if (pHuffmanDecoder->decodeAValue(SBHUFFDT, &DT) != 0) { 1113 if (pHuffmanDecoder->decodeAValue(SBHUFFDT, &DT) != 0) {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1203 nTmp = pStream->getOffset(); 1186 nTmp = pStream->getOffset();
1204 IBOI = SBSYMS[IDI]; 1187 IBOI = SBSYMS[IDI];
1205 if (!IBOI) { 1188 if (!IBOI) {
1206 goto failed; 1189 goto failed;
1207 } 1190 }
1208 WOI = IBOI->m_nWidth; 1191 WOI = IBOI->m_nWidth;
1209 HOI = IBOI->m_nHeight; 1192 HOI = IBOI->m_nHeight;
1210 if ((int)(WOI + RDWI) < 0 || (int)(HOI + RDHI) < 0) { 1193 if ((int)(WOI + RDWI) < 0 || (int)(HOI + RDHI) < 0) {
1211 goto failed; 1194 goto failed;
1212 } 1195 }
1213 JBIG2_ALLOC(pGRRD, CJBig2_GRRDProc()); 1196 pGRRD = new CJBig2_GRRDProc();
1214 pGRRD->GRW = WOI + RDWI; 1197 pGRRD->GRW = WOI + RDWI;
1215 pGRRD->GRH = HOI + RDHI; 1198 pGRRD->GRH = HOI + RDHI;
1216 pGRRD->GRTEMPLATE = SBRTEMPLATE; 1199 pGRRD->GRTEMPLATE = SBRTEMPLATE;
1217 pGRRD->GRREFERENCE = IBOI; 1200 pGRRD->GRREFERENCE = IBOI;
1218 pGRRD->GRREFERENCEDX = (RDWI >> 2) + RDXI; 1201 pGRRD->GRREFERENCEDX = (RDWI >> 2) + RDXI;
1219 pGRRD->GRREFERENCEDY = (RDHI >> 2) + RDYI; 1202 pGRRD->GRREFERENCEDY = (RDHI >> 2) + RDYI;
1220 pGRRD->TPGRON = 0; 1203 pGRRD->TPGRON = 0;
1221 pGRRD->GRAT[0] = SBRAT[0]; 1204 pGRRD->GRAT[0] = SBRAT[0];
1222 pGRRD->GRAT[1] = SBRAT[1]; 1205 pGRRD->GRAT[1] = SBRAT[1];
1223 pGRRD->GRAT[2] = SBRAT[2]; 1206 pGRRD->GRAT[2] = SBRAT[2];
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1345 IADS = new CJBig2_ArithIntDecoder(); 1328 IADS = new CJBig2_ArithIntDecoder();
1346 IAIT = new CJBig2_ArithIntDecoder(); 1329 IAIT = new CJBig2_ArithIntDecoder();
1347 IARI = new CJBig2_ArithIntDecoder(); 1330 IARI = new CJBig2_ArithIntDecoder();
1348 IARDW = new CJBig2_ArithIntDecoder(); 1331 IARDW = new CJBig2_ArithIntDecoder();
1349 IARDH = new CJBig2_ArithIntDecoder(); 1332 IARDH = new CJBig2_ArithIntDecoder();
1350 IARDX = new CJBig2_ArithIntDecoder(); 1333 IARDX = new CJBig2_ArithIntDecoder();
1351 IARDY = new CJBig2_ArithIntDecoder(); 1334 IARDY = new CJBig2_ArithIntDecoder();
1352 IAID = new CJBig2_ArithIaidDecoder(SBSYMCODELEN); 1335 IAID = new CJBig2_ArithIaidDecoder(SBSYMCODELEN);
1353 bRetained = FALSE; 1336 bRetained = FALSE;
1354 } 1337 }
1355 JBIG2_ALLOC(SBREG, CJBig2_Image(SBW, SBH)); 1338 SBREG = new CJBig2_Image(SBW, SBH);
1356 SBREG->fill(SBDEFPIXEL); 1339 SBREG->fill(SBDEFPIXEL);
1357 if (IADT->decode(pArithDecoder, &STRIPT) == -1) { 1340 if (IADT->decode(pArithDecoder, &STRIPT) == -1) {
1358 goto failed; 1341 goto failed;
1359 } 1342 }
1360 STRIPT *= SBSTRIPS; 1343 STRIPT *= SBSTRIPS;
1361 STRIPT = -STRIPT; 1344 STRIPT = -STRIPT;
1362 FIRSTS = 0; 1345 FIRSTS = 0;
1363 NINSTANCES = 0; 1346 NINSTANCES = 0;
1364 while (NINSTANCES < SBNUMINSTANCES) { 1347 while (NINSTANCES < SBNUMINSTANCES) {
1365 if (IADT->decode(pArithDecoder, &DT) == -1) { 1348 if (IADT->decode(pArithDecoder, &DT) == -1) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1423 (IARDX->decode(pArithDecoder, &RDXI) == -1) || 1406 (IARDX->decode(pArithDecoder, &RDXI) == -1) ||
1424 (IARDY->decode(pArithDecoder, &RDYI) == -1)) { 1407 (IARDY->decode(pArithDecoder, &RDYI) == -1)) {
1425 goto failed; 1408 goto failed;
1426 } 1409 }
1427 IBOI = SBSYMS[IDI]; 1410 IBOI = SBSYMS[IDI];
1428 WOI = IBOI->m_nWidth; 1411 WOI = IBOI->m_nWidth;
1429 HOI = IBOI->m_nHeight; 1412 HOI = IBOI->m_nHeight;
1430 if ((int)(WOI + RDWI) < 0 || (int)(HOI + RDHI) < 0) { 1413 if ((int)(WOI + RDWI) < 0 || (int)(HOI + RDHI) < 0) {
1431 goto failed; 1414 goto failed;
1432 } 1415 }
1433 JBIG2_ALLOC(pGRRD, CJBig2_GRRDProc()); 1416 pGRRD = new CJBig2_GRRDProc();
1434 pGRRD->GRW = WOI + RDWI; 1417 pGRRD->GRW = WOI + RDWI;
1435 pGRRD->GRH = HOI + RDHI; 1418 pGRRD->GRH = HOI + RDHI;
1436 pGRRD->GRTEMPLATE = SBRTEMPLATE; 1419 pGRRD->GRTEMPLATE = SBRTEMPLATE;
1437 pGRRD->GRREFERENCE = IBOI; 1420 pGRRD->GRREFERENCE = IBOI;
1438 pGRRD->GRREFERENCEDX = (RDWI >> 1) + RDXI; 1421 pGRRD->GRREFERENCEDX = (RDWI >> 1) + RDXI;
1439 pGRRD->GRREFERENCEDY = (RDHI >> 1) + RDYI; 1422 pGRRD->GRREFERENCEDY = (RDHI >> 1) + RDYI;
1440 pGRRD->TPGRON = 0; 1423 pGRRD->TPGRON = 0;
1441 pGRRD->GRAT[0] = SBRAT[0]; 1424 pGRRD->GRAT[0] = SBRAT[0];
1442 pGRRD->GRAT[1] = SBRAT[1]; 1425 pGRRD->GRAT[1] = SBRAT[1];
1443 pGRRD->GRAT[2] = SBRAT[2]; 1426 pGRRD->GRAT[2] = SBRAT[2];
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
1573 IADS = new CJBig2_ArithIntDecoder(); 1556 IADS = new CJBig2_ArithIntDecoder();
1574 IAIT = new CJBig2_ArithIntDecoder(); 1557 IAIT = new CJBig2_ArithIntDecoder();
1575 IARI = new CJBig2_ArithIntDecoder(); 1558 IARI = new CJBig2_ArithIntDecoder();
1576 IARDW = new CJBig2_ArithIntDecoder(); 1559 IARDW = new CJBig2_ArithIntDecoder();
1577 IARDH = new CJBig2_ArithIntDecoder(); 1560 IARDH = new CJBig2_ArithIntDecoder();
1578 nTmp = 0; 1561 nTmp = 0;
1579 while ((FX_DWORD)(1 << nTmp) < (SDNUMINSYMS + SDNUMNEWSYMS)) { 1562 while ((FX_DWORD)(1 << nTmp) < (SDNUMINSYMS + SDNUMNEWSYMS)) {
1580 nTmp++; 1563 nTmp++;
1581 } 1564 }
1582 IAID = new CJBig2_ArithIaidDecoder((uint8_t)nTmp); 1565 IAID = new CJBig2_ArithIaidDecoder((uint8_t)nTmp);
1583 SDNEWSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS, 1566 SDNEWSYMS =
1584 sizeof(CJBig2_Image*)); 1567 (CJBig2_Image**)FX_Alloc2D(uint8_t, SDNUMNEWSYMS, sizeof(CJBig2_Image*));
Tom Sepez 2015/09/04 01:26:47 ditto
1585 FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*)); 1568 FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*));
1586 HCHEIGHT = 0; 1569 HCHEIGHT = 0;
1587 NSYMSDECODED = 0; 1570 NSYMSDECODED = 0;
1588 while (NSYMSDECODED < SDNUMNEWSYMS) { 1571 while (NSYMSDECODED < SDNUMNEWSYMS) {
1589 BS = NULL; 1572 BS = NULL;
1590 if (IADH->decode(pArithDecoder, &HCDH) == -1) { 1573 if (IADH->decode(pArithDecoder, &HCDH) == -1) {
1591 goto failed; 1574 goto failed;
1592 } 1575 }
1593 HCHEIGHT = HCHEIGHT + HCDH; 1576 HCHEIGHT = HCHEIGHT + HCDH;
1594 if ((int)HCHEIGHT < 0 || (int)HCHEIGHT > JBIG2_MAX_IMAGE_SIZE) { 1577 if ((int)HCHEIGHT < 0 || (int)HCHEIGHT > JBIG2_MAX_IMAGE_SIZE) {
(...skipping 16 matching lines...) Expand all
1611 goto failed; 1594 goto failed;
1612 } else if (HCHEIGHT == 0 || SYMWIDTH == 0) { 1595 } else if (HCHEIGHT == 0 || SYMWIDTH == 0) {
1613 TOTWIDTH = TOTWIDTH + SYMWIDTH; 1596 TOTWIDTH = TOTWIDTH + SYMWIDTH;
1614 SDNEWSYMS[NSYMSDECODED] = NULL; 1597 SDNEWSYMS[NSYMSDECODED] = NULL;
1615 NSYMSDECODED = NSYMSDECODED + 1; 1598 NSYMSDECODED = NSYMSDECODED + 1;
1616 continue; 1599 continue;
1617 } 1600 }
1618 TOTWIDTH = TOTWIDTH + SYMWIDTH; 1601 TOTWIDTH = TOTWIDTH + SYMWIDTH;
1619 } 1602 }
1620 if (SDREFAGG == 0) { 1603 if (SDREFAGG == 0) {
1621 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 1604 pGRD = new CJBig2_GRDProc();
1622 pGRD->MMR = 0; 1605 pGRD->MMR = 0;
1623 pGRD->GBW = SYMWIDTH; 1606 pGRD->GBW = SYMWIDTH;
1624 pGRD->GBH = HCHEIGHT; 1607 pGRD->GBH = HCHEIGHT;
1625 pGRD->GBTEMPLATE = SDTEMPLATE; 1608 pGRD->GBTEMPLATE = SDTEMPLATE;
1626 pGRD->TPGDON = 0; 1609 pGRD->TPGDON = 0;
1627 pGRD->USESKIP = 0; 1610 pGRD->USESKIP = 0;
1628 pGRD->GBAT[0] = SDAT[0]; 1611 pGRD->GBAT[0] = SDAT[0];
1629 pGRD->GBAT[1] = SDAT[1]; 1612 pGRD->GBAT[1] = SDAT[1];
1630 pGRD->GBAT[2] = SDAT[2]; 1613 pGRD->GBAT[2] = SDAT[2];
1631 pGRD->GBAT[3] = SDAT[3]; 1614 pGRD->GBAT[3] = SDAT[3];
1632 pGRD->GBAT[4] = SDAT[4]; 1615 pGRD->GBAT[4] = SDAT[4];
1633 pGRD->GBAT[5] = SDAT[5]; 1616 pGRD->GBAT[5] = SDAT[5];
1634 pGRD->GBAT[6] = SDAT[6]; 1617 pGRD->GBAT[6] = SDAT[6];
1635 pGRD->GBAT[7] = SDAT[7]; 1618 pGRD->GBAT[7] = SDAT[7];
1636 BS = pGRD->decode_Arith(pArithDecoder, gbContext); 1619 BS = pGRD->decode_Arith(pArithDecoder, gbContext);
1637 if (BS == NULL) { 1620 if (BS == NULL) {
1638 delete pGRD; 1621 delete pGRD;
1639 goto failed; 1622 goto failed;
1640 } 1623 }
1641 delete pGRD; 1624 delete pGRD;
1642 } else { 1625 } else {
1643 if (IAAI->decode(pArithDecoder, (int*)&REFAGGNINST) == -1) { 1626 if (IAAI->decode(pArithDecoder, (int*)&REFAGGNINST) == -1) {
1644 goto failed; 1627 goto failed;
1645 } 1628 }
1646 if (REFAGGNINST > 1) { 1629 if (REFAGGNINST > 1) {
1647 CJBig2_TRDProc* pDecoder; 1630 CJBig2_TRDProc* pDecoder;
1648 JBIG2_ALLOC(pDecoder, CJBig2_TRDProc()); 1631 pDecoder = new CJBig2_TRDProc();
1649 pDecoder->SBHUFF = SDHUFF; 1632 pDecoder->SBHUFF = SDHUFF;
1650 pDecoder->SBREFINE = 1; 1633 pDecoder->SBREFINE = 1;
1651 pDecoder->SBW = SYMWIDTH; 1634 pDecoder->SBW = SYMWIDTH;
1652 pDecoder->SBH = HCHEIGHT; 1635 pDecoder->SBH = HCHEIGHT;
1653 pDecoder->SBNUMINSTANCES = REFAGGNINST; 1636 pDecoder->SBNUMINSTANCES = REFAGGNINST;
1654 pDecoder->SBSTRIPS = 1; 1637 pDecoder->SBSTRIPS = 1;
1655 pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; 1638 pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED;
1656 SBNUMSYMS = pDecoder->SBNUMSYMS; 1639 SBNUMSYMS = pDecoder->SBNUMSYMS;
1657 nTmp = 0; 1640 nTmp = 0;
1658 while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { 1641 while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) {
1659 nTmp++; 1642 nTmp++;
1660 } 1643 }
1661 SBSYMCODELEN = (uint8_t)nTmp; 1644 SBSYMCODELEN = (uint8_t)nTmp;
1662 pDecoder->SBSYMCODELEN = SBSYMCODELEN; 1645 pDecoder->SBSYMCODELEN = SBSYMCODELEN;
1663 SBSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 1646 SBSYMS = (CJBig2_Image**)FX_Alloc2D(uint8_t, SBNUMSYMS,
Tom Sepez 2015/09/04 01:26:47 ditto ditto
1664 SBNUMSYMS, sizeof(CJBig2_Image*)); 1647 sizeof(CJBig2_Image*));
1665 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); 1648 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*));
1666 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, 1649 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS,
1667 NSYMSDECODED * sizeof(CJBig2_Image*)); 1650 NSYMSDECODED * sizeof(CJBig2_Image*));
1668 pDecoder->SBSYMS = SBSYMS; 1651 pDecoder->SBSYMS = SBSYMS;
1669 pDecoder->SBDEFPIXEL = 0; 1652 pDecoder->SBDEFPIXEL = 0;
1670 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR; 1653 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR;
1671 pDecoder->TRANSPOSED = 0; 1654 pDecoder->TRANSPOSED = 0;
1672 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT; 1655 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT;
1673 pDecoder->SBDSOFFSET = 0; 1656 pDecoder->SBDSOFFSET = 0;
1674 SBHUFFFS = new CJBig2_HuffmanTable(HuffmanTable_B6, 1657 SBHUFFFS = new CJBig2_HuffmanTable(HuffmanTable_B6,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1714 ids.IADS = IADS; 1697 ids.IADS = IADS;
1715 ids.IAIT = IAIT; 1698 ids.IAIT = IAIT;
1716 ids.IARI = IARI; 1699 ids.IARI = IARI;
1717 ids.IARDW = IARDW; 1700 ids.IARDW = IARDW;
1718 ids.IARDH = IARDH; 1701 ids.IARDH = IARDH;
1719 ids.IARDX = IARDX; 1702 ids.IARDX = IARDX;
1720 ids.IARDY = IARDY; 1703 ids.IARDY = IARDY;
1721 ids.IAID = IAID; 1704 ids.IAID = IAID;
1722 BS = pDecoder->decode_Arith(pArithDecoder, grContext, &ids); 1705 BS = pDecoder->decode_Arith(pArithDecoder, grContext, &ids);
1723 if (BS == NULL) { 1706 if (BS == NULL) {
1724 m_pModule->JBig2_Free(SBSYMS); 1707 FX_Free(SBSYMS);
1725 delete SBHUFFFS; 1708 delete SBHUFFFS;
1726 delete SBHUFFDS; 1709 delete SBHUFFDS;
1727 delete SBHUFFDT; 1710 delete SBHUFFDT;
1728 delete SBHUFFRDW; 1711 delete SBHUFFRDW;
1729 delete SBHUFFRDH; 1712 delete SBHUFFRDH;
1730 delete SBHUFFRDX; 1713 delete SBHUFFRDX;
1731 delete SBHUFFRDY; 1714 delete SBHUFFRDY;
1732 delete SBHUFFRSIZE; 1715 delete SBHUFFRSIZE;
1733 delete pDecoder; 1716 delete pDecoder;
1734 goto failed; 1717 goto failed;
1735 } 1718 }
1736 m_pModule->JBig2_Free(SBSYMS); 1719 FX_Free(SBSYMS);
1737 delete SBHUFFFS; 1720 delete SBHUFFFS;
1738 delete SBHUFFDS; 1721 delete SBHUFFDS;
1739 delete SBHUFFDT; 1722 delete SBHUFFDT;
1740 delete SBHUFFRDW; 1723 delete SBHUFFRDW;
1741 delete SBHUFFRDH; 1724 delete SBHUFFRDH;
1742 delete SBHUFFRDX; 1725 delete SBHUFFRDX;
1743 delete SBHUFFRDY; 1726 delete SBHUFFRDY;
1744 delete SBHUFFRSIZE; 1727 delete SBHUFFRSIZE;
1745 delete pDecoder; 1728 delete pDecoder;
1746 } else if (REFAGGNINST == 1) { 1729 } else if (REFAGGNINST == 1) {
1747 SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; 1730 SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED;
1748 if (IAID->decode(pArithDecoder, (int*)&IDI) == -1) { 1731 if (IAID->decode(pArithDecoder, (int*)&IDI) == -1) {
1749 goto failed; 1732 goto failed;
1750 } 1733 }
1751 if ((IARDX->decode(pArithDecoder, &RDXI) == -1) || 1734 if ((IARDX->decode(pArithDecoder, &RDXI) == -1) ||
1752 (IARDY->decode(pArithDecoder, &RDYI) == -1)) { 1735 (IARDY->decode(pArithDecoder, &RDYI) == -1)) {
1753 goto failed; 1736 goto failed;
1754 } 1737 }
1755 if (IDI >= SBNUMSYMS) { 1738 if (IDI >= SBNUMSYMS) {
1756 goto failed; 1739 goto failed;
1757 } 1740 }
1758 SBSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 1741 SBSYMS = (CJBig2_Image**)FX_Alloc2D(uint8_t, SBNUMSYMS,
Tom Sepez 2015/09/04 01:26:47 ditto ditto ditto (Many other places in the CL).
1759 SBNUMSYMS, sizeof(CJBig2_Image*)); 1742 sizeof(CJBig2_Image*));
1760 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); 1743 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*));
1761 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, 1744 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS,
1762 NSYMSDECODED * sizeof(CJBig2_Image*)); 1745 NSYMSDECODED * sizeof(CJBig2_Image*));
1763 if (!SBSYMS[IDI]) { 1746 if (!SBSYMS[IDI]) {
1764 m_pModule->JBig2_Free(SBSYMS); 1747 FX_Free(SBSYMS);
1765 goto failed; 1748 goto failed;
1766 } 1749 }
1767 JBIG2_ALLOC(pGRRD, CJBig2_GRRDProc()); 1750 pGRRD = new CJBig2_GRRDProc();
1768 pGRRD->GRW = SYMWIDTH; 1751 pGRRD->GRW = SYMWIDTH;
1769 pGRRD->GRH = HCHEIGHT; 1752 pGRRD->GRH = HCHEIGHT;
1770 pGRRD->GRTEMPLATE = SDRTEMPLATE; 1753 pGRRD->GRTEMPLATE = SDRTEMPLATE;
1771 pGRRD->GRREFERENCE = SBSYMS[IDI]; 1754 pGRRD->GRREFERENCE = SBSYMS[IDI];
1772 pGRRD->GRREFERENCEDX = RDXI; 1755 pGRRD->GRREFERENCEDX = RDXI;
1773 pGRRD->GRREFERENCEDY = RDYI; 1756 pGRRD->GRREFERENCEDY = RDYI;
1774 pGRRD->TPGRON = 0; 1757 pGRRD->TPGRON = 0;
1775 pGRRD->GRAT[0] = SDRAT[0]; 1758 pGRRD->GRAT[0] = SDRAT[0];
1776 pGRRD->GRAT[1] = SDRAT[1]; 1759 pGRRD->GRAT[1] = SDRAT[1];
1777 pGRRD->GRAT[2] = SDRAT[2]; 1760 pGRRD->GRAT[2] = SDRAT[2];
1778 pGRRD->GRAT[3] = SDRAT[3]; 1761 pGRRD->GRAT[3] = SDRAT[3];
1779 BS = pGRRD->decode(pArithDecoder, grContext); 1762 BS = pGRRD->decode(pArithDecoder, grContext);
1780 if (BS == NULL) { 1763 if (BS == NULL) {
1781 m_pModule->JBig2_Free(SBSYMS); 1764 FX_Free(SBSYMS);
1782 delete pGRRD; 1765 delete pGRRD;
1783 goto failed; 1766 goto failed;
1784 } 1767 }
1785 m_pModule->JBig2_Free(SBSYMS); 1768 FX_Free(SBSYMS);
1786 delete pGRRD; 1769 delete pGRRD;
1787 } 1770 }
1788 } 1771 }
1789 SDNEWSYMS[NSYMSDECODED] = BS; 1772 SDNEWSYMS[NSYMSDECODED] = BS;
1790 BS = NULL; 1773 BS = NULL;
1791 NSYMSDECODED = NSYMSDECODED + 1; 1774 NSYMSDECODED = NSYMSDECODED + 1;
1792 } 1775 }
1793 } 1776 }
1794 EXINDEX = 0; 1777 EXINDEX = 0;
1795 CUREXFLAG = 0; 1778 CUREXFLAG = 0;
1796 EXFLAGS = (FX_BOOL*)m_pModule->JBig2_Malloc2(sizeof(FX_BOOL), 1779 EXFLAGS = (FX_BOOL*)FX_Alloc2D(uint8_t, sizeof(FX_BOOL),
1797 (SDNUMINSYMS + SDNUMNEWSYMS)); 1780 (SDNUMINSYMS + SDNUMNEWSYMS));
1798 while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { 1781 while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) {
1799 if (IAEX->decode(pArithDecoder, (int*)&EXRUNLENGTH) == -1) { 1782 if (IAEX->decode(pArithDecoder, (int*)&EXRUNLENGTH) == -1) {
1800 m_pModule->JBig2_Free(EXFLAGS); 1783 FX_Free(EXFLAGS);
1801 goto failed; 1784 goto failed;
1802 } 1785 }
1803 if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) { 1786 if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) {
1804 m_pModule->JBig2_Free(EXFLAGS); 1787 FX_Free(EXFLAGS);
1805 goto failed; 1788 goto failed;
1806 } 1789 }
1807 if (EXRUNLENGTH != 0) { 1790 if (EXRUNLENGTH != 0) {
1808 for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) { 1791 for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) {
1809 EXFLAGS[I] = CUREXFLAG; 1792 EXFLAGS[I] = CUREXFLAG;
1810 } 1793 }
1811 } 1794 }
1812 EXINDEX = EXINDEX + EXRUNLENGTH; 1795 EXINDEX = EXINDEX + EXRUNLENGTH;
1813 CUREXFLAG = !CUREXFLAG; 1796 CUREXFLAG = !CUREXFLAG;
1814 } 1797 }
1815 JBIG2_ALLOC(pDict, CJBig2_SymbolDict()); 1798 pDict = new CJBig2_SymbolDict();
1816 pDict->SDNUMEXSYMS = SDNUMEXSYMS; 1799 pDict->SDNUMEXSYMS = SDNUMEXSYMS;
1817 pDict->SDEXSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 1800 pDict->SDEXSYMS =
1818 sizeof(CJBig2_Image*), SDNUMEXSYMS); 1801 (CJBig2_Image**)FX_Alloc2D(uint8_t, sizeof(CJBig2_Image*), SDNUMEXSYMS);
1819 I = J = 0; 1802 I = J = 0;
1820 for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) { 1803 for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) {
1821 if (EXFLAGS[I] && J < SDNUMEXSYMS) { 1804 if (EXFLAGS[I] && J < SDNUMEXSYMS) {
1822 if (I < SDNUMINSYMS) { 1805 if (I < SDNUMINSYMS) {
1823 JBIG2_ALLOC(pDict->SDEXSYMS[J], CJBig2_Image(*SDINSYMS[I])); 1806 pDict->SDEXSYMS[J] = new CJBig2_Image(*SDINSYMS[I]);
1824 } else { 1807 } else {
1825 pDict->SDEXSYMS[J] = SDNEWSYMS[I - SDNUMINSYMS]; 1808 pDict->SDEXSYMS[J] = SDNEWSYMS[I - SDNUMINSYMS];
1826 } 1809 }
1827 J = J + 1; 1810 J = J + 1;
1828 } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) { 1811 } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) {
1829 delete SDNEWSYMS[I - SDNUMINSYMS]; 1812 delete SDNEWSYMS[I - SDNUMINSYMS];
1830 } 1813 }
1831 } 1814 }
1832 if (J < SDNUMEXSYMS) { 1815 if (J < SDNUMEXSYMS) {
1833 pDict->SDNUMEXSYMS = J; 1816 pDict->SDNUMEXSYMS = J;
1834 } 1817 }
1835 m_pModule->JBig2_Free(EXFLAGS); 1818 FX_Free(EXFLAGS);
1836 m_pModule->JBig2_Free(SDNEWSYMS); 1819 FX_Free(SDNEWSYMS);
1837 delete IADH; 1820 delete IADH;
Tom Sepez 2015/09/04 01:26:47 nit: someone needs an unique_ptr.
Lei Zhang 2015/09/04 21:35:00 Planned in a follow-up, and getting rid of all the
1838 delete IADW; 1821 delete IADW;
1839 delete IAAI; 1822 delete IAAI;
1840 delete IARDX; 1823 delete IARDX;
1841 delete IARDY; 1824 delete IARDY;
1842 delete IAEX; 1825 delete IAEX;
1843 delete IAID; 1826 delete IAID;
1844 delete IADT; 1827 delete IADT;
1845 delete IAFS; 1828 delete IAFS;
1846 delete IADS; 1829 delete IADS;
1847 delete IAIT; 1830 delete IAIT;
1848 delete IARI; 1831 delete IARI;
1849 delete IARDW; 1832 delete IARDW;
1850 delete IARDH; 1833 delete IARDH;
1851 return pDict; 1834 return pDict;
1852 failed: 1835 failed:
1853 for (I = 0; I < NSYMSDECODED; I++) { 1836 for (I = 0; I < NSYMSDECODED; I++) {
1854 if (SDNEWSYMS[I]) { 1837 if (SDNEWSYMS[I]) {
1855 delete SDNEWSYMS[I]; 1838 delete SDNEWSYMS[I];
1856 SDNEWSYMS[I] = NULL; 1839 SDNEWSYMS[I] = NULL;
1857 } 1840 }
1858 } 1841 }
1859 m_pModule->JBig2_Free(SDNEWSYMS); 1842 FX_Free(SDNEWSYMS);
1860 delete IADH; 1843 delete IADH;
1861 delete IADW; 1844 delete IADW;
1862 delete IAAI; 1845 delete IAAI;
1863 delete IARDX; 1846 delete IARDX;
1864 delete IARDY; 1847 delete IARDY;
1865 delete IAEX; 1848 delete IAEX;
1866 delete IAID; 1849 delete IAID;
1867 delete IADT; 1850 delete IADT;
1868 delete IAFS; 1851 delete IAFS;
1869 delete IADS; 1852 delete IADS;
(...skipping 30 matching lines...) Expand all
1900 FX_DWORD stride; 1883 FX_DWORD stride;
1901 CJBig2_Image** SBSYMS; 1884 CJBig2_Image** SBSYMS;
1902 CJBig2_HuffmanTable *SBHUFFFS, *SBHUFFDS, *SBHUFFDT, *SBHUFFRDW, *SBHUFFRDH, 1885 CJBig2_HuffmanTable *SBHUFFFS, *SBHUFFDS, *SBHUFFDT, *SBHUFFRDW, *SBHUFFRDH,
1903 *SBHUFFRDX, *SBHUFFRDY, *SBHUFFRSIZE, *pTable; 1886 *SBHUFFRDX, *SBHUFFRDY, *SBHUFFRSIZE, *pTable;
1904 CJBig2_HuffmanDecoder* pHuffmanDecoder; 1887 CJBig2_HuffmanDecoder* pHuffmanDecoder;
1905 CJBig2_GRRDProc* pGRRD; 1888 CJBig2_GRRDProc* pGRRD;
1906 CJBig2_ArithDecoder* pArithDecoder; 1889 CJBig2_ArithDecoder* pArithDecoder;
1907 CJBig2_GRDProc* pGRD; 1890 CJBig2_GRDProc* pGRD;
1908 CJBig2_SymbolDict* pDict; 1891 CJBig2_SymbolDict* pDict;
1909 pHuffmanDecoder = new CJBig2_HuffmanDecoder(pStream); 1892 pHuffmanDecoder = new CJBig2_HuffmanDecoder(pStream);
1910 SDNEWSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS, 1893 SDNEWSYMS =
1911 sizeof(CJBig2_Image*)); 1894 (CJBig2_Image**)FX_Alloc2D(uint8_t, SDNUMNEWSYMS, sizeof(CJBig2_Image*));
1912 FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*)); 1895 FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*));
1913 SDNEWSYMWIDTHS = NULL; 1896 SDNEWSYMWIDTHS = NULL;
1914 BHC = NULL; 1897 BHC = NULL;
1915 if (SDREFAGG == 0) { 1898 if (SDREFAGG == 0) {
1916 SDNEWSYMWIDTHS = 1899 SDNEWSYMWIDTHS =
1917 (FX_DWORD*)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS, sizeof(FX_DWORD)); 1900 (FX_DWORD*)FX_Alloc2D(uint8_t, SDNUMNEWSYMS, sizeof(FX_DWORD));
1918 FXSYS_memset(SDNEWSYMWIDTHS, 0, SDNUMNEWSYMS * sizeof(FX_DWORD)); 1901 FXSYS_memset(SDNEWSYMWIDTHS, 0, SDNUMNEWSYMS * sizeof(FX_DWORD));
1919 } 1902 }
1920 HCHEIGHT = 0; 1903 HCHEIGHT = 0;
1921 NSYMSDECODED = 0; 1904 NSYMSDECODED = 0;
1922 BS = NULL; 1905 BS = NULL;
1923 while (NSYMSDECODED < SDNUMNEWSYMS) { 1906 while (NSYMSDECODED < SDNUMNEWSYMS) {
1924 if (pHuffmanDecoder->decodeAValue(SDHUFFDH, &HCDH) != 0) { 1907 if (pHuffmanDecoder->decodeAValue(SDHUFFDH, &HCDH) != 0) {
1925 goto failed; 1908 goto failed;
1926 } 1909 }
1927 HCHEIGHT = HCHEIGHT + HCDH; 1910 HCHEIGHT = HCHEIGHT + HCDH;
(...skipping 24 matching lines...) Expand all
1952 } 1935 }
1953 TOTWIDTH = TOTWIDTH + SYMWIDTH; 1936 TOTWIDTH = TOTWIDTH + SYMWIDTH;
1954 } 1937 }
1955 if (SDREFAGG == 1) { 1938 if (SDREFAGG == 1) {
1956 if (pHuffmanDecoder->decodeAValue(SDHUFFAGGINST, (int*)&REFAGGNINST) != 1939 if (pHuffmanDecoder->decodeAValue(SDHUFFAGGINST, (int*)&REFAGGNINST) !=
1957 0) { 1940 0) {
1958 goto failed; 1941 goto failed;
1959 } 1942 }
1960 BS = NULL; 1943 BS = NULL;
1961 if (REFAGGNINST > 1) { 1944 if (REFAGGNINST > 1) {
1962 CJBig2_TRDProc* pDecoder; 1945 CJBig2_TRDProc* pDecoder = new CJBig2_TRDProc();
1963 JBIG2_ALLOC(pDecoder, CJBig2_TRDProc());
1964 pDecoder->SBHUFF = SDHUFF; 1946 pDecoder->SBHUFF = SDHUFF;
1965 pDecoder->SBREFINE = 1; 1947 pDecoder->SBREFINE = 1;
1966 pDecoder->SBW = SYMWIDTH; 1948 pDecoder->SBW = SYMWIDTH;
1967 pDecoder->SBH = HCHEIGHT; 1949 pDecoder->SBH = HCHEIGHT;
1968 pDecoder->SBNUMINSTANCES = REFAGGNINST; 1950 pDecoder->SBNUMINSTANCES = REFAGGNINST;
1969 pDecoder->SBSTRIPS = 1; 1951 pDecoder->SBSTRIPS = 1;
1970 pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; 1952 pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED;
1971 SBNUMSYMS = pDecoder->SBNUMSYMS; 1953 SBNUMSYMS = pDecoder->SBNUMSYMS;
1972 SBSYMCODES = (JBig2HuffmanCode*)m_pModule->JBig2_Malloc2( 1954 SBSYMCODES = (JBig2HuffmanCode*)FX_Alloc2D(uint8_t, SBNUMSYMS,
1973 SBNUMSYMS, sizeof(JBig2HuffmanCode)); 1955 sizeof(JBig2HuffmanCode));
1974 nTmp = 1; 1956 nTmp = 1;
1975 while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { 1957 while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) {
1976 nTmp++; 1958 nTmp++;
1977 } 1959 }
1978 for (I = 0; I < SBNUMSYMS; I++) { 1960 for (I = 0; I < SBNUMSYMS; I++) {
1979 SBSYMCODES[I].codelen = nTmp; 1961 SBSYMCODES[I].codelen = nTmp;
1980 SBSYMCODES[I].code = I; 1962 SBSYMCODES[I].code = I;
1981 } 1963 }
1982 pDecoder->SBSYMCODES = SBSYMCODES; 1964 pDecoder->SBSYMCODES = SBSYMCODES;
1983 SBSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 1965 SBSYMS = (CJBig2_Image**)FX_Alloc2D(uint8_t, SBNUMSYMS,
1984 SBNUMSYMS, sizeof(CJBig2_Image*)); 1966 sizeof(CJBig2_Image*));
1985 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); 1967 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*));
1986 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, 1968 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS,
1987 NSYMSDECODED * sizeof(CJBig2_Image*)); 1969 NSYMSDECODED * sizeof(CJBig2_Image*));
1988 pDecoder->SBSYMS = SBSYMS; 1970 pDecoder->SBSYMS = SBSYMS;
1989 pDecoder->SBDEFPIXEL = 0; 1971 pDecoder->SBDEFPIXEL = 0;
1990 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR; 1972 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR;
1991 pDecoder->TRANSPOSED = 0; 1973 pDecoder->TRANSPOSED = 0;
1992 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT; 1974 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT;
1993 pDecoder->SBDSOFFSET = 0; 1975 pDecoder->SBDSOFFSET = 0;
1994 SBHUFFFS = new CJBig2_HuffmanTable(HuffmanTable_B6, 1976 SBHUFFFS = new CJBig2_HuffmanTable(HuffmanTable_B6,
(...skipping 28 matching lines...) Expand all
2023 pDecoder->SBHUFFRDX = SBHUFFRDX; 2005 pDecoder->SBHUFFRDX = SBHUFFRDX;
2024 pDecoder->SBHUFFRDY = SBHUFFRDY; 2006 pDecoder->SBHUFFRDY = SBHUFFRDY;
2025 pDecoder->SBHUFFRSIZE = SBHUFFRSIZE; 2007 pDecoder->SBHUFFRSIZE = SBHUFFRSIZE;
2026 pDecoder->SBRTEMPLATE = SDRTEMPLATE; 2008 pDecoder->SBRTEMPLATE = SDRTEMPLATE;
2027 pDecoder->SBRAT[0] = SDRAT[0]; 2009 pDecoder->SBRAT[0] = SDRAT[0];
2028 pDecoder->SBRAT[1] = SDRAT[1]; 2010 pDecoder->SBRAT[1] = SDRAT[1];
2029 pDecoder->SBRAT[2] = SDRAT[2]; 2011 pDecoder->SBRAT[2] = SDRAT[2];
2030 pDecoder->SBRAT[3] = SDRAT[3]; 2012 pDecoder->SBRAT[3] = SDRAT[3];
2031 BS = pDecoder->decode_Huffman(pStream, grContext); 2013 BS = pDecoder->decode_Huffman(pStream, grContext);
2032 if (BS == NULL) { 2014 if (BS == NULL) {
2033 m_pModule->JBig2_Free(SBSYMCODES); 2015 FX_Free(SBSYMCODES);
2034 m_pModule->JBig2_Free(SBSYMS); 2016 FX_Free(SBSYMS);
2035 delete SBHUFFFS; 2017 delete SBHUFFFS;
2036 delete SBHUFFDS; 2018 delete SBHUFFDS;
2037 delete SBHUFFDT; 2019 delete SBHUFFDT;
2038 delete SBHUFFRDW; 2020 delete SBHUFFRDW;
2039 delete SBHUFFRDH; 2021 delete SBHUFFRDH;
2040 delete SBHUFFRDX; 2022 delete SBHUFFRDX;
2041 delete SBHUFFRDY; 2023 delete SBHUFFRDY;
2042 delete SBHUFFRSIZE; 2024 delete SBHUFFRSIZE;
2043 delete pDecoder; 2025 delete pDecoder;
2044 goto failed; 2026 goto failed;
2045 } 2027 }
2046 m_pModule->JBig2_Free(SBSYMCODES); 2028 FX_Free(SBSYMCODES);
2047 m_pModule->JBig2_Free(SBSYMS); 2029 FX_Free(SBSYMS);
2048 delete SBHUFFFS; 2030 delete SBHUFFFS;
2049 delete SBHUFFDS; 2031 delete SBHUFFDS;
2050 delete SBHUFFDT; 2032 delete SBHUFFDT;
2051 delete SBHUFFRDW; 2033 delete SBHUFFRDW;
2052 delete SBHUFFRDH; 2034 delete SBHUFFRDH;
2053 delete SBHUFFRDX; 2035 delete SBHUFFRDX;
2054 delete SBHUFFRDY; 2036 delete SBHUFFRDY;
2055 delete SBHUFFRSIZE; 2037 delete SBHUFFRSIZE;
2056 delete pDecoder; 2038 delete pDecoder;
2057 } else if (REFAGGNINST == 1) { 2039 } else if (REFAGGNINST == 1) {
2058 SBNUMSYMS = SDNUMINSYMS + SDNUMNEWSYMS; 2040 SBNUMSYMS = SDNUMINSYMS + SDNUMNEWSYMS;
2059 nTmp = 1; 2041 nTmp = 1;
2060 while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { 2042 while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) {
2061 nTmp++; 2043 nTmp++;
2062 } 2044 }
2063 SBSYMCODELEN = (uint8_t)nTmp; 2045 SBSYMCODELEN = (uint8_t)nTmp;
2064 SBSYMCODES = (JBig2HuffmanCode*)m_pModule->JBig2_Malloc2( 2046 SBSYMCODES = (JBig2HuffmanCode*)FX_Alloc2D(uint8_t, SBNUMSYMS,
2065 SBNUMSYMS, sizeof(JBig2HuffmanCode)); 2047 sizeof(JBig2HuffmanCode));
2066 for (I = 0; I < SBNUMSYMS; I++) { 2048 for (I = 0; I < SBNUMSYMS; I++) {
2067 SBSYMCODES[I].codelen = SBSYMCODELEN; 2049 SBSYMCODES[I].codelen = SBSYMCODELEN;
2068 SBSYMCODES[I].code = I; 2050 SBSYMCODES[I].code = I;
2069 } 2051 }
2070 nVal = 0; 2052 nVal = 0;
2071 nBits = 0; 2053 nBits = 0;
2072 for (;;) { 2054 for (;;) {
2073 if (pStream->read1Bit(&nTmp) != 0) { 2055 if (pStream->read1Bit(&nTmp) != 0) {
2074 m_pModule->JBig2_Free(SBSYMCODES); 2056 FX_Free(SBSYMCODES);
2075 goto failed; 2057 goto failed;
2076 } 2058 }
2077 nVal = (nVal << 1) | nTmp; 2059 nVal = (nVal << 1) | nTmp;
2078 for (IDI = 0; IDI < SBNUMSYMS; IDI++) { 2060 for (IDI = 0; IDI < SBNUMSYMS; IDI++) {
2079 if ((nVal == SBSYMCODES[IDI].code) && 2061 if ((nVal == SBSYMCODES[IDI].code) &&
2080 (nBits == SBSYMCODES[IDI].codelen)) { 2062 (nBits == SBSYMCODES[IDI].codelen)) {
2081 break; 2063 break;
2082 } 2064 }
2083 } 2065 }
2084 if (IDI < SBNUMSYMS) { 2066 if (IDI < SBNUMSYMS) {
2085 break; 2067 break;
2086 } 2068 }
2087 } 2069 }
2088 m_pModule->JBig2_Free(SBSYMCODES); 2070 FX_Free(SBSYMCODES);
2089 SBHUFFRDX = new CJBig2_HuffmanTable(HuffmanTable_B15, 2071 SBHUFFRDX = new CJBig2_HuffmanTable(HuffmanTable_B15,
2090 FX_ArraySize(HuffmanTable_B15), 2072 FX_ArraySize(HuffmanTable_B15),
2091 HuffmanTable_HTOOB_B15); 2073 HuffmanTable_HTOOB_B15);
2092 SBHUFFRSIZE = new CJBig2_HuffmanTable(HuffmanTable_B1, 2074 SBHUFFRSIZE = new CJBig2_HuffmanTable(HuffmanTable_B1,
2093 FX_ArraySize(HuffmanTable_B1), 2075 FX_ArraySize(HuffmanTable_B1),
2094 HuffmanTable_HTOOB_B1); 2076 HuffmanTable_HTOOB_B1);
2095 if ((pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDXI) != 0) || 2077 if ((pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDXI) != 0) ||
2096 (pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDYI) != 0) || 2078 (pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDYI) != 0) ||
2097 (pHuffmanDecoder->decodeAValue(SBHUFFRSIZE, &nVal) != 0)) { 2079 (pHuffmanDecoder->decodeAValue(SBHUFFRSIZE, &nVal) != 0)) {
2098 delete SBHUFFRDX; 2080 delete SBHUFFRDX;
2099 delete SBHUFFRSIZE; 2081 delete SBHUFFRSIZE;
2100 goto failed; 2082 goto failed;
2101 } 2083 }
2102 delete SBHUFFRDX; 2084 delete SBHUFFRDX;
2103 delete SBHUFFRSIZE; 2085 delete SBHUFFRSIZE;
2104 pStream->alignByte(); 2086 pStream->alignByte();
2105 nTmp = pStream->getOffset(); 2087 nTmp = pStream->getOffset();
2106 SBSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 2088 SBSYMS = (CJBig2_Image**)FX_Alloc2D(uint8_t, SBNUMSYMS,
2107 SBNUMSYMS, sizeof(CJBig2_Image*)); 2089 sizeof(CJBig2_Image*));
2108 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); 2090 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*));
2109 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, 2091 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS,
2110 NSYMSDECODED * sizeof(CJBig2_Image*)); 2092 NSYMSDECODED * sizeof(CJBig2_Image*));
2111 JBIG2_ALLOC(pGRRD, CJBig2_GRRDProc()); 2093 pGRRD = new CJBig2_GRRDProc();
2112 pGRRD->GRW = SYMWIDTH; 2094 pGRRD->GRW = SYMWIDTH;
2113 pGRRD->GRH = HCHEIGHT; 2095 pGRRD->GRH = HCHEIGHT;
2114 pGRRD->GRTEMPLATE = SDRTEMPLATE; 2096 pGRRD->GRTEMPLATE = SDRTEMPLATE;
2115 pGRRD->GRREFERENCE = SBSYMS[IDI]; 2097 pGRRD->GRREFERENCE = SBSYMS[IDI];
2116 pGRRD->GRREFERENCEDX = RDXI; 2098 pGRRD->GRREFERENCEDX = RDXI;
2117 pGRRD->GRREFERENCEDY = RDYI; 2099 pGRRD->GRREFERENCEDY = RDYI;
2118 pGRRD->TPGRON = 0; 2100 pGRRD->TPGRON = 0;
2119 pGRRD->GRAT[0] = SDRAT[0]; 2101 pGRRD->GRAT[0] = SDRAT[0];
2120 pGRRD->GRAT[1] = SDRAT[1]; 2102 pGRRD->GRAT[1] = SDRAT[1];
2121 pGRRD->GRAT[2] = SDRAT[2]; 2103 pGRRD->GRAT[2] = SDRAT[2];
2122 pGRRD->GRAT[3] = SDRAT[3]; 2104 pGRRD->GRAT[3] = SDRAT[3];
2123 pArithDecoder = new CJBig2_ArithDecoder(pStream); 2105 pArithDecoder = new CJBig2_ArithDecoder(pStream);
2124 BS = pGRRD->decode(pArithDecoder, grContext); 2106 BS = pGRRD->decode(pArithDecoder, grContext);
2125 if (BS == NULL) { 2107 if (BS == NULL) {
2126 m_pModule->JBig2_Free(SBSYMS); 2108 FX_Free(SBSYMS);
2127 delete pGRRD; 2109 delete pGRRD;
2128 delete pArithDecoder; 2110 delete pArithDecoder;
2129 goto failed; 2111 goto failed;
2130 } 2112 }
2131 pStream->alignByte(); 2113 pStream->alignByte();
2132 pStream->offset(2); 2114 pStream->offset(2);
2133 if ((FX_DWORD)nVal != (pStream->getOffset() - nTmp)) { 2115 if ((FX_DWORD)nVal != (pStream->getOffset() - nTmp)) {
2134 delete BS; 2116 delete BS;
2135 m_pModule->JBig2_Free(SBSYMS); 2117 FX_Free(SBSYMS);
2136 delete pGRRD; 2118 delete pGRRD;
2137 delete pArithDecoder; 2119 delete pArithDecoder;
2138 goto failed; 2120 goto failed;
2139 } 2121 }
2140 m_pModule->JBig2_Free(SBSYMS); 2122 FX_Free(SBSYMS);
2141 delete pGRRD; 2123 delete pGRRD;
2142 delete pArithDecoder; 2124 delete pArithDecoder;
2143 } 2125 }
2144 SDNEWSYMS[NSYMSDECODED] = BS; 2126 SDNEWSYMS[NSYMSDECODED] = BS;
2145 } 2127 }
2146 if (SDREFAGG == 0) { 2128 if (SDREFAGG == 0) {
2147 SDNEWSYMWIDTHS[NSYMSDECODED] = SYMWIDTH; 2129 SDNEWSYMWIDTHS[NSYMSDECODED] = SYMWIDTH;
2148 } 2130 }
2149 NSYMSDECODED = NSYMSDECODED + 1; 2131 NSYMSDECODED = NSYMSDECODED + 1;
2150 } 2132 }
2151 if (SDREFAGG == 0) { 2133 if (SDREFAGG == 0) {
2152 if (pHuffmanDecoder->decodeAValue(SDHUFFBMSIZE, (int32_t*)&BMSIZE) != 0) { 2134 if (pHuffmanDecoder->decodeAValue(SDHUFFBMSIZE, (int32_t*)&BMSIZE) != 0) {
2153 goto failed; 2135 goto failed;
2154 } 2136 }
2155 pStream->alignByte(); 2137 pStream->alignByte();
2156 if (BMSIZE == 0) { 2138 if (BMSIZE == 0) {
2157 stride = (TOTWIDTH + 7) >> 3; 2139 stride = (TOTWIDTH + 7) >> 3;
2158 if (pStream->getByteLeft() >= stride * HCHEIGHT) { 2140 if (pStream->getByteLeft() >= stride * HCHEIGHT) {
2159 JBIG2_ALLOC(BHC, CJBig2_Image(TOTWIDTH, HCHEIGHT)); 2141 BHC = new CJBig2_Image(TOTWIDTH, HCHEIGHT);
2160 for (I = 0; I < HCHEIGHT; I++) { 2142 for (I = 0; I < HCHEIGHT; I++) {
2161 JBIG2_memcpy(BHC->m_pData + I * BHC->m_nStride, 2143 JBIG2_memcpy(BHC->m_pData + I * BHC->m_nStride,
2162 pStream->getPointer(), stride); 2144 pStream->getPointer(), stride);
2163 pStream->offset(stride); 2145 pStream->offset(stride);
2164 } 2146 }
2165 } else { 2147 } else {
2166 goto failed; 2148 goto failed;
2167 } 2149 }
2168 } else { 2150 } else {
2169 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 2151 pGRD = new CJBig2_GRDProc();
2170 pGRD->MMR = 1; 2152 pGRD->MMR = 1;
2171 pGRD->GBW = TOTWIDTH; 2153 pGRD->GBW = TOTWIDTH;
2172 pGRD->GBH = HCHEIGHT; 2154 pGRD->GBH = HCHEIGHT;
2173 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHC, pStream); 2155 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHC, pStream);
2174 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { 2156 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) {
2175 pGRD->Continue_decode(pPause); 2157 pGRD->Continue_decode(pPause);
2176 } 2158 }
2177 delete pGRD; 2159 delete pGRD;
2178 pStream->alignByte(); 2160 pStream->alignByte();
2179 } 2161 }
2180 nTmp = 0; 2162 nTmp = 0;
2181 if (!BHC) { 2163 if (!BHC) {
2182 continue; 2164 continue;
2183 } 2165 }
2184 for (I = HCFIRSTSYM; I < NSYMSDECODED; I++) { 2166 for (I = HCFIRSTSYM; I < NSYMSDECODED; I++) {
2185 SDNEWSYMS[I] = BHC->subImage(nTmp, 0, SDNEWSYMWIDTHS[I], HCHEIGHT); 2167 SDNEWSYMS[I] = BHC->subImage(nTmp, 0, SDNEWSYMWIDTHS[I], HCHEIGHT);
2186 nTmp += SDNEWSYMWIDTHS[I]; 2168 nTmp += SDNEWSYMWIDTHS[I];
2187 } 2169 }
2188 delete BHC; 2170 delete BHC;
2189 BHC = NULL; 2171 BHC = NULL;
2190 } 2172 }
2191 } 2173 }
2192 EXINDEX = 0; 2174 EXINDEX = 0;
2193 CUREXFLAG = 0; 2175 CUREXFLAG = 0;
2194 pTable = new CJBig2_HuffmanTable( 2176 pTable = new CJBig2_HuffmanTable(
2195 HuffmanTable_B1, FX_ArraySize(HuffmanTable_B1), HuffmanTable_HTOOB_B1); 2177 HuffmanTable_B1, FX_ArraySize(HuffmanTable_B1), HuffmanTable_HTOOB_B1);
2196 EXFLAGS = (FX_BOOL*)m_pModule->JBig2_Malloc2(sizeof(FX_BOOL), 2178 EXFLAGS = (FX_BOOL*)FX_Alloc2D(uint8_t, sizeof(FX_BOOL),
2197 (SDNUMINSYMS + SDNUMNEWSYMS)); 2179 (SDNUMINSYMS + SDNUMNEWSYMS));
2198 while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { 2180 while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) {
2199 if (pHuffmanDecoder->decodeAValue(pTable, (int*)&EXRUNLENGTH) != 0) { 2181 if (pHuffmanDecoder->decodeAValue(pTable, (int*)&EXRUNLENGTH) != 0) {
2200 delete pTable; 2182 delete pTable;
2201 m_pModule->JBig2_Free(EXFLAGS); 2183 FX_Free(EXFLAGS);
2202 goto failed; 2184 goto failed;
2203 } 2185 }
2204 if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) { 2186 if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) {
2205 delete pTable; 2187 delete pTable;
2206 m_pModule->JBig2_Free(EXFLAGS); 2188 FX_Free(EXFLAGS);
2207 goto failed; 2189 goto failed;
2208 } 2190 }
2209 if (EXRUNLENGTH != 0) { 2191 if (EXRUNLENGTH != 0) {
2210 for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) { 2192 for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) {
2211 EXFLAGS[I] = CUREXFLAG; 2193 EXFLAGS[I] = CUREXFLAG;
2212 } 2194 }
2213 } 2195 }
2214 EXINDEX = EXINDEX + EXRUNLENGTH; 2196 EXINDEX = EXINDEX + EXRUNLENGTH;
2215 CUREXFLAG = !CUREXFLAG; 2197 CUREXFLAG = !CUREXFLAG;
2216 } 2198 }
2217 delete pTable; 2199 delete pTable;
2218 JBIG2_ALLOC(pDict, CJBig2_SymbolDict()); 2200 pDict = new CJBig2_SymbolDict();
2219 pDict->SDNUMEXSYMS = SDNUMEXSYMS; 2201 pDict->SDNUMEXSYMS = SDNUMEXSYMS;
2220 pDict->SDEXSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 2202 pDict->SDEXSYMS =
2221 sizeof(CJBig2_Image*), SDNUMEXSYMS); 2203 (CJBig2_Image**)FX_Alloc2D(uint8_t, sizeof(CJBig2_Image*), SDNUMEXSYMS);
2222 I = J = 0; 2204 I = J = 0;
2223 for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) { 2205 for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) {
2224 if (EXFLAGS[I] && J < SDNUMEXSYMS) { 2206 if (EXFLAGS[I] && J < SDNUMEXSYMS) {
2225 if (I < SDNUMINSYMS) { 2207 if (I < SDNUMINSYMS) {
2226 JBIG2_ALLOC(pDict->SDEXSYMS[J], CJBig2_Image(*SDINSYMS[I])); 2208 pDict->SDEXSYMS[J] = new CJBig2_Image(*SDINSYMS[I]);
2227 } else { 2209 } else {
2228 pDict->SDEXSYMS[J] = SDNEWSYMS[I - SDNUMINSYMS]; 2210 pDict->SDEXSYMS[J] = SDNEWSYMS[I - SDNUMINSYMS];
2229 } 2211 }
2230 J = J + 1; 2212 J = J + 1;
2231 } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) { 2213 } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) {
2232 delete SDNEWSYMS[I - SDNUMINSYMS]; 2214 delete SDNEWSYMS[I - SDNUMINSYMS];
2233 } 2215 }
2234 } 2216 }
2235 if (J < SDNUMEXSYMS) { 2217 if (J < SDNUMEXSYMS) {
2236 pDict->SDNUMEXSYMS = J; 2218 pDict->SDNUMEXSYMS = J;
2237 } 2219 }
2238 m_pModule->JBig2_Free(EXFLAGS); 2220 FX_Free(EXFLAGS);
2239 m_pModule->JBig2_Free(SDNEWSYMS); 2221 FX_Free(SDNEWSYMS);
2240 if (SDREFAGG == 0) { 2222 if (SDREFAGG == 0) {
2241 m_pModule->JBig2_Free(SDNEWSYMWIDTHS); 2223 FX_Free(SDNEWSYMWIDTHS);
2242 } 2224 }
2243 delete pHuffmanDecoder; 2225 delete pHuffmanDecoder;
2244 return pDict; 2226 return pDict;
2245 failed: 2227 failed:
2246 for (I = 0; I < NSYMSDECODED; I++) { 2228 for (I = 0; I < NSYMSDECODED; I++) {
2247 delete SDNEWSYMS[I]; 2229 delete SDNEWSYMS[I];
2248 } 2230 }
2249 m_pModule->JBig2_Free(SDNEWSYMS); 2231 FX_Free(SDNEWSYMS);
2250 if (SDREFAGG == 0) { 2232 if (SDREFAGG == 0) {
2251 m_pModule->JBig2_Free(SDNEWSYMWIDTHS); 2233 FX_Free(SDNEWSYMWIDTHS);
2252 } 2234 }
2253 delete pHuffmanDecoder; 2235 delete pHuffmanDecoder;
2254 return NULL; 2236 return NULL;
2255 } 2237 }
2256 CJBig2_Image* CJBig2_HTRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, 2238 CJBig2_Image* CJBig2_HTRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder,
2257 JBig2ArithCtx* gbContext, 2239 JBig2ArithCtx* gbContext,
2258 IFX_Pause* pPause) { 2240 IFX_Pause* pPause) {
2259 FX_DWORD ng, mg; 2241 FX_DWORD ng, mg;
2260 int32_t x, y; 2242 int32_t x, y;
2261 CJBig2_Image* HSKIP;
2262 FX_DWORD HBPP; 2243 FX_DWORD HBPP;
2263 FX_DWORD* GI; 2244 FX_DWORD* GI;
2264 CJBig2_Image* HTREG; 2245 CJBig2_Image* HSKIP = nullptr;
2265 CJBig2_GSIDProc* pGID; 2246 CJBig2_Image* HTREG = new CJBig2_Image(HBW, HBH);
2266 JBIG2_ALLOC(HTREG, CJBig2_Image(HBW, HBH));
2267 HTREG->fill(HDEFPIXEL); 2247 HTREG->fill(HDEFPIXEL);
2268 HSKIP = NULL;
2269 if (HENABLESKIP == 1) { 2248 if (HENABLESKIP == 1) {
2270 JBIG2_ALLOC(HSKIP, CJBig2_Image(HGW, HGH)); 2249 HSKIP = new CJBig2_Image(HGW, HGH);
2271 for (mg = 0; mg < HGH; mg++) { 2250 for (mg = 0; mg < HGH; mg++) {
2272 for (ng = 0; ng < HGW; ng++) { 2251 for (ng = 0; ng < HGW; ng++) {
2273 x = (HGX + mg * HRY + ng * HRX) >> 8; 2252 x = (HGX + mg * HRY + ng * HRX) >> 8;
2274 y = (HGY + mg * HRX - ng * HRY) >> 8; 2253 y = (HGY + mg * HRX - ng * HRY) >> 8;
2275 if ((x + HPW <= 0) | (x >= (int32_t)HBW) | (y + HPH <= 0) | 2254 if ((x + HPW <= 0) | (x >= (int32_t)HBW) | (y + HPH <= 0) |
2276 (y >= (int32_t)HPH)) { 2255 (y >= (int32_t)HPH)) {
2277 HSKIP->setPixel(ng, mg, 1); 2256 HSKIP->setPixel(ng, mg, 1);
2278 } else { 2257 } else {
2279 HSKIP->setPixel(ng, mg, 0); 2258 HSKIP->setPixel(ng, mg, 0);
2280 } 2259 }
2281 } 2260 }
2282 } 2261 }
2283 } 2262 }
2284 HBPP = 1; 2263 HBPP = 1;
2285 while ((FX_DWORD)(1 << HBPP) < HNUMPATS) { 2264 while ((FX_DWORD)(1 << HBPP) < HNUMPATS) {
2286 HBPP++; 2265 HBPP++;
2287 } 2266 }
2288 JBIG2_ALLOC(pGID, CJBig2_GSIDProc()); 2267 CJBig2_GSIDProc* pGID = new CJBig2_GSIDProc();
2289 pGID->GSMMR = HMMR; 2268 pGID->GSMMR = HMMR;
2290 pGID->GSW = HGW; 2269 pGID->GSW = HGW;
2291 pGID->GSH = HGH; 2270 pGID->GSH = HGH;
2292 pGID->GSBPP = (uint8_t)HBPP; 2271 pGID->GSBPP = (uint8_t)HBPP;
2293 pGID->GSUSESKIP = HENABLESKIP; 2272 pGID->GSUSESKIP = HENABLESKIP;
2294 pGID->GSKIP = HSKIP; 2273 pGID->GSKIP = HSKIP;
2295 pGID->GSTEMPLATE = HTEMPLATE; 2274 pGID->GSTEMPLATE = HTEMPLATE;
2296 GI = pGID->decode_Arith(pArithDecoder, gbContext, pPause); 2275 GI = pGID->decode_Arith(pArithDecoder, gbContext, pPause);
2297 if (GI == NULL) { 2276 if (GI == NULL) {
2298 goto failed; 2277 goto failed;
2299 } 2278 }
2300 for (mg = 0; mg < HGH; mg++) { 2279 for (mg = 0; mg < HGH; mg++) {
2301 for (ng = 0; ng < HGW; ng++) { 2280 for (ng = 0; ng < HGW; ng++) {
2302 x = (HGX + mg * HRY + ng * HRX) >> 8; 2281 x = (HGX + mg * HRY + ng * HRX) >> 8;
2303 y = (HGY + mg * HRX - ng * HRY) >> 8; 2282 y = (HGY + mg * HRX - ng * HRY) >> 8;
2304 FX_DWORD pat_index = GI[mg * HGW + ng]; 2283 FX_DWORD pat_index = GI[mg * HGW + ng];
2305 if (pat_index >= HNUMPATS) { 2284 if (pat_index >= HNUMPATS) {
2306 pat_index = HNUMPATS - 1; 2285 pat_index = HNUMPATS - 1;
2307 } 2286 }
2308 HTREG->composeFrom(x, y, HPATS[pat_index], HCOMBOP); 2287 HTREG->composeFrom(x, y, HPATS[pat_index], HCOMBOP);
2309 } 2288 }
2310 } 2289 }
2311 m_pModule->JBig2_Free(GI); 2290 FX_Free(GI);
2312 delete HSKIP; 2291 delete HSKIP;
2313 delete pGID; 2292 delete pGID;
2314 return HTREG; 2293 return HTREG;
2315 failed: 2294 failed:
2316 delete HSKIP; 2295 delete HSKIP;
2317 delete pGID; 2296 delete pGID;
2318 delete HTREG; 2297 delete HTREG;
2319 return NULL; 2298 return NULL;
2320 } 2299 }
2321 CJBig2_Image* CJBig2_HTRDProc::decode_MMR(CJBig2_BitStream* pStream, 2300 CJBig2_Image* CJBig2_HTRDProc::decode_MMR(CJBig2_BitStream* pStream,
2322 IFX_Pause* pPause) { 2301 IFX_Pause* pPause) {
2323 FX_DWORD ng, mg; 2302 FX_DWORD ng, mg;
2324 int32_t x, y; 2303 int32_t x, y;
2325 FX_DWORD HBPP;
2326 FX_DWORD* GI; 2304 FX_DWORD* GI;
2327 CJBig2_Image* HTREG; 2305 CJBig2_Image* HTREG = new CJBig2_Image(HBW, HBH);
2328 CJBig2_GSIDProc* pGID;
2329 JBIG2_ALLOC(HTREG, CJBig2_Image(HBW, HBH));
2330 HTREG->fill(HDEFPIXEL); 2306 HTREG->fill(HDEFPIXEL);
2331 HBPP = 1; 2307 FX_DWORD HBPP = 1;
2332 while ((FX_DWORD)(1 << HBPP) < HNUMPATS) { 2308 while ((FX_DWORD)(1 << HBPP) < HNUMPATS) {
2333 HBPP++; 2309 HBPP++;
2334 } 2310 }
2335 JBIG2_ALLOC(pGID, CJBig2_GSIDProc()); 2311 CJBig2_GSIDProc* pGID = new CJBig2_GSIDProc();
2336 pGID->GSMMR = HMMR; 2312 pGID->GSMMR = HMMR;
2337 pGID->GSW = HGW; 2313 pGID->GSW = HGW;
2338 pGID->GSH = HGH; 2314 pGID->GSH = HGH;
2339 pGID->GSBPP = (uint8_t)HBPP; 2315 pGID->GSBPP = (uint8_t)HBPP;
2340 pGID->GSUSESKIP = 0; 2316 pGID->GSUSESKIP = 0;
2341 GI = pGID->decode_MMR(pStream, pPause); 2317 GI = pGID->decode_MMR(pStream, pPause);
2342 if (GI == NULL) { 2318 if (GI == NULL) {
2343 goto failed; 2319 goto failed;
2344 } 2320 }
2345 for (mg = 0; mg < HGH; mg++) { 2321 for (mg = 0; mg < HGH; mg++) {
2346 for (ng = 0; ng < HGW; ng++) { 2322 for (ng = 0; ng < HGW; ng++) {
2347 x = (HGX + mg * HRY + ng * HRX) >> 8; 2323 x = (HGX + mg * HRY + ng * HRX) >> 8;
2348 y = (HGY + mg * HRX - ng * HRY) >> 8; 2324 y = (HGY + mg * HRX - ng * HRY) >> 8;
2349 FX_DWORD pat_index = GI[mg * HGW + ng]; 2325 FX_DWORD pat_index = GI[mg * HGW + ng];
2350 if (pat_index >= HNUMPATS) { 2326 if (pat_index >= HNUMPATS) {
2351 pat_index = HNUMPATS - 1; 2327 pat_index = HNUMPATS - 1;
2352 } 2328 }
2353 HTREG->composeFrom(x, y, HPATS[pat_index], HCOMBOP); 2329 HTREG->composeFrom(x, y, HPATS[pat_index], HCOMBOP);
2354 } 2330 }
2355 } 2331 }
2356 m_pModule->JBig2_Free(GI); 2332 FX_Free(GI);
2357 delete pGID; 2333 delete pGID;
2358 return HTREG; 2334 return HTREG;
2359 failed: 2335 failed:
2360 delete pGID; 2336 delete pGID;
2361 delete HTREG; 2337 delete HTREG;
2362 return NULL; 2338 return NULL;
2363 } 2339 }
2364 CJBig2_PatternDict* CJBig2_PDDProc::decode_Arith( 2340 CJBig2_PatternDict* CJBig2_PDDProc::decode_Arith(
2365 CJBig2_ArithDecoder* pArithDecoder, 2341 CJBig2_ArithDecoder* pArithDecoder,
2366 JBig2ArithCtx* gbContext, 2342 JBig2ArithCtx* gbContext,
2367 IFX_Pause* pPause) { 2343 IFX_Pause* pPause) {
2368 FX_DWORD GRAY; 2344 FX_DWORD GRAY;
2369 CJBig2_Image* BHDC = NULL; 2345 CJBig2_Image* BHDC = NULL;
2370 CJBig2_PatternDict* pDict; 2346 CJBig2_PatternDict* pDict = new CJBig2_PatternDict();
2371 CJBig2_GRDProc* pGRD;
2372 pDict = new CJBig2_PatternDict();
2373 pDict->NUMPATS = GRAYMAX + 1; 2347 pDict->NUMPATS = GRAYMAX + 1;
2374 pDict->HDPATS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 2348 pDict->HDPATS = (CJBig2_Image**)FX_Alloc2D(uint8_t, sizeof(CJBig2_Image*),
2375 sizeof(CJBig2_Image*), pDict->NUMPATS); 2349 pDict->NUMPATS);
2376 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS); 2350 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS);
2377 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 2351 CJBig2_GRDProc* pGRD = new CJBig2_GRDProc();
2378 pGRD->MMR = HDMMR; 2352 pGRD->MMR = HDMMR;
2379 pGRD->GBW = (GRAYMAX + 1) * HDPW; 2353 pGRD->GBW = (GRAYMAX + 1) * HDPW;
2380 pGRD->GBH = HDPH; 2354 pGRD->GBH = HDPH;
2381 pGRD->GBTEMPLATE = HDTEMPLATE; 2355 pGRD->GBTEMPLATE = HDTEMPLATE;
2382 pGRD->TPGDON = 0; 2356 pGRD->TPGDON = 0;
2383 pGRD->USESKIP = 0; 2357 pGRD->USESKIP = 0;
2384 pGRD->GBAT[0] = -(int32_t)HDPW; 2358 pGRD->GBAT[0] = -(int32_t)HDPW;
2385 pGRD->GBAT[1] = 0; 2359 pGRD->GBAT[1] = 0;
2386 if (pGRD->GBTEMPLATE == 0) { 2360 if (pGRD->GBTEMPLATE == 0) {
2387 pGRD->GBAT[2] = -3; 2361 pGRD->GBAT[2] = -3;
(...skipping 22 matching lines...) Expand all
2410 return pDict; 2384 return pDict;
2411 failed: 2385 failed:
2412 delete pDict; 2386 delete pDict;
2413 return NULL; 2387 return NULL;
2414 } 2388 }
2415 2389
2416 CJBig2_PatternDict* CJBig2_PDDProc::decode_MMR(CJBig2_BitStream* pStream, 2390 CJBig2_PatternDict* CJBig2_PDDProc::decode_MMR(CJBig2_BitStream* pStream,
2417 IFX_Pause* pPause) { 2391 IFX_Pause* pPause) {
2418 FX_DWORD GRAY; 2392 FX_DWORD GRAY;
2419 CJBig2_Image* BHDC = NULL; 2393 CJBig2_Image* BHDC = NULL;
2420 CJBig2_GRDProc* pGRD;
2421 CJBig2_PatternDict* pDict = new CJBig2_PatternDict(); 2394 CJBig2_PatternDict* pDict = new CJBig2_PatternDict();
2422 pDict->NUMPATS = GRAYMAX + 1; 2395 pDict->NUMPATS = GRAYMAX + 1;
2423 pDict->HDPATS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 2396 pDict->HDPATS = (CJBig2_Image**)FX_Alloc2D(uint8_t, sizeof(CJBig2_Image*),
2424 sizeof(CJBig2_Image*), pDict->NUMPATS); 2397 pDict->NUMPATS);
2425 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS); 2398 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS);
2426 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 2399 CJBig2_GRDProc* pGRD = new CJBig2_GRDProc();
2427 pGRD->MMR = HDMMR; 2400 pGRD->MMR = HDMMR;
2428 pGRD->GBW = (GRAYMAX + 1) * HDPW; 2401 pGRD->GBW = (GRAYMAX + 1) * HDPW;
2429 pGRD->GBH = HDPH; 2402 pGRD->GBH = HDPH;
2430 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHDC, pStream); 2403 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHDC, pStream);
2431 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { 2404 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) {
2432 pGRD->Continue_decode(pPause); 2405 pGRD->Continue_decode(pPause);
2433 } 2406 }
2434 if (BHDC == NULL) { 2407 if (BHDC == NULL) {
2435 delete pGRD; 2408 delete pGRD;
2436 goto failed; 2409 goto failed;
(...skipping 10 matching lines...) Expand all
2447 delete pDict; 2420 delete pDict;
2448 return NULL; 2421 return NULL;
2449 } 2422 }
2450 FX_DWORD* CJBig2_GSIDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, 2423 FX_DWORD* CJBig2_GSIDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder,
2451 JBig2ArithCtx* gbContext, 2424 JBig2ArithCtx* gbContext,
2452 IFX_Pause* pPause) { 2425 IFX_Pause* pPause) {
2453 CJBig2_Image** GSPLANES; 2426 CJBig2_Image** GSPLANES;
2454 int32_t J, K; 2427 int32_t J, K;
2455 FX_DWORD x, y; 2428 FX_DWORD x, y;
2456 FX_DWORD* GSVALS; 2429 FX_DWORD* GSVALS;
2457 CJBig2_GRDProc* pGRD; 2430 GSPLANES = (CJBig2_Image**)FX_Alloc2D(uint8_t, sizeof(CJBig2_Image*), GSBPP);
2458 GSPLANES =
2459 (CJBig2_Image**)m_pModule->JBig2_Malloc2(sizeof(CJBig2_Image*), GSBPP);
2460 if (!GSPLANES) { 2431 if (!GSPLANES) {
2461 return NULL; 2432 return NULL;
2462 } 2433 }
2463 GSVALS = (FX_DWORD*)m_pModule->JBig2_Malloc3(sizeof(FX_DWORD), GSW, GSH); 2434 GSVALS = (FX_DWORD*)FX_Alloc3D(uint8_t, sizeof(FX_DWORD), GSW, GSH);
2464 if (!GSVALS) { 2435 if (!GSVALS) {
2465 m_pModule->JBig2_Free(GSPLANES); 2436 FX_Free(GSPLANES);
2466 return NULL; 2437 return NULL;
2467 } 2438 }
2468 JBIG2_memset(GSPLANES, 0, sizeof(CJBig2_Image*) * GSBPP); 2439 JBIG2_memset(GSPLANES, 0, sizeof(CJBig2_Image*) * GSBPP);
2469 JBIG2_memset(GSVALS, 0, sizeof(FX_DWORD) * GSW * GSH); 2440 JBIG2_memset(GSVALS, 0, sizeof(FX_DWORD) * GSW * GSH);
2470 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 2441 CJBig2_GRDProc* pGRD = new CJBig2_GRDProc();
2471 pGRD->MMR = GSMMR; 2442 pGRD->MMR = GSMMR;
2472 pGRD->GBW = GSW; 2443 pGRD->GBW = GSW;
2473 pGRD->GBH = GSH; 2444 pGRD->GBH = GSH;
2474 pGRD->GBTEMPLATE = GSTEMPLATE; 2445 pGRD->GBTEMPLATE = GSTEMPLATE;
2475 pGRD->TPGDON = 0; 2446 pGRD->TPGDON = 0;
2476 pGRD->USESKIP = GSUSESKIP; 2447 pGRD->USESKIP = GSUSESKIP;
2477 pGRD->SKIP = GSKIP; 2448 pGRD->SKIP = GSKIP;
2478 if (GSTEMPLATE <= 1) { 2449 if (GSTEMPLATE <= 1) {
2479 pGRD->GBAT[0] = 3; 2450 pGRD->GBAT[0] = 3;
2480 } else { 2451 } else {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2516 for (y = 0; y < GSH; y++) { 2487 for (y = 0; y < GSH; y++) {
2517 for (x = 0; x < GSW; x++) { 2488 for (x = 0; x < GSW; x++) {
2518 for (J = 0; J < GSBPP; J++) { 2489 for (J = 0; J < GSBPP; J++) {
2519 GSVALS[y * GSW + x] |= GSPLANES[J]->getPixel(x, y) << J; 2490 GSVALS[y * GSW + x] |= GSPLANES[J]->getPixel(x, y) << J;
2520 } 2491 }
2521 } 2492 }
2522 } 2493 }
2523 for (J = 0; J < GSBPP; J++) { 2494 for (J = 0; J < GSBPP; J++) {
2524 delete GSPLANES[J]; 2495 delete GSPLANES[J];
2525 } 2496 }
2526 m_pModule->JBig2_Free(GSPLANES); 2497 FX_Free(GSPLANES);
2527 delete pGRD; 2498 delete pGRD;
2528 return GSVALS; 2499 return GSVALS;
2529 failed: 2500 failed:
2530 m_pModule->JBig2_Free(GSPLANES); 2501 FX_Free(GSPLANES);
2531 delete pGRD; 2502 delete pGRD;
2532 m_pModule->JBig2_Free(GSVALS); 2503 FX_Free(GSVALS);
2533 return NULL; 2504 return NULL;
2534 } 2505 }
2535 FX_DWORD* CJBig2_GSIDProc::decode_MMR(CJBig2_BitStream* pStream, 2506 FX_DWORD* CJBig2_GSIDProc::decode_MMR(CJBig2_BitStream* pStream,
2536 IFX_Pause* pPause) { 2507 IFX_Pause* pPause) {
2537 CJBig2_Image** GSPLANES; 2508 CJBig2_Image** GSPLANES;
2538 int32_t J, K; 2509 int32_t J, K;
2539 FX_DWORD x, y; 2510 FX_DWORD x, y;
2540 FX_DWORD* GSVALS; 2511 FX_DWORD* GSVALS;
2541 CJBig2_GRDProc* pGRD; 2512 GSPLANES = (CJBig2_Image**)FX_Alloc2D(uint8_t, sizeof(CJBig2_Image*), GSBPP);
2542 GSPLANES =
2543 (CJBig2_Image**)m_pModule->JBig2_Malloc2(sizeof(CJBig2_Image*), GSBPP);
2544 if (!GSPLANES) { 2513 if (!GSPLANES) {
2545 return NULL; 2514 return NULL;
2546 } 2515 }
2547 GSVALS = (FX_DWORD*)m_pModule->JBig2_Malloc3(sizeof(FX_DWORD), GSW, GSH); 2516 GSVALS = (FX_DWORD*)FX_Alloc3D(uint8_t, sizeof(FX_DWORD), GSW, GSH);
2548 if (!GSVALS) { 2517 if (!GSVALS) {
2549 if (GSPLANES) { 2518 FX_Free(GSPLANES);
2550 m_pModule->JBig2_Free(GSPLANES);
2551 }
2552 return NULL; 2519 return NULL;
2553 } 2520 }
2554 JBIG2_memset(GSPLANES, 0, sizeof(CJBig2_Image*) * GSBPP); 2521 JBIG2_memset(GSPLANES, 0, sizeof(CJBig2_Image*) * GSBPP);
2555 JBIG2_memset(GSVALS, 0, sizeof(FX_DWORD) * GSW * GSH); 2522 JBIG2_memset(GSVALS, 0, sizeof(FX_DWORD) * GSW * GSH);
2556 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 2523 CJBig2_GRDProc* pGRD = new CJBig2_GRDProc();
2557 pGRD->MMR = GSMMR; 2524 pGRD->MMR = GSMMR;
2558 pGRD->GBW = GSW; 2525 pGRD->GBW = GSW;
2559 pGRD->GBH = GSH; 2526 pGRD->GBH = GSH;
2560 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&GSPLANES[GSBPP - 1], pStream); 2527 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&GSPLANES[GSBPP - 1], pStream);
2561 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { 2528 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) {
2562 pGRD->Continue_decode(pPause); 2529 pGRD->Continue_decode(pPause);
2563 } 2530 }
2564 if (GSPLANES[GSBPP - 1] == NULL) { 2531 if (GSPLANES[GSBPP - 1] == NULL) {
2565 goto failed; 2532 goto failed;
2566 } 2533 }
(...skipping 19 matching lines...) Expand all
2586 for (y = 0; y < GSH; y++) { 2553 for (y = 0; y < GSH; y++) {
2587 for (x = 0; x < GSW; x++) { 2554 for (x = 0; x < GSW; x++) {
2588 for (J = 0; J < GSBPP; J++) { 2555 for (J = 0; J < GSBPP; J++) {
2589 GSVALS[y * GSW + x] |= GSPLANES[J]->getPixel(x, y) << J; 2556 GSVALS[y * GSW + x] |= GSPLANES[J]->getPixel(x, y) << J;
2590 } 2557 }
2591 } 2558 }
2592 } 2559 }
2593 for (J = 0; J < GSBPP; J++) { 2560 for (J = 0; J < GSBPP; J++) {
2594 delete GSPLANES[J]; 2561 delete GSPLANES[J];
2595 } 2562 }
2596 m_pModule->JBig2_Free(GSPLANES); 2563 FX_Free(GSPLANES);
2597 delete pGRD; 2564 delete pGRD;
2598 return GSVALS; 2565 return GSVALS;
2599 failed: 2566 failed:
2600 m_pModule->JBig2_Free(GSPLANES); 2567 FX_Free(GSPLANES);
2601 delete pGRD; 2568 delete pGRD;
2602 m_pModule->JBig2_Free(GSVALS); 2569 FX_Free(GSVALS);
2603 return NULL; 2570 return NULL;
2604 } 2571 }
2605 FXCODEC_STATUS CJBig2_GRDProc::Start_decode_Arith( 2572 FXCODEC_STATUS CJBig2_GRDProc::Start_decode_Arith(
2606 CJBig2_Image** pImage, 2573 CJBig2_Image** pImage,
2607 CJBig2_ArithDecoder* pArithDecoder, 2574 CJBig2_ArithDecoder* pArithDecoder,
2608 JBig2ArithCtx* gbContext, 2575 JBig2ArithCtx* gbContext,
2609 IFX_Pause* pPause) { 2576 IFX_Pause* pPause) {
2610 if (GBW == 0 || GBH == 0) { 2577 if (GBW == 0 || GBH == 0) {
2611 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; 2578 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH;
2612 return FXCODEC_STATUS_DECODE_FINISH; 2579 return FXCODEC_STATUS_DECODE_FINISH;
2613 } 2580 }
2614 m_ProssiveStatus = FXCODEC_STATUS_DECODE_READY; 2581 m_ProssiveStatus = FXCODEC_STATUS_DECODE_READY;
2615 m_pPause = pPause; 2582 m_pPause = pPause;
2616 if (*pImage == NULL) { 2583 if (!*pImage)
2617 JBIG2_ALLOC((*pImage), CJBig2_Image(GBW, GBH)); 2584 *pImage = new CJBig2_Image(GBW, GBH);
2618 }
2619 if ((*pImage)->m_pData == NULL) { 2585 if ((*pImage)->m_pData == NULL) {
2620 delete *pImage; 2586 delete *pImage;
2621 *pImage = NULL; 2587 *pImage = NULL;
2622 m_ProssiveStatus = FXCODEC_STATUS_ERROR; 2588 m_ProssiveStatus = FXCODEC_STATUS_ERROR;
2623 return FXCODEC_STATUS_ERROR; 2589 return FXCODEC_STATUS_ERROR;
2624 } 2590 }
2625 m_DecodeType = 1; 2591 m_DecodeType = 1;
2626 m_pImage = pImage; 2592 m_pImage = pImage;
2627 (*m_pImage)->fill(0); 2593 (*m_pImage)->fill(0);
2628 m_pArithDecoder = pArithDecoder; 2594 m_pArithDecoder = pArithDecoder;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2676 m_ReplaceRect.bottom = m_loopIndex; 2642 m_ReplaceRect.bottom = m_loopIndex;
2677 if (m_ProssiveStatus == FXCODEC_STATUS_DECODE_FINISH) { 2643 if (m_ProssiveStatus == FXCODEC_STATUS_DECODE_FINISH) {
2678 m_loopIndex = 0; 2644 m_loopIndex = 0;
2679 } 2645 }
2680 return m_ProssiveStatus; 2646 return m_ProssiveStatus;
2681 } 2647 }
2682 FXCODEC_STATUS CJBig2_GRDProc::Start_decode_MMR(CJBig2_Image** pImage, 2648 FXCODEC_STATUS CJBig2_GRDProc::Start_decode_MMR(CJBig2_Image** pImage,
2683 CJBig2_BitStream* pStream, 2649 CJBig2_BitStream* pStream,
2684 IFX_Pause* pPause) { 2650 IFX_Pause* pPause) {
2685 int bitpos, i; 2651 int bitpos, i;
2686 JBIG2_ALLOC((*pImage), CJBig2_Image(GBW, GBH)); 2652 *pImage = new CJBig2_Image(GBW, GBH);
2687 if ((*pImage)->m_pData == NULL) { 2653 if ((*pImage)->m_pData == NULL) {
2688 delete (*pImage); 2654 delete (*pImage);
2689 (*pImage) = NULL; 2655 (*pImage) = NULL;
2690 m_ProssiveStatus = FXCODEC_STATUS_ERROR; 2656 m_ProssiveStatus = FXCODEC_STATUS_ERROR;
2691 return m_ProssiveStatus; 2657 return m_ProssiveStatus;
2692 } 2658 }
2693 bitpos = (int)pStream->getBitPos(); 2659 bitpos = (int)pStream->getBitPos();
2694 _FaxG4Decode(m_pModule, pStream->getBuf(), pStream->getLength(), &bitpos, 2660 _FaxG4Decode(pStream->getBuf(), pStream->getLength(), &bitpos,
2695 (*pImage)->m_pData, GBW, GBH, (*pImage)->m_nStride); 2661 (*pImage)->m_pData, GBW, GBH, (*pImage)->m_nStride);
2696 pStream->setBitPos(bitpos); 2662 pStream->setBitPos(bitpos);
2697 for (i = 0; (FX_DWORD)i < (*pImage)->m_nStride * GBH; i++) { 2663 for (i = 0; (FX_DWORD)i < (*pImage)->m_nStride * GBH; i++) {
2698 (*pImage)->m_pData[i] = ~(*pImage)->m_pData[i]; 2664 (*pImage)->m_pData[i] = ~(*pImage)->m_pData[i];
2699 } 2665 }
2700 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; 2666 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH;
2701 return m_ProssiveStatus; 2667 return m_ProssiveStatus;
2702 } 2668 }
2703 2669
2704 FXCODEC_STATUS CJBig2_GRDProc::Continue_decode(IFX_Pause* pPause) { 2670 FXCODEC_STATUS CJBig2_GRDProc::Continue_decode(IFX_Pause* pPause) {
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
3264 } 3230 }
3265 if (pPause && pPause->NeedToPauseNow()) { 3231 if (pPause && pPause->NeedToPauseNow()) {
3266 m_loopIndex++; 3232 m_loopIndex++;
3267 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; 3233 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE;
3268 return FXCODEC_STATUS_DECODE_TOBECONTINUE; 3234 return FXCODEC_STATUS_DECODE_TOBECONTINUE;
3269 } 3235 }
3270 } 3236 }
3271 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; 3237 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH;
3272 return FXCODEC_STATUS_DECODE_FINISH; 3238 return FXCODEC_STATUS_DECODE_FINISH;
3273 } 3239 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698