diff options
author | Leon Scroggins III <scroggo@google.com> | 2018-10-03 16:19:10 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-10-03 20:45:49 +0000 |
commit | fc38ba73e05a40ed37eb18a9930ade8db7282322 (patch) | |
tree | 2fbd77828d436eccd014da2b9fa724c96e5a681d /src/codec | |
parent | 314d3772a494c76773e88e31ee8f9be43e288714 (diff) | |
download | skqp-fc38ba73e05a40ed37eb18a9930ade8db7282322.tar.gz |
Fix-up colorSpace-less decodes
Follow-up to https://skia-review.googlesource.com/c/skia/+/156627
When attempting to decode into an SkImageInfo without an SkColorSpace,
assume it is SRGB. This updates scanline and incremental decodes to do
so just like getPixels does.
Bug: skia:8382
Change-Id: Ife3c44088be4065c065d7682fe1cb0dc1dd6376f
Reviewed-on: https://skia-review.googlesource.com/c/159325
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'src/codec')
-rw-r--r-- | src/codec/SkCodec.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/codec/SkCodec.cpp b/src/codec/SkCodec.cpp index 73a6a2925a..f9c34dd245 100644 --- a/src/codec/SkCodec.cpp +++ b/src/codec/SkCodec.cpp @@ -372,10 +372,14 @@ SkCodec::Result SkCodec::getPixels(const SkImageInfo& dstInfo, void* pixels, siz return result; } -SkCodec::Result SkCodec::startIncrementalDecode(const SkImageInfo& info, void* pixels, +SkCodec::Result SkCodec::startIncrementalDecode(const SkImageInfo& dstInfo, void* pixels, size_t rowBytes, const SkCodec::Options* options) { fStartedIncrementalDecode = false; + SkImageInfo info = dstInfo; + if (!info.colorSpace()) { + info = info.makeColorSpace(SkColorSpace::MakeSRGB()); + } if (kUnknown_SkColorType == info.colorType()) { return kInvalidConversion; } @@ -441,11 +445,16 @@ SkCodec::Result SkCodec::startIncrementalDecode(const SkImageInfo& info, void* p } -SkCodec::Result SkCodec::startScanlineDecode(const SkImageInfo& info, +SkCodec::Result SkCodec::startScanlineDecode(const SkImageInfo& dstInfo, const SkCodec::Options* options) { // Reset fCurrScanline in case of failure. fCurrScanline = -1; + SkImageInfo info = dstInfo; + if (!info.colorSpace()) { + info = info.makeColorSpace(SkColorSpace::MakeSRGB()); + } + if (!this->rewindIfNeeded()) { return kCouldNotRewind; } |