aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/codec
diff options
context:
space:
mode:
Diffstat (limited to 'src/codec')
-rw-r--r--src/codec/SkAndroidCodec.cpp14
-rw-r--r--src/codec/SkJpegCodec.cpp2
2 files changed, 15 insertions, 1 deletions
diff --git a/src/codec/SkAndroidCodec.cpp b/src/codec/SkAndroidCodec.cpp
index c315b032fb..5dddfe355e 100644
--- a/src/codec/SkAndroidCodec.cpp
+++ b/src/codec/SkAndroidCodec.cpp
@@ -114,6 +114,20 @@ SkAlphaType SkAndroidCodec::computeOutputAlphaType(bool requestedUnpremul) {
return requestedUnpremul ? kUnpremul_SkAlphaType : kPremul_SkAlphaType;
}
+sk_sp<SkColorSpace> SkAndroidCodec::computeOutputColorSpace(SkColorType outputColorType) {
+ switch (outputColorType) {
+ case kRGBA_8888_SkColorType:
+ case kBGRA_8888_SkColorType:
+ case kIndex_8_SkColorType:
+ return SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named);
+ case kRGBA_F16_SkColorType:
+ return SkColorSpace::MakeNamed(SkColorSpace::kSRGBLinear_Named);
+ default:
+ // Color correction not supported for k565 and kGray.
+ return nullptr;
+ }
+}
+
SkISize SkAndroidCodec::getSampledDimensions(int sampleSize) const {
if (!is_valid_sample_size(sampleSize)) {
return SkISize::Make(0, 0);
diff --git a/src/codec/SkJpegCodec.cpp b/src/codec/SkJpegCodec.cpp
index 7867fd0e8b..ad5ce5834d 100644
--- a/src/codec/SkJpegCodec.cpp
+++ b/src/codec/SkJpegCodec.cpp
@@ -503,7 +503,7 @@ int SkJpegCodec::readRows(const SkImageInfo& dstInfo, void* dst, size_t rowBytes
uint32_t* swizzleDst = (uint32_t*) dst;
size_t decodeDstRowBytes = rowBytes;
size_t swizzleDstRowBytes = rowBytes;
- int dstWidth = dstInfo.width();
+ int dstWidth = this->options().fSubset ? this->options().fSubset->width() : dstInfo.width();
if (fSwizzleSrcRow && fColorXformSrcRow) {
decodeDst = (JSAMPLE*) fSwizzleSrcRow;
swizzleDst = fColorXformSrcRow;