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_HuffmanDecoder.h" | 7 #include "JBig2_HuffmanDecoder.h" |
8 CJBig2_HuffmanDecoder::CJBig2_HuffmanDecoder(CJBig2_BitStream *pStream) | 8 CJBig2_HuffmanDecoder::CJBig2_HuffmanDecoder(CJBig2_BitStream *pStream) |
9 { | 9 { |
10 m_pStream = pStream; | 10 m_pStream = pStream; |
11 } | 11 } |
12 CJBig2_HuffmanDecoder::~CJBig2_HuffmanDecoder() | 12 CJBig2_HuffmanDecoder::~CJBig2_HuffmanDecoder() |
13 { | 13 { |
14 } | 14 } |
15 int CJBig2_HuffmanDecoder::decodeAValue(CJBig2_HuffmanTable *pTable, int *nResul
t) | 15 int CJBig2_HuffmanDecoder::decodeAValue(CJBig2_HuffmanTable *pTable, int *nResul
t) |
16 { | 16 { |
17 int nVal, nTmp, i, nBits; | 17 int i; |
18 nVal = 0; | 18 int nVal = 0; |
19 nBits = 0; | 19 int nBits = 0; |
| 20 FX_DWORD nTmp; |
20 while(1) { | 21 while(1) { |
21 if(m_pStream->read1Bit(&nTmp) == -1) { | 22 if(m_pStream->read1Bit(&nTmp) == -1) { |
22 return -1; | 23 return -1; |
23 } | 24 } |
24 nVal = (nVal << 1) | nTmp; | 25 nVal = (nVal << 1) | nTmp; |
25 nBits ++; | 26 nBits ++; |
26 for(i = 0; i < pTable->NTEMP; i++) { | 27 for(i = 0; i < pTable->NTEMP; i++) { |
27 if((pTable->PREFLEN[i] == nBits) && (pTable->CODES[i] == nVal)) { | 28 if((pTable->PREFLEN[i] == nBits) && (pTable->CODES[i] == nVal)) { |
28 if((pTable->HTOOB == 1) && (i == pTable->NTEMP - 1)) { | 29 if((pTable->HTOOB == 1) && (i == pTable->NTEMP - 1)) { |
29 return JBIG2_OOB; | 30 return JBIG2_OOB; |
(...skipping 16 matching lines...) Expand all Loading... |
46 } else { | 47 } else { |
47 *nResult = pTable->RANGELOW[i] + nTmp; | 48 *nResult = pTable->RANGELOW[i] + nTmp; |
48 return 0; | 49 return 0; |
49 } | 50 } |
50 } | 51 } |
51 } | 52 } |
52 } | 53 } |
53 } | 54 } |
54 return -2; | 55 return -2; |
55 } | 56 } |
OLD | NEW |