Bug 1503935 - Fix some WebP decoder implementation bugs. r=tnikkel
First we did not handle the SourceBufferIterator::WAITING state which can happen when we get woken up but there is no data to read from the SourceBufferIterator. StreamingLexer handled this properly by yielding with NEED_MORE_DATA, and properly scheduling the decoder to resume. This patch does the same in the WebP decoder. Second nsWebPDecoder::GetType was not implemented. This meant it would return DecoderType::UNKNOWN, and would fail to recreate the decoder if we are discarding frames and need to restart from the beginning. In addition to implementing that method, this patch also corrects an assert in DecoderFactory::CloneAnimationDecoder which failed to check for WebP as a supported animated decoder. This patch also modestly improves the logging output and library method checks. Differential Revision: https://phabricator.services.mozilla.com/D10624
This commit is contained in:
@@ -246,7 +246,8 @@ DecoderFactory::CloneAnimationDecoder(Decoder* aDecoder)
|
||||
// get scheduled yet, or it has only decoded the first frame and has yet to
|
||||
// rediscover it is animated).
|
||||
DecoderType type = aDecoder->GetType();
|
||||
MOZ_ASSERT(type == DecoderType::GIF || type == DecoderType::PNG,
|
||||
MOZ_ASSERT(type == DecoderType::GIF || type == DecoderType::PNG ||
|
||||
type == DecoderType::WEBP,
|
||||
"Calling CloneAnimationDecoder for non-animating DecoderType");
|
||||
|
||||
RefPtr<Decoder> decoder = GetDecoder(type, nullptr, /* aIsRedecode = */ true);
|
||||
|
||||
Reference in New Issue
Block a user