diff options
author | Leon Scroggins III <scroggo@google.com> | 2021-06-24 22:51:27 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-06-24 22:51:27 +0000 |
commit | d4858d9e30ba5e6a72d9649b66dca16d0b79a745 (patch) | |
tree | ed5af413f6bc41eae1694d61a6b550785fd89e0d | |
parent | 66302698226902c6dcaf8cb00d7f0ce72a6d0a5a (diff) | |
parent | c2decc27f2c9442d9705d91e67e93d23f6978059 (diff) | |
download | skia-d4858d9e30ba5e6a72d9649b66dca16d0b79a745.tar.gz |
Only treat PNG_COLOR_TYPE_RGB as 565 am: f6de97fce5 am: c2decc27f2
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/skia/+/14968800
Change-Id: I45ae355a144910252c6a937b6a75e6fbaa60857f
-rw-r--r-- | src/codec/SkPngCodec.cpp | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/src/codec/SkPngCodec.cpp b/src/codec/SkPngCodec.cpp index 4eaa034e64..9202e8ae53 100644 --- a/src/codec/SkPngCodec.cpp +++ b/src/codec/SkPngCodec.cpp @@ -934,22 +934,39 @@ void AutoCleanPng::infoCallback(size_t idatLength) { } } - if (encodedColorType == PNG_COLOR_TYPE_GRAY_ALPHA) { - png_color_8p sigBits; - if (png_get_sBIT(fPng_ptr, fInfo_ptr, &sigBits)) { - if (8 == sigBits->alpha && kGraySigBit_GrayAlphaIsJustAlpha == sigBits->gray) { - color = SkEncodedInfo::kXAlpha_Color; + switch (encodedColorType) { + case PNG_COLOR_TYPE_GRAY_ALPHA:{ + png_color_8p sigBits; + if (png_get_sBIT(fPng_ptr, fInfo_ptr, &sigBits)) { + if (8 == sigBits->alpha && kGraySigBit_GrayAlphaIsJustAlpha == sigBits->gray) { + color = SkEncodedInfo::kXAlpha_Color; + } } + break; } - } else if (SkEncodedInfo::kOpaque_Alpha == alpha) { + case PNG_COLOR_TYPE_RGB:{ + png_color_8p sigBits; + if (png_get_sBIT(fPng_ptr, fInfo_ptr, &sigBits)) { + if (5 == sigBits->red && 6 == sigBits->green && 5 == sigBits->blue) { + // Recommend a decode to 565 if the sBIT indicates 565. + color = SkEncodedInfo::k565_Color; + } + } + break; + } + } + +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + if (encodedColorType != PNG_COLOR_TYPE_GRAY_ALPHA + && SkEncodedInfo::kOpaque_Alpha == alpha) { png_color_8p sigBits; if (png_get_sBIT(fPng_ptr, fInfo_ptr, &sigBits)) { if (5 == sigBits->red && 6 == sigBits->green && 5 == sigBits->blue) { - // Recommend a decode to 565 if the sBIT indicates 565. - color = SkEncodedInfo::k565_Color; + SkAndroidFrameworkUtils::SafetyNetLog("190188264"); } } } +#endif // SK_BUILD_FOR_ANDROID_FRAMEWORK SkEncodedInfo encodedInfo = SkEncodedInfo::Make(origWidth, origHeight, color, alpha, bitDepth, std::move(profile)); |