| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "JBig2_ArithIntDecoder.h" | 7 #include "JBig2_ArithIntDecoder.h" |
| 8 |
| 9 #include "../../../include/fxcrt/fx_memory.h" |
| 10 |
| 8 CJBig2_ArithIntDecoder::CJBig2_ArithIntDecoder() { | 11 CJBig2_ArithIntDecoder::CJBig2_ArithIntDecoder() { |
| 9 IAx = (JBig2ArithCtx*)m_pModule->JBig2_Malloc2(sizeof(JBig2ArithCtx), 512); | 12 IAx = (JBig2ArithCtx*)FX_AllocOrDie(sizeof(JBig2ArithCtx), 512); |
| 10 JBIG2_memset(IAx, 0, sizeof(JBig2ArithCtx) * 512); | 13 JBIG2_memset(IAx, 0, sizeof(JBig2ArithCtx) * 512); |
| 11 } | 14 } |
| 12 CJBig2_ArithIntDecoder::~CJBig2_ArithIntDecoder() { | 15 CJBig2_ArithIntDecoder::~CJBig2_ArithIntDecoder() { |
| 13 m_pModule->JBig2_Free(IAx); | 16 FX_Free(IAx); |
| 14 } | 17 } |
| 15 int CJBig2_ArithIntDecoder::decode(CJBig2_ArithDecoder* pArithDecoder, | 18 int CJBig2_ArithIntDecoder::decode(CJBig2_ArithDecoder* pArithDecoder, |
| 16 int* nResult) { | 19 int* nResult) { |
| 17 int PREV, V; | 20 int PREV, V; |
| 18 int S, D; | 21 int S, D; |
| 19 int nNeedBits, nTemp, i; | 22 int nNeedBits, nTemp, i; |
| 20 PREV = 1; | 23 PREV = 1; |
| 21 S = pArithDecoder->DECODE(IAx + PREV); | 24 S = pArithDecoder->DECODE(IAx + PREV); |
| 22 PREV = (PREV << 1) | S; | 25 PREV = (PREV << 1) | S; |
| 23 D = pArithDecoder->DECODE(IAx + PREV); | 26 D = pArithDecoder->DECODE(IAx + PREV); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 V = -V; | 75 V = -V; |
| 73 } | 76 } |
| 74 *nResult = V; | 77 *nResult = V; |
| 75 if (S == 1 && V == 0) { | 78 if (S == 1 && V == 0) { |
| 76 return JBIG2_OOB; | 79 return JBIG2_OOB; |
| 77 } | 80 } |
| 78 return 0; | 81 return 0; |
| 79 } | 82 } |
| 80 CJBig2_ArithIaidDecoder::CJBig2_ArithIaidDecoder(unsigned char SBSYMCODELENA) { | 83 CJBig2_ArithIaidDecoder::CJBig2_ArithIaidDecoder(unsigned char SBSYMCODELENA) { |
| 81 SBSYMCODELEN = SBSYMCODELENA; | 84 SBSYMCODELEN = SBSYMCODELENA; |
| 82 IAID = (JBig2ArithCtx*)m_pModule->JBig2_Malloc2(sizeof(JBig2ArithCtx), | 85 IAID = |
| 83 (1 << SBSYMCODELEN)); | 86 (JBig2ArithCtx*)FX_AllocOrDie(sizeof(JBig2ArithCtx), (1 << SBSYMCODELEN)); |
| 84 JBIG2_memset(IAID, 0, sizeof(JBig2ArithCtx) * (int)(1 << SBSYMCODELEN)); | 87 JBIG2_memset(IAID, 0, sizeof(JBig2ArithCtx) * (int)(1 << SBSYMCODELEN)); |
| 85 } | 88 } |
| 86 CJBig2_ArithIaidDecoder::~CJBig2_ArithIaidDecoder() { | 89 CJBig2_ArithIaidDecoder::~CJBig2_ArithIaidDecoder() { |
| 87 m_pModule->JBig2_Free(IAID); | 90 FX_Free(IAID); |
| 88 } | 91 } |
| 89 int CJBig2_ArithIaidDecoder::decode(CJBig2_ArithDecoder* pArithDecoder, | 92 int CJBig2_ArithIaidDecoder::decode(CJBig2_ArithDecoder* pArithDecoder, |
| 90 int* nResult) { | 93 int* nResult) { |
| 91 int PREV; | 94 int PREV; |
| 92 int D; | 95 int D; |
| 93 int i; | 96 int i; |
| 94 PREV = 1; | 97 PREV = 1; |
| 95 for (i = 0; i < SBSYMCODELEN; i++) { | 98 for (i = 0; i < SBSYMCODELEN; i++) { |
| 96 D = pArithDecoder->DECODE(IAID + PREV); | 99 D = pArithDecoder->DECODE(IAID + PREV); |
| 97 PREV = (PREV << 1) | D; | 100 PREV = (PREV << 1) | D; |
| 98 } | 101 } |
| 99 PREV = PREV - (1 << SBSYMCODELEN); | 102 PREV = PREV - (1 << SBSYMCODELEN); |
| 100 *nResult = PREV; | 103 *nResult = PREV; |
| 101 return 0; | 104 return 0; |
| 102 } | 105 } |
| OLD | NEW |