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

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: rebase 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 = FX_Alloc(CJBig2_Image*, SDNUMNEWSYMS);
1584 sizeof(CJBig2_Image*));
1585 FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*)); 1567 FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*));
1586 HCHEIGHT = 0; 1568 HCHEIGHT = 0;
1587 NSYMSDECODED = 0; 1569 NSYMSDECODED = 0;
1588 while (NSYMSDECODED < SDNUMNEWSYMS) { 1570 while (NSYMSDECODED < SDNUMNEWSYMS) {
1589 BS = NULL; 1571 BS = NULL;
1590 if (IADH->decode(pArithDecoder, &HCDH) == -1) { 1572 if (IADH->decode(pArithDecoder, &HCDH) == -1) {
1591 goto failed; 1573 goto failed;
1592 } 1574 }
1593 HCHEIGHT = HCHEIGHT + HCDH; 1575 HCHEIGHT = HCHEIGHT + HCDH;
1594 if ((int)HCHEIGHT < 0 || (int)HCHEIGHT > JBIG2_MAX_IMAGE_SIZE) { 1576 if ((int)HCHEIGHT < 0 || (int)HCHEIGHT > JBIG2_MAX_IMAGE_SIZE) {
(...skipping 16 matching lines...) Expand all
1611 goto failed; 1593 goto failed;
1612 } else if (HCHEIGHT == 0 || SYMWIDTH == 0) { 1594 } else if (HCHEIGHT == 0 || SYMWIDTH == 0) {
1613 TOTWIDTH = TOTWIDTH + SYMWIDTH; 1595 TOTWIDTH = TOTWIDTH + SYMWIDTH;
1614 SDNEWSYMS[NSYMSDECODED] = NULL; 1596 SDNEWSYMS[NSYMSDECODED] = NULL;
1615 NSYMSDECODED = NSYMSDECODED + 1; 1597 NSYMSDECODED = NSYMSDECODED + 1;
1616 continue; 1598 continue;
1617 } 1599 }
1618 TOTWIDTH = TOTWIDTH + SYMWIDTH; 1600 TOTWIDTH = TOTWIDTH + SYMWIDTH;
1619 } 1601 }
1620 if (SDREFAGG == 0) { 1602 if (SDREFAGG == 0) {
1621 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 1603 pGRD = new CJBig2_GRDProc();
1622 pGRD->MMR = 0; 1604 pGRD->MMR = 0;
1623 pGRD->GBW = SYMWIDTH; 1605 pGRD->GBW = SYMWIDTH;
1624 pGRD->GBH = HCHEIGHT; 1606 pGRD->GBH = HCHEIGHT;
1625 pGRD->GBTEMPLATE = SDTEMPLATE; 1607 pGRD->GBTEMPLATE = SDTEMPLATE;
1626 pGRD->TPGDON = 0; 1608 pGRD->TPGDON = 0;
1627 pGRD->USESKIP = 0; 1609 pGRD->USESKIP = 0;
1628 pGRD->GBAT[0] = SDAT[0]; 1610 pGRD->GBAT[0] = SDAT[0];
1629 pGRD->GBAT[1] = SDAT[1]; 1611 pGRD->GBAT[1] = SDAT[1];
1630 pGRD->GBAT[2] = SDAT[2]; 1612 pGRD->GBAT[2] = SDAT[2];
1631 pGRD->GBAT[3] = SDAT[3]; 1613 pGRD->GBAT[3] = SDAT[3];
1632 pGRD->GBAT[4] = SDAT[4]; 1614 pGRD->GBAT[4] = SDAT[4];
1633 pGRD->GBAT[5] = SDAT[5]; 1615 pGRD->GBAT[5] = SDAT[5];
1634 pGRD->GBAT[6] = SDAT[6]; 1616 pGRD->GBAT[6] = SDAT[6];
1635 pGRD->GBAT[7] = SDAT[7]; 1617 pGRD->GBAT[7] = SDAT[7];
1636 BS = pGRD->decode_Arith(pArithDecoder, gbContext); 1618 BS = pGRD->decode_Arith(pArithDecoder, gbContext);
1637 if (BS == NULL) { 1619 if (BS == NULL) {
1638 delete pGRD; 1620 delete pGRD;
1639 goto failed; 1621 goto failed;
1640 } 1622 }
1641 delete pGRD; 1623 delete pGRD;
1642 } else { 1624 } else {
1643 if (IAAI->decode(pArithDecoder, (int*)&REFAGGNINST) == -1) { 1625 if (IAAI->decode(pArithDecoder, (int*)&REFAGGNINST) == -1) {
1644 goto failed; 1626 goto failed;
1645 } 1627 }
1646 if (REFAGGNINST > 1) { 1628 if (REFAGGNINST > 1) {
1647 CJBig2_TRDProc* pDecoder; 1629 CJBig2_TRDProc* pDecoder;
1648 JBIG2_ALLOC(pDecoder, CJBig2_TRDProc()); 1630 pDecoder = new CJBig2_TRDProc();
1649 pDecoder->SBHUFF = SDHUFF; 1631 pDecoder->SBHUFF = SDHUFF;
1650 pDecoder->SBREFINE = 1; 1632 pDecoder->SBREFINE = 1;
1651 pDecoder->SBW = SYMWIDTH; 1633 pDecoder->SBW = SYMWIDTH;
1652 pDecoder->SBH = HCHEIGHT; 1634 pDecoder->SBH = HCHEIGHT;
1653 pDecoder->SBNUMINSTANCES = REFAGGNINST; 1635 pDecoder->SBNUMINSTANCES = REFAGGNINST;
1654 pDecoder->SBSTRIPS = 1; 1636 pDecoder->SBSTRIPS = 1;
1655 pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; 1637 pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED;
1656 SBNUMSYMS = pDecoder->SBNUMSYMS; 1638 SBNUMSYMS = pDecoder->SBNUMSYMS;
1657 nTmp = 0; 1639 nTmp = 0;
1658 while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { 1640 while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) {
1659 nTmp++; 1641 nTmp++;
1660 } 1642 }
1661 SBSYMCODELEN = (uint8_t)nTmp; 1643 SBSYMCODELEN = (uint8_t)nTmp;
1662 pDecoder->SBSYMCODELEN = SBSYMCODELEN; 1644 pDecoder->SBSYMCODELEN = SBSYMCODELEN;
1663 SBSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 1645 SBSYMS = FX_Alloc(CJBig2_Image*, SBNUMSYMS);
1664 SBNUMSYMS, sizeof(CJBig2_Image*));
1665 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); 1646 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*));
1666 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, 1647 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS,
1667 NSYMSDECODED * sizeof(CJBig2_Image*)); 1648 NSYMSDECODED * sizeof(CJBig2_Image*));
1668 pDecoder->SBSYMS = SBSYMS; 1649 pDecoder->SBSYMS = SBSYMS;
1669 pDecoder->SBDEFPIXEL = 0; 1650 pDecoder->SBDEFPIXEL = 0;
1670 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR; 1651 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR;
1671 pDecoder->TRANSPOSED = 0; 1652 pDecoder->TRANSPOSED = 0;
1672 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT; 1653 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT;
1673 pDecoder->SBDSOFFSET = 0; 1654 pDecoder->SBDSOFFSET = 0;
1674 SBHUFFFS = new CJBig2_HuffmanTable(HuffmanTable_B6, 1655 SBHUFFFS = new CJBig2_HuffmanTable(HuffmanTable_B6,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1714 ids.IADS = IADS; 1695 ids.IADS = IADS;
1715 ids.IAIT = IAIT; 1696 ids.IAIT = IAIT;
1716 ids.IARI = IARI; 1697 ids.IARI = IARI;
1717 ids.IARDW = IARDW; 1698 ids.IARDW = IARDW;
1718 ids.IARDH = IARDH; 1699 ids.IARDH = IARDH;
1719 ids.IARDX = IARDX; 1700 ids.IARDX = IARDX;
1720 ids.IARDY = IARDY; 1701 ids.IARDY = IARDY;
1721 ids.IAID = IAID; 1702 ids.IAID = IAID;
1722 BS = pDecoder->decode_Arith(pArithDecoder, grContext, &ids); 1703 BS = pDecoder->decode_Arith(pArithDecoder, grContext, &ids);
1723 if (BS == NULL) { 1704 if (BS == NULL) {
1724 m_pModule->JBig2_Free(SBSYMS); 1705 FX_Free(SBSYMS);
1725 delete SBHUFFFS; 1706 delete SBHUFFFS;
1726 delete SBHUFFDS; 1707 delete SBHUFFDS;
1727 delete SBHUFFDT; 1708 delete SBHUFFDT;
1728 delete SBHUFFRDW; 1709 delete SBHUFFRDW;
1729 delete SBHUFFRDH; 1710 delete SBHUFFRDH;
1730 delete SBHUFFRDX; 1711 delete SBHUFFRDX;
1731 delete SBHUFFRDY; 1712 delete SBHUFFRDY;
1732 delete SBHUFFRSIZE; 1713 delete SBHUFFRSIZE;
1733 delete pDecoder; 1714 delete pDecoder;
1734 goto failed; 1715 goto failed;
1735 } 1716 }
1736 m_pModule->JBig2_Free(SBSYMS); 1717 FX_Free(SBSYMS);
1737 delete SBHUFFFS; 1718 delete SBHUFFFS;
1738 delete SBHUFFDS; 1719 delete SBHUFFDS;
1739 delete SBHUFFDT; 1720 delete SBHUFFDT;
1740 delete SBHUFFRDW; 1721 delete SBHUFFRDW;
1741 delete SBHUFFRDH; 1722 delete SBHUFFRDH;
1742 delete SBHUFFRDX; 1723 delete SBHUFFRDX;
1743 delete SBHUFFRDY; 1724 delete SBHUFFRDY;
1744 delete SBHUFFRSIZE; 1725 delete SBHUFFRSIZE;
1745 delete pDecoder; 1726 delete pDecoder;
1746 } else if (REFAGGNINST == 1) { 1727 } else if (REFAGGNINST == 1) {
1747 SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; 1728 SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED;
1748 if (IAID->decode(pArithDecoder, (int*)&IDI) == -1) { 1729 if (IAID->decode(pArithDecoder, (int*)&IDI) == -1) {
1749 goto failed; 1730 goto failed;
1750 } 1731 }
1751 if ((IARDX->decode(pArithDecoder, &RDXI) == -1) || 1732 if ((IARDX->decode(pArithDecoder, &RDXI) == -1) ||
1752 (IARDY->decode(pArithDecoder, &RDYI) == -1)) { 1733 (IARDY->decode(pArithDecoder, &RDYI) == -1)) {
1753 goto failed; 1734 goto failed;
1754 } 1735 }
1755 if (IDI >= SBNUMSYMS) { 1736 if (IDI >= SBNUMSYMS) {
1756 goto failed; 1737 goto failed;
1757 } 1738 }
1758 SBSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 1739 SBSYMS = FX_Alloc(CJBig2_Image*, SBNUMSYMS);
1759 SBNUMSYMS, sizeof(CJBig2_Image*));
1760 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); 1740 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*));
1761 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, 1741 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS,
1762 NSYMSDECODED * sizeof(CJBig2_Image*)); 1742 NSYMSDECODED * sizeof(CJBig2_Image*));
1763 if (!SBSYMS[IDI]) { 1743 if (!SBSYMS[IDI]) {
1764 m_pModule->JBig2_Free(SBSYMS); 1744 FX_Free(SBSYMS);
1765 goto failed; 1745 goto failed;
1766 } 1746 }
1767 JBIG2_ALLOC(pGRRD, CJBig2_GRRDProc()); 1747 pGRRD = new CJBig2_GRRDProc();
1768 pGRRD->GRW = SYMWIDTH; 1748 pGRRD->GRW = SYMWIDTH;
1769 pGRRD->GRH = HCHEIGHT; 1749 pGRRD->GRH = HCHEIGHT;
1770 pGRRD->GRTEMPLATE = SDRTEMPLATE; 1750 pGRRD->GRTEMPLATE = SDRTEMPLATE;
1771 pGRRD->GRREFERENCE = SBSYMS[IDI]; 1751 pGRRD->GRREFERENCE = SBSYMS[IDI];
1772 pGRRD->GRREFERENCEDX = RDXI; 1752 pGRRD->GRREFERENCEDX = RDXI;
1773 pGRRD->GRREFERENCEDY = RDYI; 1753 pGRRD->GRREFERENCEDY = RDYI;
1774 pGRRD->TPGRON = 0; 1754 pGRRD->TPGRON = 0;
1775 pGRRD->GRAT[0] = SDRAT[0]; 1755 pGRRD->GRAT[0] = SDRAT[0];
1776 pGRRD->GRAT[1] = SDRAT[1]; 1756 pGRRD->GRAT[1] = SDRAT[1];
1777 pGRRD->GRAT[2] = SDRAT[2]; 1757 pGRRD->GRAT[2] = SDRAT[2];
1778 pGRRD->GRAT[3] = SDRAT[3]; 1758 pGRRD->GRAT[3] = SDRAT[3];
1779 BS = pGRRD->decode(pArithDecoder, grContext); 1759 BS = pGRRD->decode(pArithDecoder, grContext);
1780 if (BS == NULL) { 1760 if (BS == NULL) {
1781 m_pModule->JBig2_Free(SBSYMS); 1761 FX_Free(SBSYMS);
1782 delete pGRRD; 1762 delete pGRRD;
1783 goto failed; 1763 goto failed;
1784 } 1764 }
1785 m_pModule->JBig2_Free(SBSYMS); 1765 FX_Free(SBSYMS);
1786 delete pGRRD; 1766 delete pGRRD;
1787 } 1767 }
1788 } 1768 }
1789 SDNEWSYMS[NSYMSDECODED] = BS; 1769 SDNEWSYMS[NSYMSDECODED] = BS;
1790 BS = NULL; 1770 BS = NULL;
1791 NSYMSDECODED = NSYMSDECODED + 1; 1771 NSYMSDECODED = NSYMSDECODED + 1;
1792 } 1772 }
1793 } 1773 }
1794 EXINDEX = 0; 1774 EXINDEX = 0;
1795 CUREXFLAG = 0; 1775 CUREXFLAG = 0;
1796 EXFLAGS = (FX_BOOL*)m_pModule->JBig2_Malloc2(sizeof(FX_BOOL), 1776 EXFLAGS = FX_Alloc(FX_BOOL, SDNUMINSYMS + SDNUMNEWSYMS);
1797 (SDNUMINSYMS + SDNUMNEWSYMS));
1798 while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { 1777 while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) {
1799 if (IAEX->decode(pArithDecoder, (int*)&EXRUNLENGTH) == -1) { 1778 if (IAEX->decode(pArithDecoder, (int*)&EXRUNLENGTH) == -1) {
1800 m_pModule->JBig2_Free(EXFLAGS); 1779 FX_Free(EXFLAGS);
1801 goto failed; 1780 goto failed;
1802 } 1781 }
1803 if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) { 1782 if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) {
1804 m_pModule->JBig2_Free(EXFLAGS); 1783 FX_Free(EXFLAGS);
1805 goto failed; 1784 goto failed;
1806 } 1785 }
1807 if (EXRUNLENGTH != 0) { 1786 if (EXRUNLENGTH != 0) {
1808 for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) { 1787 for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) {
1809 EXFLAGS[I] = CUREXFLAG; 1788 EXFLAGS[I] = CUREXFLAG;
1810 } 1789 }
1811 } 1790 }
1812 EXINDEX = EXINDEX + EXRUNLENGTH; 1791 EXINDEX = EXINDEX + EXRUNLENGTH;
1813 CUREXFLAG = !CUREXFLAG; 1792 CUREXFLAG = !CUREXFLAG;
1814 } 1793 }
1815 JBIG2_ALLOC(pDict, CJBig2_SymbolDict()); 1794 pDict = new CJBig2_SymbolDict();
1816 pDict->SDNUMEXSYMS = SDNUMEXSYMS; 1795 pDict->SDNUMEXSYMS = SDNUMEXSYMS;
1817 pDict->SDEXSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 1796 pDict->SDEXSYMS = FX_Alloc(CJBig2_Image*, SDNUMEXSYMS);
1818 sizeof(CJBig2_Image*), SDNUMEXSYMS);
1819 I = J = 0; 1797 I = J = 0;
1820 for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) { 1798 for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) {
1821 if (EXFLAGS[I] && J < SDNUMEXSYMS) { 1799 if (EXFLAGS[I] && J < SDNUMEXSYMS) {
1822 if (I < SDNUMINSYMS) { 1800 if (I < SDNUMINSYMS) {
1823 JBIG2_ALLOC(pDict->SDEXSYMS[J], CJBig2_Image(*SDINSYMS[I])); 1801 pDict->SDEXSYMS[J] = new CJBig2_Image(*SDINSYMS[I]);
1824 } else { 1802 } else {
1825 pDict->SDEXSYMS[J] = SDNEWSYMS[I - SDNUMINSYMS]; 1803 pDict->SDEXSYMS[J] = SDNEWSYMS[I - SDNUMINSYMS];
1826 } 1804 }
1827 J = J + 1; 1805 J = J + 1;
1828 } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) { 1806 } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) {
1829 delete SDNEWSYMS[I - SDNUMINSYMS]; 1807 delete SDNEWSYMS[I - SDNUMINSYMS];
1830 } 1808 }
1831 } 1809 }
1832 if (J < SDNUMEXSYMS) { 1810 if (J < SDNUMEXSYMS) {
1833 pDict->SDNUMEXSYMS = J; 1811 pDict->SDNUMEXSYMS = J;
1834 } 1812 }
1835 m_pModule->JBig2_Free(EXFLAGS); 1813 FX_Free(EXFLAGS);
1836 m_pModule->JBig2_Free(SDNEWSYMS); 1814 FX_Free(SDNEWSYMS);
1837 delete IADH; 1815 delete IADH;
1838 delete IADW; 1816 delete IADW;
1839 delete IAAI; 1817 delete IAAI;
1840 delete IARDX; 1818 delete IARDX;
1841 delete IARDY; 1819 delete IARDY;
1842 delete IAEX; 1820 delete IAEX;
1843 delete IAID; 1821 delete IAID;
1844 delete IADT; 1822 delete IADT;
1845 delete IAFS; 1823 delete IAFS;
1846 delete IADS; 1824 delete IADS;
1847 delete IAIT; 1825 delete IAIT;
1848 delete IARI; 1826 delete IARI;
1849 delete IARDW; 1827 delete IARDW;
1850 delete IARDH; 1828 delete IARDH;
1851 return pDict; 1829 return pDict;
1852 failed: 1830 failed:
1853 for (I = 0; I < NSYMSDECODED; I++) { 1831 for (I = 0; I < NSYMSDECODED; I++) {
1854 if (SDNEWSYMS[I]) { 1832 if (SDNEWSYMS[I]) {
1855 delete SDNEWSYMS[I]; 1833 delete SDNEWSYMS[I];
1856 SDNEWSYMS[I] = NULL; 1834 SDNEWSYMS[I] = NULL;
1857 } 1835 }
1858 } 1836 }
1859 m_pModule->JBig2_Free(SDNEWSYMS); 1837 FX_Free(SDNEWSYMS);
1860 delete IADH; 1838 delete IADH;
1861 delete IADW; 1839 delete IADW;
1862 delete IAAI; 1840 delete IAAI;
1863 delete IARDX; 1841 delete IARDX;
1864 delete IARDY; 1842 delete IARDY;
1865 delete IAEX; 1843 delete IAEX;
1866 delete IAID; 1844 delete IAID;
1867 delete IADT; 1845 delete IADT;
1868 delete IAFS; 1846 delete IAFS;
1869 delete IADS; 1847 delete IADS;
(...skipping 30 matching lines...) Expand all
1900 FX_DWORD stride; 1878 FX_DWORD stride;
1901 CJBig2_Image** SBSYMS; 1879 CJBig2_Image** SBSYMS;
1902 CJBig2_HuffmanTable *SBHUFFFS, *SBHUFFDS, *SBHUFFDT, *SBHUFFRDW, *SBHUFFRDH, 1880 CJBig2_HuffmanTable *SBHUFFFS, *SBHUFFDS, *SBHUFFDT, *SBHUFFRDW, *SBHUFFRDH,
1903 *SBHUFFRDX, *SBHUFFRDY, *SBHUFFRSIZE, *pTable; 1881 *SBHUFFRDX, *SBHUFFRDY, *SBHUFFRSIZE, *pTable;
1904 CJBig2_HuffmanDecoder* pHuffmanDecoder; 1882 CJBig2_HuffmanDecoder* pHuffmanDecoder;
1905 CJBig2_GRRDProc* pGRRD; 1883 CJBig2_GRRDProc* pGRRD;
1906 CJBig2_ArithDecoder* pArithDecoder; 1884 CJBig2_ArithDecoder* pArithDecoder;
1907 CJBig2_GRDProc* pGRD; 1885 CJBig2_GRDProc* pGRD;
1908 CJBig2_SymbolDict* pDict; 1886 CJBig2_SymbolDict* pDict;
1909 pHuffmanDecoder = new CJBig2_HuffmanDecoder(pStream); 1887 pHuffmanDecoder = new CJBig2_HuffmanDecoder(pStream);
1910 SDNEWSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS, 1888 SDNEWSYMS = FX_Alloc(CJBig2_Image*, SDNUMNEWSYMS);
1911 sizeof(CJBig2_Image*));
1912 FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*)); 1889 FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*));
1913 SDNEWSYMWIDTHS = NULL; 1890 SDNEWSYMWIDTHS = NULL;
1914 BHC = NULL; 1891 BHC = NULL;
1915 if (SDREFAGG == 0) { 1892 if (SDREFAGG == 0) {
1916 SDNEWSYMWIDTHS = 1893 SDNEWSYMWIDTHS = FX_Alloc(FX_DWORD, SDNUMNEWSYMS);
1917 (FX_DWORD*)m_pModule->JBig2_Malloc2(SDNUMNEWSYMS, sizeof(FX_DWORD));
1918 FXSYS_memset(SDNEWSYMWIDTHS, 0, SDNUMNEWSYMS * sizeof(FX_DWORD)); 1894 FXSYS_memset(SDNEWSYMWIDTHS, 0, SDNUMNEWSYMS * sizeof(FX_DWORD));
1919 } 1895 }
1920 HCHEIGHT = 0; 1896 HCHEIGHT = 0;
1921 NSYMSDECODED = 0; 1897 NSYMSDECODED = 0;
1922 BS = NULL; 1898 BS = NULL;
1923 while (NSYMSDECODED < SDNUMNEWSYMS) { 1899 while (NSYMSDECODED < SDNUMNEWSYMS) {
1924 if (pHuffmanDecoder->decodeAValue(SDHUFFDH, &HCDH) != 0) { 1900 if (pHuffmanDecoder->decodeAValue(SDHUFFDH, &HCDH) != 0) {
1925 goto failed; 1901 goto failed;
1926 } 1902 }
1927 HCHEIGHT = HCHEIGHT + HCDH; 1903 HCHEIGHT = HCHEIGHT + HCDH;
(...skipping 24 matching lines...) Expand all
1952 } 1928 }
1953 TOTWIDTH = TOTWIDTH + SYMWIDTH; 1929 TOTWIDTH = TOTWIDTH + SYMWIDTH;
1954 } 1930 }
1955 if (SDREFAGG == 1) { 1931 if (SDREFAGG == 1) {
1956 if (pHuffmanDecoder->decodeAValue(SDHUFFAGGINST, (int*)&REFAGGNINST) != 1932 if (pHuffmanDecoder->decodeAValue(SDHUFFAGGINST, (int*)&REFAGGNINST) !=
1957 0) { 1933 0) {
1958 goto failed; 1934 goto failed;
1959 } 1935 }
1960 BS = NULL; 1936 BS = NULL;
1961 if (REFAGGNINST > 1) { 1937 if (REFAGGNINST > 1) {
1962 CJBig2_TRDProc* pDecoder; 1938 CJBig2_TRDProc* pDecoder = new CJBig2_TRDProc();
1963 JBIG2_ALLOC(pDecoder, CJBig2_TRDProc());
1964 pDecoder->SBHUFF = SDHUFF; 1939 pDecoder->SBHUFF = SDHUFF;
1965 pDecoder->SBREFINE = 1; 1940 pDecoder->SBREFINE = 1;
1966 pDecoder->SBW = SYMWIDTH; 1941 pDecoder->SBW = SYMWIDTH;
1967 pDecoder->SBH = HCHEIGHT; 1942 pDecoder->SBH = HCHEIGHT;
1968 pDecoder->SBNUMINSTANCES = REFAGGNINST; 1943 pDecoder->SBNUMINSTANCES = REFAGGNINST;
1969 pDecoder->SBSTRIPS = 1; 1944 pDecoder->SBSTRIPS = 1;
1970 pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; 1945 pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED;
1971 SBNUMSYMS = pDecoder->SBNUMSYMS; 1946 SBNUMSYMS = pDecoder->SBNUMSYMS;
1972 SBSYMCODES = (JBig2HuffmanCode*)m_pModule->JBig2_Malloc2( 1947 SBSYMCODES = FX_Alloc(JBig2HuffmanCode, SBNUMSYMS);
1973 SBNUMSYMS, sizeof(JBig2HuffmanCode));
1974 nTmp = 1; 1948 nTmp = 1;
1975 while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { 1949 while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) {
1976 nTmp++; 1950 nTmp++;
1977 } 1951 }
1978 for (I = 0; I < SBNUMSYMS; I++) { 1952 for (I = 0; I < SBNUMSYMS; I++) {
1979 SBSYMCODES[I].codelen = nTmp; 1953 SBSYMCODES[I].codelen = nTmp;
1980 SBSYMCODES[I].code = I; 1954 SBSYMCODES[I].code = I;
1981 } 1955 }
1982 pDecoder->SBSYMCODES = SBSYMCODES; 1956 pDecoder->SBSYMCODES = SBSYMCODES;
1983 SBSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 1957 SBSYMS = FX_Alloc(CJBig2_Image*, SBNUMSYMS);
1984 SBNUMSYMS, sizeof(CJBig2_Image*));
1985 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); 1958 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*));
1986 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, 1959 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS,
1987 NSYMSDECODED * sizeof(CJBig2_Image*)); 1960 NSYMSDECODED * sizeof(CJBig2_Image*));
1988 pDecoder->SBSYMS = SBSYMS; 1961 pDecoder->SBSYMS = SBSYMS;
1989 pDecoder->SBDEFPIXEL = 0; 1962 pDecoder->SBDEFPIXEL = 0;
1990 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR; 1963 pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR;
1991 pDecoder->TRANSPOSED = 0; 1964 pDecoder->TRANSPOSED = 0;
1992 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT; 1965 pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT;
1993 pDecoder->SBDSOFFSET = 0; 1966 pDecoder->SBDSOFFSET = 0;
1994 SBHUFFFS = new CJBig2_HuffmanTable(HuffmanTable_B6, 1967 SBHUFFFS = new CJBig2_HuffmanTable(HuffmanTable_B6,
(...skipping 28 matching lines...) Expand all
2023 pDecoder->SBHUFFRDX = SBHUFFRDX; 1996 pDecoder->SBHUFFRDX = SBHUFFRDX;
2024 pDecoder->SBHUFFRDY = SBHUFFRDY; 1997 pDecoder->SBHUFFRDY = SBHUFFRDY;
2025 pDecoder->SBHUFFRSIZE = SBHUFFRSIZE; 1998 pDecoder->SBHUFFRSIZE = SBHUFFRSIZE;
2026 pDecoder->SBRTEMPLATE = SDRTEMPLATE; 1999 pDecoder->SBRTEMPLATE = SDRTEMPLATE;
2027 pDecoder->SBRAT[0] = SDRAT[0]; 2000 pDecoder->SBRAT[0] = SDRAT[0];
2028 pDecoder->SBRAT[1] = SDRAT[1]; 2001 pDecoder->SBRAT[1] = SDRAT[1];
2029 pDecoder->SBRAT[2] = SDRAT[2]; 2002 pDecoder->SBRAT[2] = SDRAT[2];
2030 pDecoder->SBRAT[3] = SDRAT[3]; 2003 pDecoder->SBRAT[3] = SDRAT[3];
2031 BS = pDecoder->decode_Huffman(pStream, grContext); 2004 BS = pDecoder->decode_Huffman(pStream, grContext);
2032 if (BS == NULL) { 2005 if (BS == NULL) {
2033 m_pModule->JBig2_Free(SBSYMCODES); 2006 FX_Free(SBSYMCODES);
2034 m_pModule->JBig2_Free(SBSYMS); 2007 FX_Free(SBSYMS);
2035 delete SBHUFFFS; 2008 delete SBHUFFFS;
2036 delete SBHUFFDS; 2009 delete SBHUFFDS;
2037 delete SBHUFFDT; 2010 delete SBHUFFDT;
2038 delete SBHUFFRDW; 2011 delete SBHUFFRDW;
2039 delete SBHUFFRDH; 2012 delete SBHUFFRDH;
2040 delete SBHUFFRDX; 2013 delete SBHUFFRDX;
2041 delete SBHUFFRDY; 2014 delete SBHUFFRDY;
2042 delete SBHUFFRSIZE; 2015 delete SBHUFFRSIZE;
2043 delete pDecoder; 2016 delete pDecoder;
2044 goto failed; 2017 goto failed;
2045 } 2018 }
2046 m_pModule->JBig2_Free(SBSYMCODES); 2019 FX_Free(SBSYMCODES);
2047 m_pModule->JBig2_Free(SBSYMS); 2020 FX_Free(SBSYMS);
2048 delete SBHUFFFS; 2021 delete SBHUFFFS;
2049 delete SBHUFFDS; 2022 delete SBHUFFDS;
2050 delete SBHUFFDT; 2023 delete SBHUFFDT;
2051 delete SBHUFFRDW; 2024 delete SBHUFFRDW;
2052 delete SBHUFFRDH; 2025 delete SBHUFFRDH;
2053 delete SBHUFFRDX; 2026 delete SBHUFFRDX;
2054 delete SBHUFFRDY; 2027 delete SBHUFFRDY;
2055 delete SBHUFFRSIZE; 2028 delete SBHUFFRSIZE;
2056 delete pDecoder; 2029 delete pDecoder;
2057 } else if (REFAGGNINST == 1) { 2030 } else if (REFAGGNINST == 1) {
2058 SBNUMSYMS = SDNUMINSYMS + SDNUMNEWSYMS; 2031 SBNUMSYMS = SDNUMINSYMS + SDNUMNEWSYMS;
2059 nTmp = 1; 2032 nTmp = 1;
2060 while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { 2033 while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) {
2061 nTmp++; 2034 nTmp++;
2062 } 2035 }
2063 SBSYMCODELEN = (uint8_t)nTmp; 2036 SBSYMCODELEN = (uint8_t)nTmp;
2064 SBSYMCODES = (JBig2HuffmanCode*)m_pModule->JBig2_Malloc2( 2037 SBSYMCODES = FX_Alloc(JBig2HuffmanCode, SBNUMSYMS);
2065 SBNUMSYMS, sizeof(JBig2HuffmanCode));
2066 for (I = 0; I < SBNUMSYMS; I++) { 2038 for (I = 0; I < SBNUMSYMS; I++) {
2067 SBSYMCODES[I].codelen = SBSYMCODELEN; 2039 SBSYMCODES[I].codelen = SBSYMCODELEN;
2068 SBSYMCODES[I].code = I; 2040 SBSYMCODES[I].code = I;
2069 } 2041 }
2070 nVal = 0; 2042 nVal = 0;
2071 nBits = 0; 2043 nBits = 0;
2072 for (;;) { 2044 for (;;) {
2073 if (pStream->read1Bit(&nTmp) != 0) { 2045 if (pStream->read1Bit(&nTmp) != 0) {
2074 m_pModule->JBig2_Free(SBSYMCODES); 2046 FX_Free(SBSYMCODES);
2075 goto failed; 2047 goto failed;
2076 } 2048 }
2077 nVal = (nVal << 1) | nTmp; 2049 nVal = (nVal << 1) | nTmp;
2078 for (IDI = 0; IDI < SBNUMSYMS; IDI++) { 2050 for (IDI = 0; IDI < SBNUMSYMS; IDI++) {
2079 if ((nVal == SBSYMCODES[IDI].code) && 2051 if ((nVal == SBSYMCODES[IDI].code) &&
2080 (nBits == SBSYMCODES[IDI].codelen)) { 2052 (nBits == SBSYMCODES[IDI].codelen)) {
2081 break; 2053 break;
2082 } 2054 }
2083 } 2055 }
2084 if (IDI < SBNUMSYMS) { 2056 if (IDI < SBNUMSYMS) {
2085 break; 2057 break;
2086 } 2058 }
2087 } 2059 }
2088 m_pModule->JBig2_Free(SBSYMCODES); 2060 FX_Free(SBSYMCODES);
2089 SBHUFFRDX = new CJBig2_HuffmanTable(HuffmanTable_B15, 2061 SBHUFFRDX = new CJBig2_HuffmanTable(HuffmanTable_B15,
2090 FX_ArraySize(HuffmanTable_B15), 2062 FX_ArraySize(HuffmanTable_B15),
2091 HuffmanTable_HTOOB_B15); 2063 HuffmanTable_HTOOB_B15);
2092 SBHUFFRSIZE = new CJBig2_HuffmanTable(HuffmanTable_B1, 2064 SBHUFFRSIZE = new CJBig2_HuffmanTable(HuffmanTable_B1,
2093 FX_ArraySize(HuffmanTable_B1), 2065 FX_ArraySize(HuffmanTable_B1),
2094 HuffmanTable_HTOOB_B1); 2066 HuffmanTable_HTOOB_B1);
2095 if ((pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDXI) != 0) || 2067 if ((pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDXI) != 0) ||
2096 (pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDYI) != 0) || 2068 (pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDYI) != 0) ||
2097 (pHuffmanDecoder->decodeAValue(SBHUFFRSIZE, &nVal) != 0)) { 2069 (pHuffmanDecoder->decodeAValue(SBHUFFRSIZE, &nVal) != 0)) {
2098 delete SBHUFFRDX; 2070 delete SBHUFFRDX;
2099 delete SBHUFFRSIZE; 2071 delete SBHUFFRSIZE;
2100 goto failed; 2072 goto failed;
2101 } 2073 }
2102 delete SBHUFFRDX; 2074 delete SBHUFFRDX;
2103 delete SBHUFFRSIZE; 2075 delete SBHUFFRSIZE;
2104 pStream->alignByte(); 2076 pStream->alignByte();
2105 nTmp = pStream->getOffset(); 2077 nTmp = pStream->getOffset();
2106 SBSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 2078 SBSYMS = FX_Alloc(CJBig2_Image*, SBNUMSYMS);
2107 SBNUMSYMS, sizeof(CJBig2_Image*));
2108 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); 2079 JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*));
2109 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, 2080 JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS,
2110 NSYMSDECODED * sizeof(CJBig2_Image*)); 2081 NSYMSDECODED * sizeof(CJBig2_Image*));
2111 JBIG2_ALLOC(pGRRD, CJBig2_GRRDProc()); 2082 pGRRD = new CJBig2_GRRDProc();
2112 pGRRD->GRW = SYMWIDTH; 2083 pGRRD->GRW = SYMWIDTH;
2113 pGRRD->GRH = HCHEIGHT; 2084 pGRRD->GRH = HCHEIGHT;
2114 pGRRD->GRTEMPLATE = SDRTEMPLATE; 2085 pGRRD->GRTEMPLATE = SDRTEMPLATE;
2115 pGRRD->GRREFERENCE = SBSYMS[IDI]; 2086 pGRRD->GRREFERENCE = SBSYMS[IDI];
2116 pGRRD->GRREFERENCEDX = RDXI; 2087 pGRRD->GRREFERENCEDX = RDXI;
2117 pGRRD->GRREFERENCEDY = RDYI; 2088 pGRRD->GRREFERENCEDY = RDYI;
2118 pGRRD->TPGRON = 0; 2089 pGRRD->TPGRON = 0;
2119 pGRRD->GRAT[0] = SDRAT[0]; 2090 pGRRD->GRAT[0] = SDRAT[0];
2120 pGRRD->GRAT[1] = SDRAT[1]; 2091 pGRRD->GRAT[1] = SDRAT[1];
2121 pGRRD->GRAT[2] = SDRAT[2]; 2092 pGRRD->GRAT[2] = SDRAT[2];
2122 pGRRD->GRAT[3] = SDRAT[3]; 2093 pGRRD->GRAT[3] = SDRAT[3];
2123 pArithDecoder = new CJBig2_ArithDecoder(pStream); 2094 pArithDecoder = new CJBig2_ArithDecoder(pStream);
2124 BS = pGRRD->decode(pArithDecoder, grContext); 2095 BS = pGRRD->decode(pArithDecoder, grContext);
2125 if (BS == NULL) { 2096 if (BS == NULL) {
2126 m_pModule->JBig2_Free(SBSYMS); 2097 FX_Free(SBSYMS);
2127 delete pGRRD; 2098 delete pGRRD;
2128 delete pArithDecoder; 2099 delete pArithDecoder;
2129 goto failed; 2100 goto failed;
2130 } 2101 }
2131 pStream->alignByte(); 2102 pStream->alignByte();
2132 pStream->offset(2); 2103 pStream->offset(2);
2133 if ((FX_DWORD)nVal != (pStream->getOffset() - nTmp)) { 2104 if ((FX_DWORD)nVal != (pStream->getOffset() - nTmp)) {
2134 delete BS; 2105 delete BS;
2135 m_pModule->JBig2_Free(SBSYMS); 2106 FX_Free(SBSYMS);
2136 delete pGRRD; 2107 delete pGRRD;
2137 delete pArithDecoder; 2108 delete pArithDecoder;
2138 goto failed; 2109 goto failed;
2139 } 2110 }
2140 m_pModule->JBig2_Free(SBSYMS); 2111 FX_Free(SBSYMS);
2141 delete pGRRD; 2112 delete pGRRD;
2142 delete pArithDecoder; 2113 delete pArithDecoder;
2143 } 2114 }
2144 SDNEWSYMS[NSYMSDECODED] = BS; 2115 SDNEWSYMS[NSYMSDECODED] = BS;
2145 } 2116 }
2146 if (SDREFAGG == 0) { 2117 if (SDREFAGG == 0) {
2147 SDNEWSYMWIDTHS[NSYMSDECODED] = SYMWIDTH; 2118 SDNEWSYMWIDTHS[NSYMSDECODED] = SYMWIDTH;
2148 } 2119 }
2149 NSYMSDECODED = NSYMSDECODED + 1; 2120 NSYMSDECODED = NSYMSDECODED + 1;
2150 } 2121 }
2151 if (SDREFAGG == 0) { 2122 if (SDREFAGG == 0) {
2152 if (pHuffmanDecoder->decodeAValue(SDHUFFBMSIZE, (int32_t*)&BMSIZE) != 0) { 2123 if (pHuffmanDecoder->decodeAValue(SDHUFFBMSIZE, (int32_t*)&BMSIZE) != 0) {
2153 goto failed; 2124 goto failed;
2154 } 2125 }
2155 pStream->alignByte(); 2126 pStream->alignByte();
2156 if (BMSIZE == 0) { 2127 if (BMSIZE == 0) {
2157 stride = (TOTWIDTH + 7) >> 3; 2128 stride = (TOTWIDTH + 7) >> 3;
2158 if (pStream->getByteLeft() >= stride * HCHEIGHT) { 2129 if (pStream->getByteLeft() >= stride * HCHEIGHT) {
2159 JBIG2_ALLOC(BHC, CJBig2_Image(TOTWIDTH, HCHEIGHT)); 2130 BHC = new CJBig2_Image(TOTWIDTH, HCHEIGHT);
2160 for (I = 0; I < HCHEIGHT; I++) { 2131 for (I = 0; I < HCHEIGHT; I++) {
2161 JBIG2_memcpy(BHC->m_pData + I * BHC->m_nStride, 2132 JBIG2_memcpy(BHC->m_pData + I * BHC->m_nStride,
2162 pStream->getPointer(), stride); 2133 pStream->getPointer(), stride);
2163 pStream->offset(stride); 2134 pStream->offset(stride);
2164 } 2135 }
2165 } else { 2136 } else {
2166 goto failed; 2137 goto failed;
2167 } 2138 }
2168 } else { 2139 } else {
2169 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 2140 pGRD = new CJBig2_GRDProc();
2170 pGRD->MMR = 1; 2141 pGRD->MMR = 1;
2171 pGRD->GBW = TOTWIDTH; 2142 pGRD->GBW = TOTWIDTH;
2172 pGRD->GBH = HCHEIGHT; 2143 pGRD->GBH = HCHEIGHT;
2173 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHC, pStream); 2144 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHC, pStream);
2174 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { 2145 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) {
2175 pGRD->Continue_decode(pPause); 2146 pGRD->Continue_decode(pPause);
2176 } 2147 }
2177 delete pGRD; 2148 delete pGRD;
2178 pStream->alignByte(); 2149 pStream->alignByte();
2179 } 2150 }
2180 nTmp = 0; 2151 nTmp = 0;
2181 if (!BHC) { 2152 if (!BHC) {
2182 continue; 2153 continue;
2183 } 2154 }
2184 for (I = HCFIRSTSYM; I < NSYMSDECODED; I++) { 2155 for (I = HCFIRSTSYM; I < NSYMSDECODED; I++) {
2185 SDNEWSYMS[I] = BHC->subImage(nTmp, 0, SDNEWSYMWIDTHS[I], HCHEIGHT); 2156 SDNEWSYMS[I] = BHC->subImage(nTmp, 0, SDNEWSYMWIDTHS[I], HCHEIGHT);
2186 nTmp += SDNEWSYMWIDTHS[I]; 2157 nTmp += SDNEWSYMWIDTHS[I];
2187 } 2158 }
2188 delete BHC; 2159 delete BHC;
2189 BHC = NULL; 2160 BHC = NULL;
2190 } 2161 }
2191 } 2162 }
2192 EXINDEX = 0; 2163 EXINDEX = 0;
2193 CUREXFLAG = 0; 2164 CUREXFLAG = 0;
2194 pTable = new CJBig2_HuffmanTable( 2165 pTable = new CJBig2_HuffmanTable(
2195 HuffmanTable_B1, FX_ArraySize(HuffmanTable_B1), HuffmanTable_HTOOB_B1); 2166 HuffmanTable_B1, FX_ArraySize(HuffmanTable_B1), HuffmanTable_HTOOB_B1);
2196 EXFLAGS = (FX_BOOL*)m_pModule->JBig2_Malloc2(sizeof(FX_BOOL), 2167 EXFLAGS = FX_Alloc(FX_BOOL, SDNUMINSYMS + SDNUMNEWSYMS);
2197 (SDNUMINSYMS + SDNUMNEWSYMS));
2198 while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { 2168 while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) {
2199 if (pHuffmanDecoder->decodeAValue(pTable, (int*)&EXRUNLENGTH) != 0) { 2169 if (pHuffmanDecoder->decodeAValue(pTable, (int*)&EXRUNLENGTH) != 0) {
2200 delete pTable; 2170 delete pTable;
2201 m_pModule->JBig2_Free(EXFLAGS); 2171 FX_Free(EXFLAGS);
2202 goto failed; 2172 goto failed;
2203 } 2173 }
2204 if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) { 2174 if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) {
2205 delete pTable; 2175 delete pTable;
2206 m_pModule->JBig2_Free(EXFLAGS); 2176 FX_Free(EXFLAGS);
2207 goto failed; 2177 goto failed;
2208 } 2178 }
2209 if (EXRUNLENGTH != 0) { 2179 if (EXRUNLENGTH != 0) {
2210 for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) { 2180 for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) {
2211 EXFLAGS[I] = CUREXFLAG; 2181 EXFLAGS[I] = CUREXFLAG;
2212 } 2182 }
2213 } 2183 }
2214 EXINDEX = EXINDEX + EXRUNLENGTH; 2184 EXINDEX = EXINDEX + EXRUNLENGTH;
2215 CUREXFLAG = !CUREXFLAG; 2185 CUREXFLAG = !CUREXFLAG;
2216 } 2186 }
2217 delete pTable; 2187 delete pTable;
2218 JBIG2_ALLOC(pDict, CJBig2_SymbolDict()); 2188 pDict = new CJBig2_SymbolDict();
2219 pDict->SDNUMEXSYMS = SDNUMEXSYMS; 2189 pDict->SDNUMEXSYMS = SDNUMEXSYMS;
2220 pDict->SDEXSYMS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 2190 pDict->SDEXSYMS = FX_Alloc(CJBig2_Image*, SDNUMEXSYMS);
2221 sizeof(CJBig2_Image*), SDNUMEXSYMS);
2222 I = J = 0; 2191 I = J = 0;
2223 for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) { 2192 for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) {
2224 if (EXFLAGS[I] && J < SDNUMEXSYMS) { 2193 if (EXFLAGS[I] && J < SDNUMEXSYMS) {
2225 if (I < SDNUMINSYMS) { 2194 if (I < SDNUMINSYMS) {
2226 JBIG2_ALLOC(pDict->SDEXSYMS[J], CJBig2_Image(*SDINSYMS[I])); 2195 pDict->SDEXSYMS[J] = new CJBig2_Image(*SDINSYMS[I]);
2227 } else { 2196 } else {
2228 pDict->SDEXSYMS[J] = SDNEWSYMS[I - SDNUMINSYMS]; 2197 pDict->SDEXSYMS[J] = SDNEWSYMS[I - SDNUMINSYMS];
2229 } 2198 }
2230 J = J + 1; 2199 J = J + 1;
2231 } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) { 2200 } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) {
2232 delete SDNEWSYMS[I - SDNUMINSYMS]; 2201 delete SDNEWSYMS[I - SDNUMINSYMS];
2233 } 2202 }
2234 } 2203 }
2235 if (J < SDNUMEXSYMS) { 2204 if (J < SDNUMEXSYMS) {
2236 pDict->SDNUMEXSYMS = J; 2205 pDict->SDNUMEXSYMS = J;
2237 } 2206 }
2238 m_pModule->JBig2_Free(EXFLAGS); 2207 FX_Free(EXFLAGS);
2239 m_pModule->JBig2_Free(SDNEWSYMS); 2208 FX_Free(SDNEWSYMS);
2240 if (SDREFAGG == 0) { 2209 if (SDREFAGG == 0) {
2241 m_pModule->JBig2_Free(SDNEWSYMWIDTHS); 2210 FX_Free(SDNEWSYMWIDTHS);
2242 } 2211 }
2243 delete pHuffmanDecoder; 2212 delete pHuffmanDecoder;
2244 return pDict; 2213 return pDict;
2245 failed: 2214 failed:
2246 for (I = 0; I < NSYMSDECODED; I++) { 2215 for (I = 0; I < NSYMSDECODED; I++) {
2247 delete SDNEWSYMS[I]; 2216 delete SDNEWSYMS[I];
2248 } 2217 }
2249 m_pModule->JBig2_Free(SDNEWSYMS); 2218 FX_Free(SDNEWSYMS);
2250 if (SDREFAGG == 0) { 2219 if (SDREFAGG == 0) {
2251 m_pModule->JBig2_Free(SDNEWSYMWIDTHS); 2220 FX_Free(SDNEWSYMWIDTHS);
2252 } 2221 }
2253 delete pHuffmanDecoder; 2222 delete pHuffmanDecoder;
2254 return NULL; 2223 return NULL;
2255 } 2224 }
2256 CJBig2_Image* CJBig2_HTRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, 2225 CJBig2_Image* CJBig2_HTRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder,
2257 JBig2ArithCtx* gbContext, 2226 JBig2ArithCtx* gbContext,
2258 IFX_Pause* pPause) { 2227 IFX_Pause* pPause) {
2259 FX_DWORD ng, mg; 2228 FX_DWORD ng, mg;
2260 int32_t x, y; 2229 int32_t x, y;
2261 CJBig2_Image* HSKIP;
2262 FX_DWORD HBPP; 2230 FX_DWORD HBPP;
2263 FX_DWORD* GI; 2231 FX_DWORD* GI;
2264 CJBig2_Image* HTREG; 2232 CJBig2_Image* HSKIP = nullptr;
2265 CJBig2_GSIDProc* pGID; 2233 CJBig2_Image* HTREG = new CJBig2_Image(HBW, HBH);
2266 JBIG2_ALLOC(HTREG, CJBig2_Image(HBW, HBH));
2267 HTREG->fill(HDEFPIXEL); 2234 HTREG->fill(HDEFPIXEL);
2268 HSKIP = NULL;
2269 if (HENABLESKIP == 1) { 2235 if (HENABLESKIP == 1) {
2270 JBIG2_ALLOC(HSKIP, CJBig2_Image(HGW, HGH)); 2236 HSKIP = new CJBig2_Image(HGW, HGH);
2271 for (mg = 0; mg < HGH; mg++) { 2237 for (mg = 0; mg < HGH; mg++) {
2272 for (ng = 0; ng < HGW; ng++) { 2238 for (ng = 0; ng < HGW; ng++) {
2273 x = (HGX + mg * HRY + ng * HRX) >> 8; 2239 x = (HGX + mg * HRY + ng * HRX) >> 8;
2274 y = (HGY + mg * HRX - ng * HRY) >> 8; 2240 y = (HGY + mg * HRX - ng * HRY) >> 8;
2275 if ((x + HPW <= 0) | (x >= (int32_t)HBW) | (y + HPH <= 0) | 2241 if ((x + HPW <= 0) | (x >= (int32_t)HBW) | (y + HPH <= 0) |
2276 (y >= (int32_t)HPH)) { 2242 (y >= (int32_t)HPH)) {
2277 HSKIP->setPixel(ng, mg, 1); 2243 HSKIP->setPixel(ng, mg, 1);
2278 } else { 2244 } else {
2279 HSKIP->setPixel(ng, mg, 0); 2245 HSKIP->setPixel(ng, mg, 0);
2280 } 2246 }
2281 } 2247 }
2282 } 2248 }
2283 } 2249 }
2284 HBPP = 1; 2250 HBPP = 1;
2285 while ((FX_DWORD)(1 << HBPP) < HNUMPATS) { 2251 while ((FX_DWORD)(1 << HBPP) < HNUMPATS) {
2286 HBPP++; 2252 HBPP++;
2287 } 2253 }
2288 JBIG2_ALLOC(pGID, CJBig2_GSIDProc()); 2254 CJBig2_GSIDProc* pGID = new CJBig2_GSIDProc();
2289 pGID->GSMMR = HMMR; 2255 pGID->GSMMR = HMMR;
2290 pGID->GSW = HGW; 2256 pGID->GSW = HGW;
2291 pGID->GSH = HGH; 2257 pGID->GSH = HGH;
2292 pGID->GSBPP = (uint8_t)HBPP; 2258 pGID->GSBPP = (uint8_t)HBPP;
2293 pGID->GSUSESKIP = HENABLESKIP; 2259 pGID->GSUSESKIP = HENABLESKIP;
2294 pGID->GSKIP = HSKIP; 2260 pGID->GSKIP = HSKIP;
2295 pGID->GSTEMPLATE = HTEMPLATE; 2261 pGID->GSTEMPLATE = HTEMPLATE;
2296 GI = pGID->decode_Arith(pArithDecoder, gbContext, pPause); 2262 GI = pGID->decode_Arith(pArithDecoder, gbContext, pPause);
2297 if (GI == NULL) { 2263 if (GI == NULL) {
2298 goto failed; 2264 goto failed;
2299 } 2265 }
2300 for (mg = 0; mg < HGH; mg++) { 2266 for (mg = 0; mg < HGH; mg++) {
2301 for (ng = 0; ng < HGW; ng++) { 2267 for (ng = 0; ng < HGW; ng++) {
2302 x = (HGX + mg * HRY + ng * HRX) >> 8; 2268 x = (HGX + mg * HRY + ng * HRX) >> 8;
2303 y = (HGY + mg * HRX - ng * HRY) >> 8; 2269 y = (HGY + mg * HRX - ng * HRY) >> 8;
2304 FX_DWORD pat_index = GI[mg * HGW + ng]; 2270 FX_DWORD pat_index = GI[mg * HGW + ng];
2305 if (pat_index >= HNUMPATS) { 2271 if (pat_index >= HNUMPATS) {
2306 pat_index = HNUMPATS - 1; 2272 pat_index = HNUMPATS - 1;
2307 } 2273 }
2308 HTREG->composeFrom(x, y, HPATS[pat_index], HCOMBOP); 2274 HTREG->composeFrom(x, y, HPATS[pat_index], HCOMBOP);
2309 } 2275 }
2310 } 2276 }
2311 m_pModule->JBig2_Free(GI); 2277 FX_Free(GI);
2312 delete HSKIP; 2278 delete HSKIP;
2313 delete pGID; 2279 delete pGID;
2314 return HTREG; 2280 return HTREG;
2315 failed: 2281 failed:
2316 delete HSKIP; 2282 delete HSKIP;
2317 delete pGID; 2283 delete pGID;
2318 delete HTREG; 2284 delete HTREG;
2319 return NULL; 2285 return NULL;
2320 } 2286 }
2321 CJBig2_Image* CJBig2_HTRDProc::decode_MMR(CJBig2_BitStream* pStream, 2287 CJBig2_Image* CJBig2_HTRDProc::decode_MMR(CJBig2_BitStream* pStream,
2322 IFX_Pause* pPause) { 2288 IFX_Pause* pPause) {
2323 FX_DWORD ng, mg; 2289 FX_DWORD ng, mg;
2324 int32_t x, y; 2290 int32_t x, y;
2325 FX_DWORD HBPP;
2326 FX_DWORD* GI; 2291 FX_DWORD* GI;
2327 CJBig2_Image* HTREG; 2292 CJBig2_Image* HTREG = new CJBig2_Image(HBW, HBH);
2328 CJBig2_GSIDProc* pGID;
2329 JBIG2_ALLOC(HTREG, CJBig2_Image(HBW, HBH));
2330 HTREG->fill(HDEFPIXEL); 2293 HTREG->fill(HDEFPIXEL);
2331 HBPP = 1; 2294 FX_DWORD HBPP = 1;
2332 while ((FX_DWORD)(1 << HBPP) < HNUMPATS) { 2295 while ((FX_DWORD)(1 << HBPP) < HNUMPATS) {
2333 HBPP++; 2296 HBPP++;
2334 } 2297 }
2335 JBIG2_ALLOC(pGID, CJBig2_GSIDProc()); 2298 CJBig2_GSIDProc* pGID = new CJBig2_GSIDProc();
2336 pGID->GSMMR = HMMR; 2299 pGID->GSMMR = HMMR;
2337 pGID->GSW = HGW; 2300 pGID->GSW = HGW;
2338 pGID->GSH = HGH; 2301 pGID->GSH = HGH;
2339 pGID->GSBPP = (uint8_t)HBPP; 2302 pGID->GSBPP = (uint8_t)HBPP;
2340 pGID->GSUSESKIP = 0; 2303 pGID->GSUSESKIP = 0;
2341 GI = pGID->decode_MMR(pStream, pPause); 2304 GI = pGID->decode_MMR(pStream, pPause);
2342 if (GI == NULL) { 2305 if (GI == NULL) {
2343 goto failed; 2306 goto failed;
2344 } 2307 }
2345 for (mg = 0; mg < HGH; mg++) { 2308 for (mg = 0; mg < HGH; mg++) {
2346 for (ng = 0; ng < HGW; ng++) { 2309 for (ng = 0; ng < HGW; ng++) {
2347 x = (HGX + mg * HRY + ng * HRX) >> 8; 2310 x = (HGX + mg * HRY + ng * HRX) >> 8;
2348 y = (HGY + mg * HRX - ng * HRY) >> 8; 2311 y = (HGY + mg * HRX - ng * HRY) >> 8;
2349 FX_DWORD pat_index = GI[mg * HGW + ng]; 2312 FX_DWORD pat_index = GI[mg * HGW + ng];
2350 if (pat_index >= HNUMPATS) { 2313 if (pat_index >= HNUMPATS) {
2351 pat_index = HNUMPATS - 1; 2314 pat_index = HNUMPATS - 1;
2352 } 2315 }
2353 HTREG->composeFrom(x, y, HPATS[pat_index], HCOMBOP); 2316 HTREG->composeFrom(x, y, HPATS[pat_index], HCOMBOP);
2354 } 2317 }
2355 } 2318 }
2356 m_pModule->JBig2_Free(GI); 2319 FX_Free(GI);
2357 delete pGID; 2320 delete pGID;
2358 return HTREG; 2321 return HTREG;
2359 failed: 2322 failed:
2360 delete pGID; 2323 delete pGID;
2361 delete HTREG; 2324 delete HTREG;
2362 return NULL; 2325 return NULL;
2363 } 2326 }
2364 CJBig2_PatternDict* CJBig2_PDDProc::decode_Arith( 2327 CJBig2_PatternDict* CJBig2_PDDProc::decode_Arith(
2365 CJBig2_ArithDecoder* pArithDecoder, 2328 CJBig2_ArithDecoder* pArithDecoder,
2366 JBig2ArithCtx* gbContext, 2329 JBig2ArithCtx* gbContext,
2367 IFX_Pause* pPause) { 2330 IFX_Pause* pPause) {
2368 FX_DWORD GRAY; 2331 FX_DWORD GRAY;
2369 CJBig2_Image* BHDC = NULL; 2332 CJBig2_Image* BHDC = NULL;
2370 CJBig2_PatternDict* pDict; 2333 CJBig2_PatternDict* pDict = new CJBig2_PatternDict();
2371 CJBig2_GRDProc* pGRD;
2372 pDict = new CJBig2_PatternDict();
2373 pDict->NUMPATS = GRAYMAX + 1; 2334 pDict->NUMPATS = GRAYMAX + 1;
2374 pDict->HDPATS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 2335 pDict->HDPATS = FX_Alloc(CJBig2_Image*, pDict->NUMPATS);
2375 sizeof(CJBig2_Image*), pDict->NUMPATS);
2376 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS); 2336 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS);
2377 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 2337 CJBig2_GRDProc* pGRD = new CJBig2_GRDProc();
2378 pGRD->MMR = HDMMR; 2338 pGRD->MMR = HDMMR;
2379 pGRD->GBW = (GRAYMAX + 1) * HDPW; 2339 pGRD->GBW = (GRAYMAX + 1) * HDPW;
2380 pGRD->GBH = HDPH; 2340 pGRD->GBH = HDPH;
2381 pGRD->GBTEMPLATE = HDTEMPLATE; 2341 pGRD->GBTEMPLATE = HDTEMPLATE;
2382 pGRD->TPGDON = 0; 2342 pGRD->TPGDON = 0;
2383 pGRD->USESKIP = 0; 2343 pGRD->USESKIP = 0;
2384 pGRD->GBAT[0] = -(int32_t)HDPW; 2344 pGRD->GBAT[0] = -(int32_t)HDPW;
2385 pGRD->GBAT[1] = 0; 2345 pGRD->GBAT[1] = 0;
2386 if (pGRD->GBTEMPLATE == 0) { 2346 if (pGRD->GBTEMPLATE == 0) {
2387 pGRD->GBAT[2] = -3; 2347 pGRD->GBAT[2] = -3;
(...skipping 22 matching lines...) Expand all
2410 return pDict; 2370 return pDict;
2411 failed: 2371 failed:
2412 delete pDict; 2372 delete pDict;
2413 return NULL; 2373 return NULL;
2414 } 2374 }
2415 2375
2416 CJBig2_PatternDict* CJBig2_PDDProc::decode_MMR(CJBig2_BitStream* pStream, 2376 CJBig2_PatternDict* CJBig2_PDDProc::decode_MMR(CJBig2_BitStream* pStream,
2417 IFX_Pause* pPause) { 2377 IFX_Pause* pPause) {
2418 FX_DWORD GRAY; 2378 FX_DWORD GRAY;
2419 CJBig2_Image* BHDC = NULL; 2379 CJBig2_Image* BHDC = NULL;
2420 CJBig2_GRDProc* pGRD;
2421 CJBig2_PatternDict* pDict = new CJBig2_PatternDict(); 2380 CJBig2_PatternDict* pDict = new CJBig2_PatternDict();
2422 pDict->NUMPATS = GRAYMAX + 1; 2381 pDict->NUMPATS = GRAYMAX + 1;
2423 pDict->HDPATS = (CJBig2_Image**)m_pModule->JBig2_Malloc2( 2382 pDict->HDPATS = FX_Alloc(CJBig2_Image*, pDict->NUMPATS);
2424 sizeof(CJBig2_Image*), pDict->NUMPATS);
2425 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS); 2383 JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS);
2426 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 2384 CJBig2_GRDProc* pGRD = new CJBig2_GRDProc();
2427 pGRD->MMR = HDMMR; 2385 pGRD->MMR = HDMMR;
2428 pGRD->GBW = (GRAYMAX + 1) * HDPW; 2386 pGRD->GBW = (GRAYMAX + 1) * HDPW;
2429 pGRD->GBH = HDPH; 2387 pGRD->GBH = HDPH;
2430 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHDC, pStream); 2388 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHDC, pStream);
2431 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { 2389 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) {
2432 pGRD->Continue_decode(pPause); 2390 pGRD->Continue_decode(pPause);
2433 } 2391 }
2434 if (BHDC == NULL) { 2392 if (BHDC == NULL) {
2435 delete pGRD; 2393 delete pGRD;
2436 goto failed; 2394 goto failed;
(...skipping 10 matching lines...) Expand all
2447 delete pDict; 2405 delete pDict;
2448 return NULL; 2406 return NULL;
2449 } 2407 }
2450 FX_DWORD* CJBig2_GSIDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, 2408 FX_DWORD* CJBig2_GSIDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder,
2451 JBig2ArithCtx* gbContext, 2409 JBig2ArithCtx* gbContext,
2452 IFX_Pause* pPause) { 2410 IFX_Pause* pPause) {
2453 CJBig2_Image** GSPLANES; 2411 CJBig2_Image** GSPLANES;
2454 int32_t J, K; 2412 int32_t J, K;
2455 FX_DWORD x, y; 2413 FX_DWORD x, y;
2456 FX_DWORD* GSVALS; 2414 FX_DWORD* GSVALS;
2457 CJBig2_GRDProc* pGRD; 2415 GSPLANES = FX_Alloc(CJBig2_Image*, GSBPP);
2458 GSPLANES =
2459 (CJBig2_Image**)m_pModule->JBig2_Malloc2(sizeof(CJBig2_Image*), GSBPP);
2460 if (!GSPLANES) { 2416 if (!GSPLANES) {
2461 return NULL; 2417 return NULL;
2462 } 2418 }
2463 GSVALS = (FX_DWORD*)m_pModule->JBig2_Malloc3(sizeof(FX_DWORD), GSW, GSH); 2419 GSVALS = FX_Alloc2D(FX_DWORD, GSW, GSH);
2464 if (!GSVALS) { 2420 if (!GSVALS) {
2465 m_pModule->JBig2_Free(GSPLANES); 2421 FX_Free(GSPLANES);
2466 return NULL; 2422 return NULL;
2467 } 2423 }
2468 JBIG2_memset(GSPLANES, 0, sizeof(CJBig2_Image*) * GSBPP); 2424 JBIG2_memset(GSPLANES, 0, sizeof(CJBig2_Image*) * GSBPP);
2469 JBIG2_memset(GSVALS, 0, sizeof(FX_DWORD) * GSW * GSH); 2425 JBIG2_memset(GSVALS, 0, sizeof(FX_DWORD) * GSW * GSH);
2470 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 2426 CJBig2_GRDProc* pGRD = new CJBig2_GRDProc();
2471 pGRD->MMR = GSMMR; 2427 pGRD->MMR = GSMMR;
2472 pGRD->GBW = GSW; 2428 pGRD->GBW = GSW;
2473 pGRD->GBH = GSH; 2429 pGRD->GBH = GSH;
2474 pGRD->GBTEMPLATE = GSTEMPLATE; 2430 pGRD->GBTEMPLATE = GSTEMPLATE;
2475 pGRD->TPGDON = 0; 2431 pGRD->TPGDON = 0;
2476 pGRD->USESKIP = GSUSESKIP; 2432 pGRD->USESKIP = GSUSESKIP;
2477 pGRD->SKIP = GSKIP; 2433 pGRD->SKIP = GSKIP;
2478 if (GSTEMPLATE <= 1) { 2434 if (GSTEMPLATE <= 1) {
2479 pGRD->GBAT[0] = 3; 2435 pGRD->GBAT[0] = 3;
2480 } else { 2436 } else {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2516 for (y = 0; y < GSH; y++) { 2472 for (y = 0; y < GSH; y++) {
2517 for (x = 0; x < GSW; x++) { 2473 for (x = 0; x < GSW; x++) {
2518 for (J = 0; J < GSBPP; J++) { 2474 for (J = 0; J < GSBPP; J++) {
2519 GSVALS[y * GSW + x] |= GSPLANES[J]->getPixel(x, y) << J; 2475 GSVALS[y * GSW + x] |= GSPLANES[J]->getPixel(x, y) << J;
2520 } 2476 }
2521 } 2477 }
2522 } 2478 }
2523 for (J = 0; J < GSBPP; J++) { 2479 for (J = 0; J < GSBPP; J++) {
2524 delete GSPLANES[J]; 2480 delete GSPLANES[J];
2525 } 2481 }
2526 m_pModule->JBig2_Free(GSPLANES); 2482 FX_Free(GSPLANES);
2527 delete pGRD; 2483 delete pGRD;
2528 return GSVALS; 2484 return GSVALS;
2529 failed: 2485 failed:
2530 m_pModule->JBig2_Free(GSPLANES); 2486 FX_Free(GSPLANES);
2531 delete pGRD; 2487 delete pGRD;
2532 m_pModule->JBig2_Free(GSVALS); 2488 FX_Free(GSVALS);
2533 return NULL; 2489 return NULL;
2534 } 2490 }
2535 FX_DWORD* CJBig2_GSIDProc::decode_MMR(CJBig2_BitStream* pStream, 2491 FX_DWORD* CJBig2_GSIDProc::decode_MMR(CJBig2_BitStream* pStream,
2536 IFX_Pause* pPause) { 2492 IFX_Pause* pPause) {
2537 CJBig2_Image** GSPLANES; 2493 CJBig2_Image** GSPLANES;
2538 int32_t J, K; 2494 int32_t J, K;
2539 FX_DWORD x, y; 2495 FX_DWORD x, y;
2540 FX_DWORD* GSVALS; 2496 FX_DWORD* GSVALS;
2541 CJBig2_GRDProc* pGRD; 2497 GSPLANES = FX_Alloc(CJBig2_Image*, GSBPP);
2542 GSPLANES =
2543 (CJBig2_Image**)m_pModule->JBig2_Malloc2(sizeof(CJBig2_Image*), GSBPP);
2544 if (!GSPLANES) { 2498 if (!GSPLANES) {
2545 return NULL; 2499 return NULL;
2546 } 2500 }
2547 GSVALS = (FX_DWORD*)m_pModule->JBig2_Malloc3(sizeof(FX_DWORD), GSW, GSH); 2501 GSVALS = FX_Alloc2D(FX_DWORD, GSW, GSH);
2548 if (!GSVALS) { 2502 if (!GSVALS) {
2549 if (GSPLANES) { 2503 FX_Free(GSPLANES);
2550 m_pModule->JBig2_Free(GSPLANES);
2551 }
2552 return NULL; 2504 return NULL;
2553 } 2505 }
2554 JBIG2_memset(GSPLANES, 0, sizeof(CJBig2_Image*) * GSBPP); 2506 JBIG2_memset(GSPLANES, 0, sizeof(CJBig2_Image*) * GSBPP);
2555 JBIG2_memset(GSVALS, 0, sizeof(FX_DWORD) * GSW * GSH); 2507 JBIG2_memset(GSVALS, 0, sizeof(FX_DWORD) * GSW * GSH);
2556 JBIG2_ALLOC(pGRD, CJBig2_GRDProc()); 2508 CJBig2_GRDProc* pGRD = new CJBig2_GRDProc();
2557 pGRD->MMR = GSMMR; 2509 pGRD->MMR = GSMMR;
2558 pGRD->GBW = GSW; 2510 pGRD->GBW = GSW;
2559 pGRD->GBH = GSH; 2511 pGRD->GBH = GSH;
2560 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&GSPLANES[GSBPP - 1], pStream); 2512 FXCODEC_STATUS status = pGRD->Start_decode_MMR(&GSPLANES[GSBPP - 1], pStream);
2561 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { 2513 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) {
2562 pGRD->Continue_decode(pPause); 2514 pGRD->Continue_decode(pPause);
2563 } 2515 }
2564 if (GSPLANES[GSBPP - 1] == NULL) { 2516 if (GSPLANES[GSBPP - 1] == NULL) {
2565 goto failed; 2517 goto failed;
2566 } 2518 }
(...skipping 19 matching lines...) Expand all
2586 for (y = 0; y < GSH; y++) { 2538 for (y = 0; y < GSH; y++) {
2587 for (x = 0; x < GSW; x++) { 2539 for (x = 0; x < GSW; x++) {
2588 for (J = 0; J < GSBPP; J++) { 2540 for (J = 0; J < GSBPP; J++) {
2589 GSVALS[y * GSW + x] |= GSPLANES[J]->getPixel(x, y) << J; 2541 GSVALS[y * GSW + x] |= GSPLANES[J]->getPixel(x, y) << J;
2590 } 2542 }
2591 } 2543 }
2592 } 2544 }
2593 for (J = 0; J < GSBPP; J++) { 2545 for (J = 0; J < GSBPP; J++) {
2594 delete GSPLANES[J]; 2546 delete GSPLANES[J];
2595 } 2547 }
2596 m_pModule->JBig2_Free(GSPLANES); 2548 FX_Free(GSPLANES);
2597 delete pGRD; 2549 delete pGRD;
2598 return GSVALS; 2550 return GSVALS;
2599 failed: 2551 failed:
2600 m_pModule->JBig2_Free(GSPLANES); 2552 FX_Free(GSPLANES);
2601 delete pGRD; 2553 delete pGRD;
2602 m_pModule->JBig2_Free(GSVALS); 2554 FX_Free(GSVALS);
2603 return NULL; 2555 return NULL;
2604 } 2556 }
2605 FXCODEC_STATUS CJBig2_GRDProc::Start_decode_Arith( 2557 FXCODEC_STATUS CJBig2_GRDProc::Start_decode_Arith(
2606 CJBig2_Image** pImage, 2558 CJBig2_Image** pImage,
2607 CJBig2_ArithDecoder* pArithDecoder, 2559 CJBig2_ArithDecoder* pArithDecoder,
2608 JBig2ArithCtx* gbContext, 2560 JBig2ArithCtx* gbContext,
2609 IFX_Pause* pPause) { 2561 IFX_Pause* pPause) {
2610 if (GBW == 0 || GBH == 0) { 2562 if (GBW == 0 || GBH == 0) {
2611 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; 2563 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH;
2612 return FXCODEC_STATUS_DECODE_FINISH; 2564 return FXCODEC_STATUS_DECODE_FINISH;
2613 } 2565 }
2614 m_ProssiveStatus = FXCODEC_STATUS_DECODE_READY; 2566 m_ProssiveStatus = FXCODEC_STATUS_DECODE_READY;
2615 m_pPause = pPause; 2567 m_pPause = pPause;
2616 if (*pImage == NULL) { 2568 if (!*pImage)
2617 JBIG2_ALLOC((*pImage), CJBig2_Image(GBW, GBH)); 2569 *pImage = new CJBig2_Image(GBW, GBH);
2618 }
2619 if ((*pImage)->m_pData == NULL) { 2570 if ((*pImage)->m_pData == NULL) {
2620 delete *pImage; 2571 delete *pImage;
2621 *pImage = NULL; 2572 *pImage = NULL;
2622 m_ProssiveStatus = FXCODEC_STATUS_ERROR; 2573 m_ProssiveStatus = FXCODEC_STATUS_ERROR;
2623 return FXCODEC_STATUS_ERROR; 2574 return FXCODEC_STATUS_ERROR;
2624 } 2575 }
2625 m_DecodeType = 1; 2576 m_DecodeType = 1;
2626 m_pImage = pImage; 2577 m_pImage = pImage;
2627 (*m_pImage)->fill(0); 2578 (*m_pImage)->fill(0);
2628 m_pArithDecoder = pArithDecoder; 2579 m_pArithDecoder = pArithDecoder;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2676 m_ReplaceRect.bottom = m_loopIndex; 2627 m_ReplaceRect.bottom = m_loopIndex;
2677 if (m_ProssiveStatus == FXCODEC_STATUS_DECODE_FINISH) { 2628 if (m_ProssiveStatus == FXCODEC_STATUS_DECODE_FINISH) {
2678 m_loopIndex = 0; 2629 m_loopIndex = 0;
2679 } 2630 }
2680 return m_ProssiveStatus; 2631 return m_ProssiveStatus;
2681 } 2632 }
2682 FXCODEC_STATUS CJBig2_GRDProc::Start_decode_MMR(CJBig2_Image** pImage, 2633 FXCODEC_STATUS CJBig2_GRDProc::Start_decode_MMR(CJBig2_Image** pImage,
2683 CJBig2_BitStream* pStream, 2634 CJBig2_BitStream* pStream,
2684 IFX_Pause* pPause) { 2635 IFX_Pause* pPause) {
2685 int bitpos, i; 2636 int bitpos, i;
2686 JBIG2_ALLOC((*pImage), CJBig2_Image(GBW, GBH)); 2637 *pImage = new CJBig2_Image(GBW, GBH);
2687 if ((*pImage)->m_pData == NULL) { 2638 if ((*pImage)->m_pData == NULL) {
2688 delete (*pImage); 2639 delete (*pImage);
2689 (*pImage) = NULL; 2640 (*pImage) = NULL;
2690 m_ProssiveStatus = FXCODEC_STATUS_ERROR; 2641 m_ProssiveStatus = FXCODEC_STATUS_ERROR;
2691 return m_ProssiveStatus; 2642 return m_ProssiveStatus;
2692 } 2643 }
2693 bitpos = (int)pStream->getBitPos(); 2644 bitpos = (int)pStream->getBitPos();
2694 _FaxG4Decode(m_pModule, pStream->getBuf(), pStream->getLength(), &bitpos, 2645 _FaxG4Decode(pStream->getBuf(), pStream->getLength(), &bitpos,
2695 (*pImage)->m_pData, GBW, GBH, (*pImage)->m_nStride); 2646 (*pImage)->m_pData, GBW, GBH, (*pImage)->m_nStride);
2696 pStream->setBitPos(bitpos); 2647 pStream->setBitPos(bitpos);
2697 for (i = 0; (FX_DWORD)i < (*pImage)->m_nStride * GBH; i++) { 2648 for (i = 0; (FX_DWORD)i < (*pImage)->m_nStride * GBH; i++) {
2698 (*pImage)->m_pData[i] = ~(*pImage)->m_pData[i]; 2649 (*pImage)->m_pData[i] = ~(*pImage)->m_pData[i];
2699 } 2650 }
2700 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; 2651 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH;
2701 return m_ProssiveStatus; 2652 return m_ProssiveStatus;
2702 } 2653 }
2703 2654
2704 FXCODEC_STATUS CJBig2_GRDProc::Continue_decode(IFX_Pause* pPause) { 2655 FXCODEC_STATUS CJBig2_GRDProc::Continue_decode(IFX_Pause* pPause) {
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
3264 } 3215 }
3265 if (pPause && pPause->NeedToPauseNow()) { 3216 if (pPause && pPause->NeedToPauseNow()) {
3266 m_loopIndex++; 3217 m_loopIndex++;
3267 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; 3218 m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE;
3268 return FXCODEC_STATUS_DECODE_TOBECONTINUE; 3219 return FXCODEC_STATUS_DECODE_TOBECONTINUE;
3269 } 3220 }
3270 } 3221 }
3271 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; 3222 m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH;
3272 return FXCODEC_STATUS_DECODE_FINISH; 3223 return FXCODEC_STATUS_DECODE_FINISH;
3273 } 3224 }
OLDNEW
« no previous file with comments | « core/src/fxcodec/jbig2/JBig2_GeneralDecoder.h ('k') | core/src/fxcodec/jbig2/JBig2_HuffmanTable.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698