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 <setjmp.h> | 7 #include <setjmp.h> |
8 | 8 |
9 #include "../../../include/fxcodec/fx_codec.h" | 9 #include "../../../include/fxcodec/fx_codec.h" |
10 #include "../../../include/fxcrt/fx_safe_types.h" | 10 #include "../../../include/fxcrt/fx_safe_types.h" |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 if (cinfo.next_scanline == row) { | 214 if (cinfo.next_scanline == row) { |
215 dest_buf = | 215 dest_buf = |
216 FX_Realloc(uint8_t, dest_buf, dest_buf_length + JPEG_BLOCK_SIZE); | 216 FX_Realloc(uint8_t, dest_buf, dest_buf_length + JPEG_BLOCK_SIZE); |
217 dest.next_output_byte = dest_buf + dest_buf_length - dest.free_in_buffer; | 217 dest.next_output_byte = dest_buf + dest_buf_length - dest.free_in_buffer; |
218 dest_buf_length += JPEG_BLOCK_SIZE; | 218 dest_buf_length += JPEG_BLOCK_SIZE; |
219 dest.free_in_buffer += JPEG_BLOCK_SIZE; | 219 dest.free_in_buffer += JPEG_BLOCK_SIZE; |
220 } | 220 } |
221 } | 221 } |
222 jpeg_finish_compress(&cinfo); | 222 jpeg_finish_compress(&cinfo); |
223 jpeg_destroy_compress(&cinfo); | 223 jpeg_destroy_compress(&cinfo); |
224 if (line_buf) { | |
225 FX_Free(line_buf); | 224 FX_Free(line_buf); |
226 } | |
227 dest_size = dest_buf_length - (FX_STRSIZE)dest.free_in_buffer; | 225 dest_size = dest_buf_length - (FX_STRSIZE)dest.free_in_buffer; |
228 } | 226 } |
229 static FX_BOOL _JpegLoadInfo(const uint8_t* src_buf, | 227 static FX_BOOL _JpegLoadInfo(const uint8_t* src_buf, |
230 FX_DWORD src_size, | 228 FX_DWORD src_size, |
231 int& width, | 229 int& width, |
232 int& height, | 230 int& height, |
233 int& num_components, | 231 int& num_components, |
234 int& bits_per_components, | 232 int& bits_per_components, |
235 FX_BOOL& color_transform, | 233 FX_BOOL& color_transform, |
236 uint8_t** icc_buf_ptr, | 234 uint8_t** icc_buf_ptr, |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 FXSYS_memset(&cinfo, 0, sizeof(cinfo)); | 326 FXSYS_memset(&cinfo, 0, sizeof(cinfo)); |
329 FXSYS_memset(&jerr, 0, sizeof(jerr)); | 327 FXSYS_memset(&jerr, 0, sizeof(jerr)); |
330 FXSYS_memset(&src, 0, sizeof(src)); | 328 FXSYS_memset(&src, 0, sizeof(src)); |
331 m_nDefaultScaleDenom = 1; | 329 m_nDefaultScaleDenom = 1; |
332 } | 330 } |
333 CCodec_JpegDecoder::~CCodec_JpegDecoder() { | 331 CCodec_JpegDecoder::~CCodec_JpegDecoder() { |
334 if (m_pExtProvider) { | 332 if (m_pExtProvider) { |
335 m_pExtProvider->DestroyDecoder(m_pExtContext); | 333 m_pExtProvider->DestroyDecoder(m_pExtContext); |
336 return; | 334 return; |
337 } | 335 } |
338 if (m_pScanlineBuf) { | |
339 FX_Free(m_pScanlineBuf); | 336 FX_Free(m_pScanlineBuf); |
340 } | |
341 if (m_bInited) { | 337 if (m_bInited) { |
342 jpeg_destroy_decompress(&cinfo); | 338 jpeg_destroy_decompress(&cinfo); |
343 } | 339 } |
344 } | 340 } |
345 FX_BOOL CCodec_JpegDecoder::InitDecode() { | 341 FX_BOOL CCodec_JpegDecoder::InitDecode() { |
346 cinfo.err = &jerr; | 342 cinfo.err = &jerr; |
347 cinfo.client_data = &m_JmpBuf; | 343 cinfo.client_data = &m_JmpBuf; |
348 if (setjmp(m_JmpBuf) == -1) { | 344 if (setjmp(m_JmpBuf) == -1) { |
349 return FALSE; | 345 return FALSE; |
350 } | 346 } |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
702 } | 698 } |
703 if (avail_buf_ptr != NULL) { | 699 if (avail_buf_ptr != NULL) { |
704 *avail_buf_ptr = NULL; | 700 *avail_buf_ptr = NULL; |
705 if (((FXJPEG_Context*)pContext)->m_SrcMgr.bytes_in_buffer > 0) { | 701 if (((FXJPEG_Context*)pContext)->m_SrcMgr.bytes_in_buffer > 0) { |
706 *avail_buf_ptr = | 702 *avail_buf_ptr = |
707 (uint8_t*)((FXJPEG_Context*)pContext)->m_SrcMgr.next_input_byte; | 703 (uint8_t*)((FXJPEG_Context*)pContext)->m_SrcMgr.next_input_byte; |
708 } | 704 } |
709 } | 705 } |
710 return (FX_DWORD)((FXJPEG_Context*)pContext)->m_SrcMgr.bytes_in_buffer; | 706 return (FX_DWORD)((FXJPEG_Context*)pContext)->m_SrcMgr.bytes_in_buffer; |
711 } | 707 } |
OLD | NEW |