| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 The LibYuv Project Authors. All rights reserved. | 2 * Copyright 2012 The LibYuv Project Authors. All rights reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 const int MJpegDecoder::kColorSpaceYCbCr = JCS_YCbCr; | 55 const int MJpegDecoder::kColorSpaceYCbCr = JCS_YCbCr; |
| 56 const int MJpegDecoder::kColorSpaceCMYK = JCS_CMYK; | 56 const int MJpegDecoder::kColorSpaceCMYK = JCS_CMYK; |
| 57 const int MJpegDecoder::kColorSpaceYCCK = JCS_YCCK; | 57 const int MJpegDecoder::kColorSpaceYCCK = JCS_YCCK; |
| 58 | 58 |
| 59 // Methods that are passed to jpeglib. | 59 // Methods that are passed to jpeglib. |
| 60 boolean fill_input_buffer(jpeg_decompress_struct* cinfo); | 60 boolean fill_input_buffer(jpeg_decompress_struct* cinfo); |
| 61 void init_source(jpeg_decompress_struct* cinfo); | 61 void init_source(jpeg_decompress_struct* cinfo); |
| 62 void skip_input_data(jpeg_decompress_struct* cinfo, long num_bytes); // NOLINT | 62 void skip_input_data(jpeg_decompress_struct* cinfo, long num_bytes); // NOLINT |
| 63 void term_source(jpeg_decompress_struct* cinfo); | 63 void term_source(jpeg_decompress_struct* cinfo); |
| 64 void ErrorHandler(jpeg_common_struct* cinfo); | 64 void ErrorHandler(jpeg_common_struct* cinfo); |
| 65 void OutputHandler(jpeg_common_struct* cinfo); |
| 65 | 66 |
| 66 MJpegDecoder::MJpegDecoder() | 67 MJpegDecoder::MJpegDecoder() |
| 67 : has_scanline_padding_(LIBYUV_FALSE), | 68 : has_scanline_padding_(LIBYUV_FALSE), |
| 68 num_outbufs_(0), | 69 num_outbufs_(0), |
| 69 scanlines_(NULL), | 70 scanlines_(NULL), |
| 70 scanlines_sizes_(NULL), | 71 scanlines_sizes_(NULL), |
| 71 databuf_(NULL), | 72 databuf_(NULL), |
| 72 databuf_strides_(NULL) { | 73 databuf_strides_(NULL) { |
| 73 decompress_struct_ = new jpeg_decompress_struct; | 74 decompress_struct_ = new jpeg_decompress_struct; |
| 74 source_mgr_ = new jpeg_source_mgr; | 75 source_mgr_ = new jpeg_source_mgr; |
| 75 #ifdef HAVE_SETJMP | 76 #ifdef HAVE_SETJMP |
| 76 error_mgr_ = new SetJmpErrorMgr; | 77 error_mgr_ = new SetJmpErrorMgr; |
| 77 decompress_struct_->err = jpeg_std_error(&error_mgr_->base); | 78 decompress_struct_->err = jpeg_std_error(&error_mgr_->base); |
| 78 // Override standard exit()-based error handler. | 79 // Override standard exit()-based error handler. |
| 79 error_mgr_->base.error_exit = &ErrorHandler; | 80 error_mgr_->base.error_exit = &ErrorHandler; |
| 81 error_mgr_->base.output_message = &OutputHandler; |
| 80 #endif | 82 #endif |
| 81 decompress_struct_->client_data = NULL; | 83 decompress_struct_->client_data = NULL; |
| 82 source_mgr_->init_source = &init_source; | 84 source_mgr_->init_source = &init_source; |
| 83 source_mgr_->fill_input_buffer = &fill_input_buffer; | 85 source_mgr_->fill_input_buffer = &fill_input_buffer; |
| 84 source_mgr_->skip_input_data = &skip_input_data; | 86 source_mgr_->skip_input_data = &skip_input_data; |
| 85 source_mgr_->resync_to_restart = &jpeg_resync_to_restart; | 87 source_mgr_->resync_to_restart = &jpeg_resync_to_restart; |
| 86 source_mgr_->term_source = &term_source; | 88 source_mgr_->term_source = &term_source; |
| 87 jpeg_create_decompress(decompress_struct_); | 89 jpeg_create_decompress(decompress_struct_); |
| 88 decompress_struct_->src = source_mgr_; | 90 decompress_struct_->src = source_mgr_; |
| 89 buf_vec_.buffers = &buf_; | 91 buf_vec_.buffers = &buf_; |
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 char buf[JMSG_LENGTH_MAX]; | 451 char buf[JMSG_LENGTH_MAX]; |
| 450 (*cinfo->err->format_message)(cinfo, buf); | 452 (*cinfo->err->format_message)(cinfo, buf); |
| 451 // ERROR: Error in jpeglib: buf | 453 // ERROR: Error in jpeglib: buf |
| 452 #endif | 454 #endif |
| 453 | 455 |
| 454 SetJmpErrorMgr* mgr = reinterpret_cast<SetJmpErrorMgr*>(cinfo->err); | 456 SetJmpErrorMgr* mgr = reinterpret_cast<SetJmpErrorMgr*>(cinfo->err); |
| 455 // This rewinds the call stack to the point of the corresponding setjmp() | 457 // This rewinds the call stack to the point of the corresponding setjmp() |
| 456 // and causes it to return (for a second time) with value 1. | 458 // and causes it to return (for a second time) with value 1. |
| 457 longjmp(mgr->setjmp_buffer, 1); | 459 longjmp(mgr->setjmp_buffer, 1); |
| 458 } | 460 } |
| 459 #endif | 461 |
| 462 void OutputHandler(j_common_ptr cinfo) { |
| 463 // Suppress fprintf warnings. |
| 464 } |
| 465 |
| 466 #endif // HAVE_SETJMP |
| 460 | 467 |
| 461 void MJpegDecoder::AllocOutputBuffers(int num_outbufs) { | 468 void MJpegDecoder::AllocOutputBuffers(int num_outbufs) { |
| 462 if (num_outbufs != num_outbufs_) { | 469 if (num_outbufs != num_outbufs_) { |
| 463 // We could perhaps optimize this case to resize the output buffers without | 470 // We could perhaps optimize this case to resize the output buffers without |
| 464 // necessarily having to delete and recreate each one, but it's not worth | 471 // necessarily having to delete and recreate each one, but it's not worth |
| 465 // it. | 472 // it. |
| 466 DestroyOutputBuffers(); | 473 DestroyOutputBuffers(); |
| 467 | 474 |
| 468 scanlines_ = new uint8** [num_outbufs]; | 475 scanlines_ = new uint8** [num_outbufs]; |
| 469 scanlines_sizes_ = new int[num_outbufs]; | 476 scanlines_sizes_ = new int[num_outbufs]; |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 561 if (subsample_x[0] == 1 && subsample_y[0] == 1) { | 568 if (subsample_x[0] == 1 && subsample_y[0] == 1) { |
| 562 return kJpegYuv400; | 569 return kJpegYuv400; |
| 563 } | 570 } |
| 564 } | 571 } |
| 565 return kJpegUnknown; | 572 return kJpegUnknown; |
| 566 } | 573 } |
| 567 | 574 |
| 568 } // namespace libyuv | 575 } // namespace libyuv |
| 569 #endif // HAVE_JPEG | 576 #endif // HAVE_JPEG |
| 570 | 577 |
| OLD | NEW |