diff options
author | msarett <msarett@google.com> | 2015-11-06 11:02:06 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-06 11:02:06 -0800 |
commit | 69ad6a9d03dd6f14b7c730465319313725a7c903 (patch) | |
tree | 6cfd8e0eae9638a5872d899b62f74d2efec59031 /src/images | |
parent | 8e26604262ff77fe653e2aed9c839c764a1edd0b (diff) |
Change quality settings on SkImageDecoder_libjpeg
It has been demonstrated that higher quality settings
really do make a difference in the visual quality of
the output image.
https://code.google.com/p/chromium/issues/detail?id=385515
https://code.google.com/p/skia/issues/detail?id=3770
We are planning to replace SkImageDecoder with SkCodec,
and SkCodec will use the higher quality settings. As
a first step, we are using SkCodec as the underlying
implementation for BitmapRegionDecoder. CTS tests require
that BitmapRegionDecoder be a close match to BitmapFactory
(which uses SkImageDecoder), so we must also update the
quality of SkImageDecoder to maintain CTS compatibility.
BUG=skia:
Review URL: https://codereview.chromium.org/1412803009
Diffstat (limited to 'src/images')
-rw-r--r-- | src/images/SkImageDecoder_libjpeg.cpp | 30 |
1 files changed, 0 insertions, 30 deletions
diff --git a/src/images/SkImageDecoder_libjpeg.cpp b/src/images/SkImageDecoder_libjpeg.cpp index 7216239e80..9de1733703 100644 --- a/src/images/SkImageDecoder_libjpeg.cpp +++ b/src/images/SkImageDecoder_libjpeg.cpp @@ -383,35 +383,11 @@ static void set_error_mgr(jpeg_decompress_struct* cinfo, skjpeg_error_mgr* error } /** - * Common code for turning off upsampling and smoothing. Turning these - * off helps performance without showing noticable differences in the - * resulting bitmap. - */ -static void turn_off_visual_optimizations(jpeg_decompress_struct* cinfo) { - SkASSERT(cinfo != nullptr); - /* this gives about 30% performance improvement. In theory it may - reduce the visual quality, in practice I'm not seeing a difference - */ - cinfo->do_fancy_upsampling = 0; - - /* this gives another few percents */ - cinfo->do_block_smoothing = 0; -} - -/** * Common code for setting the dct method. */ static void set_dct_method(const SkImageDecoder& decoder, jpeg_decompress_struct* cinfo) { SkASSERT(cinfo != nullptr); -#ifdef DCT_IFAST_SUPPORTED - if (decoder.getPreferQualityOverSpeed()) { - cinfo->dct_method = JDCT_ISLOW; - } else { - cinfo->dct_method = JDCT_IFAST; - } -#else cinfo->dct_method = JDCT_ISLOW; -#endif } SkColorType SkJPEGImageDecoder::getBitmapColorType(jpeg_decompress_struct* cinfo) { @@ -580,8 +556,6 @@ SkImageDecoder::Result SkJPEGImageDecoder::onDecode(SkStream* stream, SkBitmap* SkASSERT(1 == cinfo.scale_num); cinfo.scale_denom = sampleSize; - turn_off_visual_optimizations(&cinfo); - const SkColorType colorType = this->getBitmapColorType(&cinfo); const SkAlphaType alphaType = kAlpha_8_SkColorType == colorType ? kPremul_SkAlphaType : kOpaque_SkAlphaType; @@ -907,8 +881,6 @@ bool SkJPEGImageDecoder::onDecodeYUV8Planes(SkStream* stream, SkISize componentS SkASSERT(1 == cinfo.scale_num); cinfo.scale_denom = 1; - turn_off_visual_optimizations(&cinfo); - #ifdef ANDROID_RGB cinfo.dither_mode = JDITHER_NONE; #endif @@ -983,8 +955,6 @@ bool SkJPEGImageDecoder::onBuildTileIndex(SkStreamRewindable* stream, int *width // that change (when it calls jinit_color_deconverter). (void) this->getBitmapColorType(cinfo); - turn_off_visual_optimizations(cinfo); - // instead of jpeg_start_decompress() we start a tiled decompress if (!imageIndex->startTileDecompress()) { return false; |