diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-06-30 05:30:33 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-06-30 05:30:33 +0000 |
commit | 79201e57c9a07c7168b6e56938d7bed3f9310c0e (patch) | |
tree | a17ecb55759d29a01c856d6d9e568e3715fc9b5d | |
parent | e55724765970cd22e74b8cfed61307c01c350e8d (diff) | |
parent | fa5458660a98d71046a8325100b8083b9a05d293 (diff) | |
download | skia-android-security-10.0.0_r75.tar.gz |
Merge cherrypicks of [15151697, 15151718, 15151899, 15151900, 15151901, 15151902, 15151904, 15151906, 15151930, 15151932, 15151933, 15151856, 15151858, 15151388, 15151971, 15151972, 15151973] into security-aosp-qt-releaseandroid-security-10.0.0_r75android-security-10.0.0_r74android-security-10.0.0_r73android-security-10.0.0_r72android-security-10.0.0_r71android-security-10.0.0_r70android-security-10.0.0_r69android-security-10.0.0_r68android-security-10.0.0_r67android-security-10.0.0_r66android-security-10.0.0_r65android-security-10.0.0_r64android-security-10.0.0_r63android-security-10.0.0_r62android-security-10.0.0_r61android-security-10.0.0_r60android-security-10.0.0_r59android-security-10.0.0_r58android10-security-release
Change-Id: Ie09e1ffde3fc72c1461d3e7fd6af6aa81f2bb1da
-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 ed549b745e..24be705f33 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)); |