| Index: src/codec/SkJpegCodec.cpp
|
| diff --git a/src/codec/SkJpegCodec.cpp b/src/codec/SkJpegCodec.cpp
|
| index 05f40bdf80c680b21ec8d65c337587d64c134caf..fcf89d0c1d23b7c3ca6d55ec2674754602778cbb 100644
|
| --- a/src/codec/SkJpegCodec.cpp
|
| +++ b/src/codec/SkJpegCodec.cpp
|
| @@ -278,12 +278,8 @@ SkJpegCodec::SkJpegCodec(int width, int height, const SkEncodedInfo& info, SkStr
|
| * Return the row bytes of a particular image type and width
|
| */
|
| static size_t get_row_bytes(const j_decompress_ptr dinfo) {
|
| -#ifdef TURBO_HAS_565
|
| const size_t colorBytes = (dinfo->out_color_space == JCS_RGB565) ? 2 :
|
| dinfo->out_color_components;
|
| -#else
|
| - const size_t colorBytes = dinfo->out_color_components;
|
| -#endif
|
| return dinfo->output_width * colorBytes;
|
|
|
| }
|
| @@ -353,10 +349,6 @@ bool SkJpegCodec::onRewind() {
|
| fStorage.reset();
|
| fColorXform.reset(nullptr);
|
|
|
| -#if !defined(TURBO_HAS_SKIP)
|
| - fSkipStorage.reset();
|
| -#endif
|
| -
|
| return true;
|
| }
|
|
|
| @@ -408,12 +400,8 @@ bool SkJpegCodec::setOutputColorSpace(const SkImageInfo& dstInfo, bool needsColo
|
| if (isCMYK) {
|
| fDecoderMgr->dinfo()->out_color_space = JCS_CMYK;
|
| } else {
|
| -#ifdef TURBO_HAS_565
|
| fDecoderMgr->dinfo()->dither_mode = JDITHER_NONE;
|
| fDecoderMgr->dinfo()->out_color_space = JCS_RGB565;
|
| -#else
|
| - fDecoderMgr->dinfo()->out_color_space = JCS_RGB;
|
| -#endif
|
| }
|
| return true;
|
| case kGray_8_SkColorType:
|
| @@ -576,7 +564,7 @@ SkCodec::Result SkJpegCodec::onGetPixels(const SkImageInfo& dstInfo,
|
| SkASSERT(1 == dinfo->rec_outbuf_height);
|
|
|
| J_COLOR_SPACE colorSpace = dinfo->out_color_space;
|
| - if (JCS_CMYK == colorSpace || JCS_RGB == colorSpace) {
|
| + if (JCS_CMYK == colorSpace) {
|
| this->initializeSwizzler(dstInfo, options);
|
| }
|
|
|
| @@ -621,21 +609,11 @@ void SkJpegCodec::initializeSwizzler(const SkImageInfo& dstInfo, const Options&
|
| // appropriate format to the swizzler.
|
| SkEncodedInfo swizzlerInfo = this->getEncodedInfo();
|
| bool preSwizzled = true;
|
| - switch (fDecoderMgr->dinfo()->out_color_space) {
|
| - case JCS_RGB:
|
| - preSwizzled = false;
|
| - swizzlerInfo = SkEncodedInfo::Make(SkEncodedInfo::kRGB_Color,
|
| - swizzlerInfo.alpha(),
|
| - swizzlerInfo.bitsPerComponent());
|
| - break;
|
| - case JCS_CMYK:
|
| - preSwizzled = false;
|
| - swizzlerInfo = SkEncodedInfo::Make(SkEncodedInfo::kInvertedCMYK_Color,
|
| - swizzlerInfo.alpha(),
|
| - swizzlerInfo.bitsPerComponent());
|
| - break;
|
| - default:
|
| - break;
|
| + if (JCS_CMYK == fDecoderMgr->dinfo()->out_color_space) {
|
| + preSwizzled = false;
|
| + swizzlerInfo = SkEncodedInfo::Make(SkEncodedInfo::kInvertedCMYK_Color,
|
| + swizzlerInfo.alpha(),
|
| + swizzlerInfo.bitsPerComponent());
|
| }
|
|
|
| Options swizzlerOptions = options;
|
| @@ -698,7 +676,6 @@ SkCodec::Result SkJpegCodec::onStartScanlineDecode(const SkImageInfo& dstInfo,
|
| return kInvalidInput;
|
| }
|
|
|
| -#ifdef TURBO_HAS_CROP
|
| if (options.fSubset) {
|
| uint32_t startX = options.fSubset->x();
|
| uint32_t width = options.fSubset->width();
|
| @@ -740,18 +717,6 @@ SkCodec::Result SkJpegCodec::onStartScanlineDecode(const SkImageInfo& dstInfo,
|
| if (!fSwizzler && JCS_CMYK == fDecoderMgr->dinfo()->out_color_space) {
|
| this->initializeSwizzler(dstInfo, options);
|
| }
|
| -#else
|
| - if (options.fSubset) {
|
| - fSwizzlerSubset = *options.fSubset;
|
| - }
|
| -
|
| - // We will need a swizzler if we are performing a subset decode or
|
| - // converting from CMYK.
|
| - J_COLOR_SPACE colorSpace = fDecoderMgr->dinfo()->out_color_space;
|
| - if (options.fSubset || JCS_CMYK == colorSpace || JCS_RGB == colorSpace) {
|
| - this->initializeSwizzler(dstInfo, options);
|
| - }
|
| -#endif
|
|
|
| this->allocateStorage(dstInfo);
|
|
|
| @@ -774,22 +739,7 @@ bool SkJpegCodec::onSkipScanlines(int count) {
|
| return fDecoderMgr->returnFalse("onSkipScanlines");
|
| }
|
|
|
| -#ifdef TURBO_HAS_SKIP
|
| return (uint32_t) count == jpeg_skip_scanlines(fDecoderMgr->dinfo(), count);
|
| -#else
|
| - uint8_t* ptr = fSkipStorage.get();
|
| - if (!ptr) {
|
| - fSkipStorage.reset(get_row_bytes(fDecoderMgr->dinfo()));
|
| - ptr = fSkipStorage.get();
|
| - }
|
| -
|
| - for (int y = 0; y < count; y++) {
|
| - if (1 != jpeg_read_scanlines(fDecoderMgr->dinfo(), &ptr, 1)) {
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| -#endif
|
| }
|
|
|
| static bool is_yuv_supported(jpeg_decompress_struct* dinfo) {
|
|
|