commit | 25a73867b3744588ee9ae3c07784f34e4beac6f1 | [log] [tgz] |
---|---|---|
author | Daniel Dilan <danieldilan@google.com> | Wed Jul 02 11:08:42 2025 -0400 |
committer | SkCQ <skcq-be@skia-corp.google.com.iam.gserviceaccount.com> | Wed Jul 02 09:34:44 2025 -0700 |
tree | fd84591f16be0411a0655e91b6d7d96b54afaf10 | |
parent | aace3b9dd05849f005f9f36eeb9c150699519dbb [diff] |
Fix stream decoding Webp from unrewindable stream Previous CL [1] changed SkWebpCodec to defer copying the stream data by owning the fStream. Comment suggested that deleting the stream was optional [2] but this actually was necessary to indicate to SkCodec that we didn't want to try to call rewind() [3]. This CL introduces a protected helper function rewindStream(), which returns true to indicate that we can rewind the fStream, but SkWebp's override of onRewind doesn't call this function since we have the SkData copy. Adds test case the reproduces this bug in just skia (bug was found in android). Tries to decode multiple frames of webp with unrewindable stream. [1] https://skia-review.googlesource.com/c/skia/+/989596 [2] https://source.chromium.org/chromium/_/skia/skia/+/c2f00d09af9834259ba596a8cc7c0f92c6ba148e:src/codec/SkWebpCodec.cpp;drc=a49594026be7fb586b18700e3b39a4cd2642ce7b;l=77 [3] https://source.chromium.org/chromium/chromium/src/+/main:third_party/skia/src/codec/SkCodec.cpp;drc=d3ff0fc4ed435f672bd7492f7b6e3063bac2dab2;l=329 Bug: 421351189 Change-Id: I274ea5055da2d0843457ff850f6d1071df0716f3 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1013978 Reviewed-by: Florin Malita <fmalita@google.com> Commit-Queue: Daniel Dilan <danieldilan@google.com>