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 "../../../include/fxcodec/fx_codec.h" | 7 #include "../../../include/fxcodec/fx_codec.h" |
8 #include "codec_int.h" | 8 #include "codec_int.h" |
9 | 9 |
10 CCodec_Jbig2Context::CCodec_Jbig2Context() { | 10 CCodec_Jbig2Context::CCodec_Jbig2Context() { |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 } | 75 } |
76 width = (FX_DWORD)dest_image->m_nWidth; | 76 width = (FX_DWORD)dest_image->m_nWidth; |
77 height = (FX_DWORD)dest_image->m_nHeight; | 77 height = (FX_DWORD)dest_image->m_nHeight; |
78 pitch = (FX_DWORD)dest_image->m_nStride; | 78 pitch = (FX_DWORD)dest_image->m_nStride; |
79 dest_buf = dest_image->m_pData; | 79 dest_buf = dest_image->m_pData; |
80 dest_image->m_bNeedFree = FALSE; | 80 dest_image->m_bNeedFree = FALSE; |
81 delete dest_image; | 81 delete dest_image; |
82 FX_Free(src_buf); | 82 FX_Free(src_buf); |
83 return TRUE; | 83 return TRUE; |
84 failed: | 84 failed: |
85 if (src_buf) { | |
86 FX_Free(src_buf); | 85 FX_Free(src_buf); |
87 } | |
88 return FALSE; | 86 return FALSE; |
89 } | 87 } |
90 FXCODEC_STATUS CCodec_Jbig2Module::StartDecode(void* pJbig2Context, | 88 FXCODEC_STATUS CCodec_Jbig2Module::StartDecode(void* pJbig2Context, |
91 FX_DWORD width, | 89 FX_DWORD width, |
92 FX_DWORD height, | 90 FX_DWORD height, |
93 const uint8_t* src_buf, | 91 const uint8_t* src_buf, |
94 FX_DWORD src_size, | 92 FX_DWORD src_size, |
95 const uint8_t* global_data, | 93 const uint8_t* global_data, |
96 FX_DWORD global_size, | 94 FX_DWORD global_size, |
97 uint8_t* dest_buf, | 95 uint8_t* dest_buf, |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 } | 179 } |
182 width = (FX_DWORD)m_pJbig2Context->m_dest_image->m_nWidth; | 180 width = (FX_DWORD)m_pJbig2Context->m_dest_image->m_nWidth; |
183 height = (FX_DWORD)m_pJbig2Context->m_dest_image->m_nHeight; | 181 height = (FX_DWORD)m_pJbig2Context->m_dest_image->m_nHeight; |
184 pitch = (FX_DWORD)m_pJbig2Context->m_dest_image->m_nStride; | 182 pitch = (FX_DWORD)m_pJbig2Context->m_dest_image->m_nStride; |
185 dest_buf = m_pJbig2Context->m_dest_image->m_pData; | 183 dest_buf = m_pJbig2Context->m_dest_image->m_pData; |
186 m_pJbig2Context->m_dest_image->m_bNeedFree = FALSE; | 184 m_pJbig2Context->m_dest_image->m_bNeedFree = FALSE; |
187 delete m_pJbig2Context->m_dest_image; | 185 delete m_pJbig2Context->m_dest_image; |
188 FX_Free(m_pJbig2Context->m_src_buf); | 186 FX_Free(m_pJbig2Context->m_src_buf); |
189 return FXCODEC_STATUS_DECODE_FINISH; | 187 return FXCODEC_STATUS_DECODE_FINISH; |
190 failed: | 188 failed: |
191 if (m_pJbig2Context->m_src_buf) { | |
192 FX_Free(m_pJbig2Context->m_src_buf); | 189 FX_Free(m_pJbig2Context->m_src_buf); |
193 } | |
194 m_pJbig2Context->m_src_buf = NULL; | 190 m_pJbig2Context->m_src_buf = NULL; |
195 return FXCODEC_STATUS_ERROR; | 191 return FXCODEC_STATUS_ERROR; |
196 } | 192 } |
197 FXCODEC_STATUS CCodec_Jbig2Module::ContinueDecode(void* pJbig2Context, | 193 FXCODEC_STATUS CCodec_Jbig2Module::ContinueDecode(void* pJbig2Context, |
198 IFX_Pause* pPause) { | 194 IFX_Pause* pPause) { |
199 CCodec_Jbig2Context* m_pJbig2Context = (CCodec_Jbig2Context*)pJbig2Context; | 195 CCodec_Jbig2Context* m_pJbig2Context = (CCodec_Jbig2Context*)pJbig2Context; |
200 int ret = m_pJbig2Context->m_pContext->Continue(pPause); | 196 int ret = m_pJbig2Context->m_pContext->Continue(pPause); |
201 if (m_pJbig2Context->m_pContext->GetProcessiveStatus() != | 197 if (m_pJbig2Context->m_pContext->GetProcessiveStatus() != |
202 FXCODEC_STATUS_DECODE_FINISH) { | 198 FXCODEC_STATUS_DECODE_FINISH) { |
203 return m_pJbig2Context->m_pContext->GetProcessiveStatus(); | 199 return m_pJbig2Context->m_pContext->GetProcessiveStatus(); |
204 } | 200 } |
205 if (m_pJbig2Context->m_bFileReader) { | 201 if (m_pJbig2Context->m_bFileReader) { |
206 CJBig2_Context::DestroyContext(m_pJbig2Context->m_pContext); | 202 CJBig2_Context::DestroyContext(m_pJbig2Context->m_pContext); |
207 m_pJbig2Context->m_pContext = NULL; | 203 m_pJbig2Context->m_pContext = NULL; |
208 if (ret != JBIG2_SUCCESS) { | 204 if (ret != JBIG2_SUCCESS) { |
209 if (m_pJbig2Context->m_src_buf) { | |
210 FX_Free(m_pJbig2Context->m_src_buf); | 205 FX_Free(m_pJbig2Context->m_src_buf); |
211 } | |
212 m_pJbig2Context->m_src_buf = NULL; | 206 m_pJbig2Context->m_src_buf = NULL; |
213 return FXCODEC_STATUS_ERROR; | 207 return FXCODEC_STATUS_ERROR; |
214 } | 208 } |
215 delete m_pJbig2Context->m_dest_image; | 209 delete m_pJbig2Context->m_dest_image; |
216 FX_Free(m_pJbig2Context->m_src_buf); | 210 FX_Free(m_pJbig2Context->m_src_buf); |
217 return FXCODEC_STATUS_DECODE_FINISH; | 211 return FXCODEC_STATUS_DECODE_FINISH; |
218 } | 212 } |
219 CJBig2_Context::DestroyContext(m_pJbig2Context->m_pContext); | 213 CJBig2_Context::DestroyContext(m_pJbig2Context->m_pContext); |
220 m_pJbig2Context->m_pContext = NULL; | 214 m_pJbig2Context->m_pContext = NULL; |
221 if (ret != JBIG2_SUCCESS) { | 215 if (ret != JBIG2_SUCCESS) { |
222 return FXCODEC_STATUS_ERROR; | 216 return FXCODEC_STATUS_ERROR; |
223 } | 217 } |
224 int dword_size = | 218 int dword_size = |
225 m_pJbig2Context->m_height * m_pJbig2Context->m_dest_pitch / 4; | 219 m_pJbig2Context->m_height * m_pJbig2Context->m_dest_pitch / 4; |
226 FX_DWORD* dword_buf = (FX_DWORD*)m_pJbig2Context->m_dest_buf; | 220 FX_DWORD* dword_buf = (FX_DWORD*)m_pJbig2Context->m_dest_buf; |
227 for (int i = 0; i < dword_size; i++) { | 221 for (int i = 0; i < dword_size; i++) { |
228 dword_buf[i] = ~dword_buf[i]; | 222 dword_buf[i] = ~dword_buf[i]; |
229 } | 223 } |
230 return FXCODEC_STATUS_DECODE_FINISH; | 224 return FXCODEC_STATUS_DECODE_FINISH; |
231 } | 225 } |
OLD | NEW |