diff options
author | 2015-07-22 07:16:20 -0700 | |
---|---|---|
committer | 2015-07-22 07:16:20 -0700 | |
commit | b636b45971bc5e64e3b103169577cbc874bc064d (patch) | |
tree | 17579347d627ede9bdc4e675b22202f4191190f9 /src/codec/SkCodec_libgif.cpp | |
parent | 8c0144ccb17220db9d5140ef5ee85d5bc7837513 (diff) |
Add the ability to decode a subset to SkCodec
This allows codecs that support subsets natively (i.e. WEBP) to do so.
Add a field on SkCodec::Options representing the subset.
Add a method on SkCodec to find a valid subset which approximately
matches a desired subset.
Implement subset decodes in SkWebpCodec.
Add a test in DM for decoding subsets.
Notice that we only start on even boundaries. This is due to the
way libwebp's API works. SkWEBPImageDecoder does not take this into
account, which results in visual artifacts.
FIXME: Subsets with scaling are not pixel identical, but close. (This
may be fine, though - they are not perceptually different. We'll just
need to mark another set of images in gold as valid, once
https://skbug.com/4038 is fixed, so we can tests scaled webp without
generating new images on each run.)
Review URL: https://codereview.chromium.org/1240143002
Diffstat (limited to 'src/codec/SkCodec_libgif.cpp')
-rw-r--r-- | src/codec/SkCodec_libgif.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/codec/SkCodec_libgif.cpp b/src/codec/SkCodec_libgif.cpp index fb578f2bea..9b15151f10 100644 --- a/src/codec/SkCodec_libgif.cpp +++ b/src/codec/SkCodec_libgif.cpp @@ -257,6 +257,10 @@ SkCodec::Result SkGifCodec::onGetPixels(const SkImageInfo& dstInfo, } // Check for valid input parameters + if (opts.fSubset) { + // Subsets are not supported. + return kUnimplemented; + } if (dstInfo.dimensions() != this->getInfo().dimensions()) { return gif_error("Scaling not supported.\n", kInvalidScale); } |