aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--dm/DM.cpp59
-rw-r--r--dm/DMSrcSink.cpp31
-rw-r--r--dm/DMSrcSink.h6
-rw-r--r--include/codec/SkCodec.h11
-rw-r--r--src/codec/SkBmpStandardCodec.cpp6
-rw-r--r--src/codec/SkBmpStandardCodec.h2
-rw-r--r--src/codec/SkCodec.cpp2
-rw-r--r--src/codec/SkCodecPriv.h26
-rw-r--r--src/codec/SkGifCodec.cpp8
-rw-r--r--src/codec/SkGifCodec.h2
-rw-r--r--src/codec/SkJpegCodec.cpp8
-rw-r--r--src/codec/SkMaskSwizzler.cpp24
-rw-r--r--src/codec/SkPngCodec.cpp4
-rw-r--r--src/codec/SkPngCodec.h2
-rw-r--r--src/codec/SkSampledCodec.cpp3
-rw-r--r--tests/CodexTest.cpp8
16 files changed, 113 insertions, 89 deletions
diff --git a/dm/DM.cpp b/dm/DM.cpp
index eb40113a9b..e5a6e4d196 100644
--- a/dm/DM.cpp
+++ b/dm/DM.cpp
@@ -225,7 +225,7 @@ static void push_src(ImplicitString tag, ImplicitString options, Src* s) {
}
static void push_codec_src(Path path, CodecSrc::Mode mode, CodecSrc::DstColorType dstColorType,
- float scale) {
+ SkAlphaType dstAlphaType, float scale) {
SkString folder;
switch (mode) {
case CodecSrc::kCodec_Mode:
@@ -259,16 +259,30 @@ static void push_codec_src(Path path, CodecSrc::Mode mode, CodecSrc::DstColorTyp
break;
}
+ switch (dstAlphaType) {
+ case kOpaque_SkAlphaType:
+ folder.append("_opaque");
+ break;
+ case kPremul_SkAlphaType:
+ folder.append("_premul");
+ break;
+ case kUnpremul_SkAlphaType:
+ folder.append("_unpremul");
+ break;
+ default:
+ break;
+ }
+
if (1.0f != scale) {
folder.appendf("_%.3f", scale);
}
- CodecSrc* src = new CodecSrc(path, mode, dstColorType, scale);
+ CodecSrc* src = new CodecSrc(path, mode, dstColorType, dstAlphaType, scale);
push_src("image", folder, src);
}
static void push_android_codec_src(Path path, AndroidCodecSrc::Mode mode,
- CodecSrc::DstColorType dstColorType, int sampleSize) {
+ CodecSrc::DstColorType dstColorType, SkAlphaType dstAlphaType, int sampleSize) {
SkString folder;
switch (mode) {
case AndroidCodecSrc::kFullImage_Mode:
@@ -290,11 +304,22 @@ static void push_android_codec_src(Path path, AndroidCodecSrc::Mode mode,
break;
}
+ switch (dstAlphaType) {
+ case kOpaque_SkAlphaType:
+ folder.append("_opaque");
+ break;
+ case kPremul_SkAlphaType:
+ folder.append("_premul");
+ break;
+ default:
+ break;
+ }
+
if (1 != sampleSize) {
folder.appendf("_%.3f", 1.0f / (float) sampleSize);
}
- AndroidCodecSrc* src = new AndroidCodecSrc(path, mode, dstColorType, sampleSize);
+ AndroidCodecSrc* src = new AndroidCodecSrc(path, mode, dstColorType, dstAlphaType, sampleSize);
push_src("image", folder, src);
}
@@ -344,6 +369,13 @@ static void push_codec_srcs(Path path) {
break;
}
+ SkTArray<SkAlphaType> alphaModes;
+ alphaModes.push_back(kPremul_SkAlphaType);
+ // FIXME: Currently we cannot draw unpremultiplied sources. skbug.com/3338 and skbug.com/3339
+ // alphaModes.push_back(kUnpremul_SkAlphaType);
+ if (codec->getInfo().alphaType() == kOpaque_SkAlphaType) {
+ alphaModes.push_back(kOpaque_SkAlphaType);
+ }
for (CodecSrc::Mode mode : nativeModes) {
// SkCodecImageGenerator only runs for the default colorType
@@ -353,14 +385,17 @@ static void push_codec_srcs(Path path) {
if (CodecSrc::kGen_Mode == mode) {
// FIXME: The gpu backend does not draw kGray sources correctly. (skbug.com/4822)
if (kGray_8_SkColorType != codec->getInfo().colorType()) {
- push_codec_src(path, mode, CodecSrc::kGetFromCanvas_DstColorType, 1.0f);
+ push_codec_src(path, mode, CodecSrc::kGetFromCanvas_DstColorType,
+ codec->getInfo().alphaType(), 1.0f);
}
continue;
}
for (float scale : nativeScales) {
for (uint32_t i = 0; i < numColorTypes; i++) {
- push_codec_src(path, mode, colorTypes[i], scale);
+ for (SkAlphaType alphaType : alphaModes) {
+ push_codec_src(path, mode, colorTypes[i], alphaType, scale);
+ }
}
}
}
@@ -384,11 +419,13 @@ static void push_codec_srcs(Path path) {
for (int sampleSize : sampleSizes) {
for (uint32_t i = 0; i < numColorTypes; i++) {
- push_android_codec_src(path, AndroidCodecSrc::kFullImage_Mode, colorTypes[i],
- sampleSize);
- if (subset) {
- push_android_codec_src(path, AndroidCodecSrc::kDivisor_Mode, colorTypes[i],
- sampleSize);
+ for (SkAlphaType alphaType : alphaModes) {
+ push_android_codec_src(path, AndroidCodecSrc::kFullImage_Mode, colorTypes[i],
+ alphaType, sampleSize);
+ if (subset) {
+ push_android_codec_src(path, AndroidCodecSrc::kDivisor_Mode, colorTypes[i],
+ alphaType, sampleSize);
+ }
}
}
}
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
index 29886807a7..9712fd73a0 100644
--- a/dm/DMSrcSink.cpp
+++ b/dm/DMSrcSink.cpp
@@ -233,10 +233,12 @@ Name BRDSrc::name() const {
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-CodecSrc::CodecSrc(Path path, Mode mode, DstColorType dstColorType, float scale)
+CodecSrc::CodecSrc(Path path, Mode mode, DstColorType dstColorType, SkAlphaType dstAlphaType,
+ float scale)
: fPath(path)
, fMode(mode)
, fDstColorType(dstColorType)
+ , fDstAlphaType(dstAlphaType)
, fScale(scale)
{}
@@ -251,30 +253,26 @@ bool CodecSrc::veto(SinkFlags flags) const {
return flags.type != SinkFlags::kRaster || flags.approach != SinkFlags::kDirect;
}
-bool get_decode_info(SkImageInfo* decodeInfo, const SkImageInfo& defaultInfo,
- SkColorType canvasColorType, CodecSrc::DstColorType dstColorType) {
+bool get_decode_info(SkImageInfo* decodeInfo, SkColorType canvasColorType,
+ CodecSrc::DstColorType dstColorType) {
switch (dstColorType) {
case CodecSrc::kIndex8_Always_DstColorType:
if (kRGB_565_SkColorType == canvasColorType) {
return false;
}
- *decodeInfo = defaultInfo.makeColorType(kIndex_8_SkColorType);
+ *decodeInfo = decodeInfo->makeColorType(kIndex_8_SkColorType);
break;
case CodecSrc::kGrayscale_Always_DstColorType:
if (kRGB_565_SkColorType == canvasColorType) {
return false;
}
- *decodeInfo = defaultInfo.makeColorType(kGray_8_SkColorType);
+ *decodeInfo = decodeInfo->makeColorType(kGray_8_SkColorType);
break;
default:
- *decodeInfo = defaultInfo.makeColorType(canvasColorType);
+ *decodeInfo = decodeInfo->makeColorType(canvasColorType);
break;
}
- // FIXME: Currently we cannot draw unpremultiplied sources.
- if (decodeInfo->alphaType() == kUnpremul_SkAlphaType) {
- *decodeInfo = decodeInfo->makeAlphaType(kPremul_SkAlphaType);
- }
return true;
}
@@ -319,9 +317,8 @@ Error CodecSrc::draw(SkCanvas* canvas) const {
return SkStringPrintf("Couldn't create codec for %s.", fPath.c_str());
}
- SkImageInfo decodeInfo;
- if (!get_decode_info(&decodeInfo, codec->getInfo(), canvas->imageInfo().colorType(),
- fDstColorType)) {
+ SkImageInfo decodeInfo = codec->getInfo().makeAlphaType(fDstAlphaType);
+ if (!get_decode_info(&decodeInfo, canvas->imageInfo().colorType(), fDstColorType)) {
return Error::Nonfatal("Testing non-565 to 565 is uninteresting.");
}
@@ -570,10 +567,11 @@ Name CodecSrc::name() const {
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
AndroidCodecSrc::AndroidCodecSrc(Path path, Mode mode, CodecSrc::DstColorType dstColorType,
- int sampleSize)
+ SkAlphaType dstAlphaType, int sampleSize)
: fPath(path)
, fMode(mode)
, fDstColorType(dstColorType)
+ , fDstAlphaType(dstAlphaType)
, fSampleSize(sampleSize)
{}
@@ -593,9 +591,8 @@ Error AndroidCodecSrc::draw(SkCanvas* canvas) const {
return SkStringPrintf("Couldn't create android codec for %s.", fPath.c_str());
}
- SkImageInfo decodeInfo;
- if (!get_decode_info(&decodeInfo, codec->getInfo(), canvas->imageInfo().colorType(),
- fDstColorType)) {
+ SkImageInfo decodeInfo = codec->getInfo().makeAlphaType(fDstAlphaType);
+ if (!get_decode_info(&decodeInfo, canvas->imageInfo().colorType(), fDstColorType)) {
return Error::Nonfatal("Testing non-565 to 565 is uninteresting.");
}
diff --git a/dm/DMSrcSink.h b/dm/DMSrcSink.h
index d02eeaf101..a719bd154a 100644
--- a/dm/DMSrcSink.h
+++ b/dm/DMSrcSink.h
@@ -118,7 +118,7 @@ public:
kIndex8_Always_DstColorType,
kGrayscale_Always_DstColorType,
};
- CodecSrc(Path, Mode, DstColorType, float);
+ CodecSrc(Path, Mode, DstColorType, SkAlphaType, float);
Error draw(SkCanvas*) const override;
SkISize size() const override;
@@ -128,6 +128,7 @@ private:
Path fPath;
Mode fMode;
DstColorType fDstColorType;
+ SkAlphaType fDstAlphaType;
float fScale;
};
@@ -140,7 +141,7 @@ public:
kDivisor_Mode,
};
- AndroidCodecSrc(Path, Mode, CodecSrc::DstColorType, int sampleSize);
+ AndroidCodecSrc(Path, Mode, CodecSrc::DstColorType, SkAlphaType, int sampleSize);
Error draw(SkCanvas*) const override;
SkISize size() const override;
@@ -150,6 +151,7 @@ private:
Path fPath;
Mode fMode;
CodecSrc::DstColorType fDstColorType;
+ SkAlphaType fDstAlphaType;
int fSampleSize;
};
diff --git a/include/codec/SkCodec.h b/include/codec/SkCodec.h
index 023ae51c49..edc8ec38fa 100644
--- a/include/codec/SkCodec.h
+++ b/include/codec/SkCodec.h
@@ -570,15 +570,14 @@ protected:
* scanlines. This allows the subclass to indicate what value to fill with.
*
* @param colorType Destination color type.
- * @param alphaType Destination alpha type.
* @return The value with which to fill uninitialized pixels.
*
* Note that we can interpret the return value as an SkPMColor, a 16-bit 565 color,
* an 8-bit gray color, or an 8-bit index into a color table, depending on the color
* type.
*/
- uint32_t getFillValue(SkColorType colorType, SkAlphaType alphaType) const {
- return this->onGetFillValue(colorType, alphaType);
+ uint32_t getFillValue(SkColorType colorType) const {
+ return this->onGetFillValue(colorType);
}
/**
@@ -586,13 +585,13 @@ protected:
* types that we support. Note that for color types that do not use the full 32-bits,
* we will simply take the low bits of the fill value.
*
- * kN32_SkColorType: Transparent or Black
+ * kN32_SkColorType: Transparent or Black, depending on the src alpha type
* kRGB_565_SkColorType: Black
* kGray_8_SkColorType: Black
* kIndex_8_SkColorType: First color in color table
*/
- virtual uint32_t onGetFillValue(SkColorType /*colorType*/, SkAlphaType alphaType) const {
- return kOpaque_SkAlphaType == alphaType ? SK_ColorBLACK : SK_ColorTRANSPARENT;
+ virtual uint32_t onGetFillValue(SkColorType /*colorType*/) const {
+ return kOpaque_SkAlphaType == fSrcInfo.alphaType() ? SK_ColorBLACK : SK_ColorTRANSPARENT;
}
/**
diff --git a/src/codec/SkBmpStandardCodec.cpp b/src/codec/SkBmpStandardCodec.cpp
index 85b40778b6..e73d55ebba 100644
--- a/src/codec/SkBmpStandardCodec.cpp
+++ b/src/codec/SkBmpStandardCodec.cpp
@@ -182,7 +182,7 @@ bool SkBmpStandardCodec::initializeSwizzler(const SkImageInfo& dstInfo, const Op
config = SkSwizzler::kBGR;
break;
case 32:
- if (kOpaque_SkAlphaType == dstInfo.alphaType()) {
+ if (kOpaque_SkAlphaType == this->getInfo().alphaType()) {
config = SkSwizzler::kBGRX;
} else {
config = SkSwizzler::kBGRA;
@@ -337,10 +337,10 @@ void SkBmpStandardCodec::decodeIcoMask(SkStream* stream, const SkImageInfo& dstI
}
}
-uint32_t SkBmpStandardCodec::onGetFillValue(SkColorType colorType, SkAlphaType alphaType) const {
+uint32_t SkBmpStandardCodec::onGetFillValue(SkColorType colorType) const {
const SkPMColor* colorPtr = get_color_ptr(fColorTable.get());
if (colorPtr) {
return get_color_table_fill_value(colorType, colorPtr, 0);
}
- return INHERITED::onGetFillValue(colorType, alphaType);
+ return INHERITED::onGetFillValue(colorType);
}
diff --git a/src/codec/SkBmpStandardCodec.h b/src/codec/SkBmpStandardCodec.h
index b7999001e1..b5f56f0a2a 100644
--- a/src/codec/SkBmpStandardCodec.h
+++ b/src/codec/SkBmpStandardCodec.h
@@ -55,7 +55,7 @@ protected:
int* inputColorCount) override;
- uint32_t onGetFillValue(SkColorType colorType, SkAlphaType alphaType) const override;
+ uint32_t onGetFillValue(SkColorType) const override;
SkSampler* getSampler(bool createIfNecessary) override {
SkASSERT(fSwizzler);
diff --git a/src/codec/SkCodec.cpp b/src/codec/SkCodec.cpp
index cfeeb51d0d..f5a6d36e3b 100644
--- a/src/codec/SkCodec.cpp
+++ b/src/codec/SkCodec.cpp
@@ -352,7 +352,7 @@ void SkCodec::fillIncompleteImage(const SkImageInfo& info, void* dst, size_t row
ZeroInitialized zeroInit, int linesRequested, int linesDecoded) {
void* fillDst;
- const uint32_t fillValue = this->getFillValue(info.colorType(), info.alphaType());
+ const uint32_t fillValue = this->getFillValue(info.colorType());
const int linesRemaining = linesRequested - linesDecoded;
SkSampler* sampler = this->getSampler(false);
diff --git a/src/codec/SkCodecPriv.h b/src/codec/SkCodecPriv.h
index 27e2a63722..fa7d146d1a 100644
--- a/src/codec/SkCodecPriv.h
+++ b/src/codec/SkCodecPriv.h
@@ -14,6 +14,12 @@
#include "SkTypes.h"
#include "SkUtils.h"
+#ifdef SK_PRINT_CODEC_MESSAGES
+ #define SkCodecPrintf SkDebugf
+#else
+ #define SkCodecPrintf(...)
+#endif
+
// FIXME: Consider sharing with dm, nanbench, and tools.
inline float get_scale_from_sample_size(int sampleSize) {
return 1.0f / ((float) sampleSize);
@@ -75,11 +81,16 @@ inline bool is_coord_necessary(int srcCoord, int sampleFactor, int scaledDim) {
}
inline bool valid_alpha(SkAlphaType dstAlpha, SkAlphaType srcAlpha) {
- // Check for supported alpha types
+ if (kUnknown_SkAlphaType == dstAlpha) {
+ return false;
+ }
+
if (srcAlpha != dstAlpha) {
if (kOpaque_SkAlphaType == srcAlpha) {
- // If the source is opaque, we must decode to opaque
- return false;
+ // If the source is opaque, we can support any.
+ SkCodecPrintf("Warning: an opaque image should be decoded as opaque "
+ "- it is being decoded as non-opaque, which will draw slower\n");
+ return true;
}
// The source is not opaque
@@ -99,7 +110,8 @@ inline bool valid_alpha(SkAlphaType dstAlpha, SkAlphaType srcAlpha) {
/*
* Most of our codecs support the same conversions:
* - profileType must be the same
- * - opaque only to opaque (and 565 only if opaque)
+ * - opaque to any alpha type
+ * - 565 only if opaque
* - premul to unpremul and vice versa
* - always support N32
* - otherwise match the src color type
@@ -230,10 +242,4 @@ inline uint32_t get_int(uint8_t* buffer, uint32_t i) {
#endif
}
-#ifdef SK_PRINT_CODEC_MESSAGES
- #define SkCodecPrintf SkDebugf
-#else
- #define SkCodecPrintf(...)
-#endif
-
#endif // SkCodecPriv_DEFINED
diff --git a/src/codec/SkGifCodec.cpp b/src/codec/SkGifCodec.cpp
index 92470bf3a0..a938f5fc48 100644
--- a/src/codec/SkGifCodec.cpp
+++ b/src/codec/SkGifCodec.cpp
@@ -476,8 +476,7 @@ SkCodec::Result SkGifCodec::onGetPixels(const SkImageInfo& dstInfo,
// Initialize the swizzler
if (fFrameIsSubset) {
// Fill the background
- SkSampler::Fill(dstInfo, dst, dstRowBytes,
- this->getFillValue(dstInfo.colorType(), dstInfo.alphaType()),
+ SkSampler::Fill(dstInfo, dst, dstRowBytes, this->getFillValue(dstInfo.colorType()),
opts.fZeroInitialized);
}
@@ -495,7 +494,7 @@ SkCodec::Result SkGifCodec::onGetPixels(const SkImageInfo& dstInfo,
// FIXME: This is similar to the implementation for bmp and png. Can we share more code or
// possibly make this non-virtual?
-uint32_t SkGifCodec::onGetFillValue(SkColorType colorType, SkAlphaType alphaType) const {
+uint32_t SkGifCodec::onGetFillValue(SkColorType colorType) const {
const SkPMColor* colorPtr = get_color_ptr(fColorTable.get());
return get_color_table_fill_value(colorType, colorPtr, fFillIndex);
}
@@ -538,8 +537,7 @@ int SkGifCodec::onGetScanlines(void* dst, int count, size_t rowBytes) {
if (fFrameIsSubset) {
// Fill the requested rows
SkImageInfo fillInfo = this->dstInfo().makeWH(this->dstInfo().width(), count);
- uint32_t fillValue = this->onGetFillValue(this->dstInfo().colorType(),
- this->dstInfo().alphaType());
+ uint32_t fillValue = this->onGetFillValue(this->dstInfo().colorType());
fSwizzler->fill(fillInfo, dst, rowBytes, fillValue, this->options().fZeroInitialized);
// Start to write pixels at the start of the image frame
diff --git a/src/codec/SkGifCodec.h b/src/codec/SkGifCodec.h
index ba48989cbb..91861b299a 100644
--- a/src/codec/SkGifCodec.h
+++ b/src/codec/SkGifCodec.h
@@ -64,7 +64,7 @@ protected:
bool onRewind() override;
- uint32_t onGetFillValue(SkColorType colorType, SkAlphaType alphaType) const override;
+ uint32_t onGetFillValue(SkColorType) const override;
int onOutputScanline(int inputScanline) const override;
diff --git a/src/codec/SkJpegCodec.cpp b/src/codec/SkJpegCodec.cpp
index 50db897a8e..b834ecbafe 100644
--- a/src/codec/SkJpegCodec.cpp
+++ b/src/codec/SkJpegCodec.cpp
@@ -164,11 +164,15 @@ bool SkJpegCodec::setOutputColorSpace(const SkImageInfo& dst) {
return false;
}
- // Ensure that the alpha type is opaque
- if (kOpaque_SkAlphaType != dst.alphaType()) {
+ if (kUnknown_SkAlphaType == dst.alphaType()) {
return false;
}
+ if (kOpaque_SkAlphaType != dst.alphaType()) {
+ SkCodecPrintf("Warning: an opaque image should be decoded as opaque "
+ "- it is being decoded as non-opaque, which will draw slower\n");
+ }
+
// Check if we will decode to CMYK because a conversion to RGBA is not supported
J_COLOR_SPACE colorSpace = fDecoderMgr->dinfo()->jpeg_color_space;
bool isCMYK = JCS_CMYK == colorSpace || JCS_YCCK == colorSpace;
diff --git a/src/codec/SkMaskSwizzler.cpp b/src/codec/SkMaskSwizzler.cpp
index 01502cbd4a..1b77a85b13 100644
--- a/src/codec/SkMaskSwizzler.cpp
+++ b/src/codec/SkMaskSwizzler.cpp
@@ -250,13 +250,7 @@ SkMaskSwizzler* SkMaskSwizzler::CreateMaskSwizzler(const SkImageInfo& dstInfo,
}
break;
case kRGB_565_SkColorType:
- switch (dstInfo.alphaType()) {
- case kOpaque_SkAlphaType:
- proc = &swizzle_mask16_to_565;
- break;
- default:
- break;
- }
+ proc = &swizzle_mask16_to_565;
break;
default:
break;
@@ -280,13 +274,7 @@ SkMaskSwizzler* SkMaskSwizzler::CreateMaskSwizzler(const SkImageInfo& dstInfo,
}
break;
case kRGB_565_SkColorType:
- switch (dstInfo.alphaType()) {
- case kOpaque_SkAlphaType:
- proc = &swizzle_mask24_to_565;
- break;
- default:
- break;
- }
+ proc = &swizzle_mask24_to_565;
break;
default:
break;
@@ -310,13 +298,7 @@ SkMaskSwizzler* SkMaskSwizzler::CreateMaskSwizzler(const SkImageInfo& dstInfo,
}
break;
case kRGB_565_SkColorType:
- switch (dstInfo.alphaType()) {
- case kOpaque_SkAlphaType:
- proc = &swizzle_mask32_to_565;
- break;
- default:
- break;
- }
+ proc = &swizzle_mask32_to_565;
break;
default:
break;
diff --git a/src/codec/SkPngCodec.cpp b/src/codec/SkPngCodec.cpp
index 733efa3e78..710630d472 100644
--- a/src/codec/SkPngCodec.cpp
+++ b/src/codec/SkPngCodec.cpp
@@ -535,12 +535,12 @@ SkCodec::Result SkPngCodec::onGetPixels(const SkImageInfo& requestedInfo, void*
return kSuccess;
}
-uint32_t SkPngCodec::onGetFillValue(SkColorType colorType, SkAlphaType alphaType) const {
+uint32_t SkPngCodec::onGetFillValue(SkColorType colorType) const {
const SkPMColor* colorPtr = get_color_ptr(fColorTable.get());
if (colorPtr) {
return get_color_table_fill_value(colorType, colorPtr, 0);
}
- return INHERITED::onGetFillValue(colorType, alphaType);
+ return INHERITED::onGetFillValue(colorType);
}
// Subclass of SkPngCodec which supports scanline decoding
diff --git a/src/codec/SkPngCodec.h b/src/codec/SkPngCodec.h
index 9a13a12670..95fd613163 100644
--- a/src/codec/SkPngCodec.h
+++ b/src/codec/SkPngCodec.h
@@ -31,7 +31,7 @@ protected:
override;
SkEncodedFormat onGetEncodedFormat() const override { return kPNG_SkEncodedFormat; }
bool onRewind() override;
- uint32_t onGetFillValue(SkColorType colorType, SkAlphaType alphaType) const override;
+ uint32_t onGetFillValue(SkColorType) const override;
// Helper to set up swizzler and color table. Also calls png_read_update_info.
Result initializeSwizzler(const SkImageInfo& requestedInfo, const Options&,
diff --git a/src/codec/SkSampledCodec.cpp b/src/codec/SkSampledCodec.cpp
index e52470505d..49c939c1f8 100644
--- a/src/codec/SkSampledCodec.cpp
+++ b/src/codec/SkSampledCodec.cpp
@@ -253,8 +253,7 @@ SkCodec::Result SkSampledCodec::sampledDecode(const SkImageInfo& info, void* pix
// We handle filling uninitialized memory here instead of using this->codec().
// this->codec() does not know that we are sampling.
- const uint32_t fillValue = this->codec()->getFillValue(info.colorType(),
- info.alphaType());
+ const uint32_t fillValue = this->codec()->getFillValue(info.colorType());
const SkImageInfo fillInfo = info.makeWH(info.width(), 1);
for (; y < nativeSize.height(); y++) {
int srcY = this->codec()->outputScanline(y);
diff --git a/tests/CodexTest.cpp b/tests/CodexTest.cpp
index b6b5d8276d..1f6b7ac4c1 100644
--- a/tests/CodexTest.cpp
+++ b/tests/CodexTest.cpp
@@ -130,9 +130,9 @@ static void test_codec(skiatest::Reporter* r, SkCodec* codec, SkBitmap& bm, cons
// Check alpha type conversions
if (info.alphaType() == kOpaque_SkAlphaType) {
test_info(r, codec, info.makeAlphaType(kUnpremul_SkAlphaType),
- SkCodec::kInvalidConversion, nullptr);
+ expectedResult, digest);
test_info(r, codec, info.makeAlphaType(kPremul_SkAlphaType),
- SkCodec::kInvalidConversion, nullptr);
+ expectedResult, digest);
} else {
// Decoding to opaque should fail
test_info(r, codec, info.makeAlphaType(kOpaque_SkAlphaType),
@@ -183,9 +183,9 @@ static void test_android_codec(skiatest::Reporter* r, SkAndroidCodec* codec, SkB
// Check alpha type conversions
if (info.alphaType() == kOpaque_SkAlphaType) {
test_android_info(r, codec, info.makeAlphaType(kUnpremul_SkAlphaType),
- SkCodec::kInvalidConversion, nullptr);
+ expectedResult, digest);
test_android_info(r, codec, info.makeAlphaType(kPremul_SkAlphaType),
- SkCodec::kInvalidConversion, nullptr);
+ expectedResult, digest);
} else {
// Decoding to opaque should fail
test_android_info(r, codec, info.makeAlphaType(kOpaque_SkAlphaType),