Have SkWuffsCodec speak kRGB_565_SkColorType
This takes the "one pass" code path more often, using less memory, as it
does not have to allocate an intermediate width*height pixel buffer.
Wuffs v0.2 did not support RGB 565 color but Wuffs v0.3 does.
The Codec_AnimatedTransparentGif test passes with skia_use_wuffs true or
false.
Change-Id: Id569fc0bf62e614fa881cb235a9a6a1ca340dcb0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/329916
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
diff --git a/src/codec/SkWuffsCodec.cpp b/src/codec/SkWuffsCodec.cpp
index 7c966c3..2f0495c 100644
--- a/src/codec/SkWuffsCodec.cpp
+++ b/src/codec/SkWuffsCodec.cpp
@@ -461,9 +461,6 @@
if (options.fSubset) {
return SkCodec::kUnimplemented;
}
- if (options.fFrameIndex > 0 && SkColorTypeIsAlwaysOpaque(dstInfo.colorType())) {
- return SkCodec::kInvalidConversion;
- }
SkCodec::Result result = this->seekFrame(WhichDecoder::kIncrDecode, options.fFrameIndex);
if (result != SkCodec::kSuccess) {
return result;
@@ -481,6 +478,10 @@
size_t bytesPerPixel = 0;
switch (dstInfo.colorType()) {
+ case kRGB_565_SkColorType:
+ pixelFormat = WUFFS_BASE__PIXEL_FORMAT__BGR_565;
+ bytesPerPixel = 2;
+ break;
case kBGRA_8888_SkColorType:
pixelFormat = WUFFS_BASE__PIXEL_FORMAT__BGRA_NONPREMUL;
bytesPerPixel = 4;