Chromium Code Reviews| Index: third_party/WebKit/Source/platform/image-decoders/webp/WEBPImageDecoder.cpp |
| diff --git a/third_party/WebKit/Source/platform/image-decoders/webp/WEBPImageDecoder.cpp b/third_party/WebKit/Source/platform/image-decoders/webp/WEBPImageDecoder.cpp |
| index fae908a78e567ec303b4b967a767735cffe0861c..ec052ebe3d0946004e9b9242179560d2916113bf 100644 |
| --- a/third_party/WebKit/Source/platform/image-decoders/webp/WEBPImageDecoder.cpp |
| +++ b/third_party/WebKit/Source/platform/image-decoders/webp/WEBPImageDecoder.cpp |
| @@ -128,7 +128,6 @@ WEBPImageDecoder::WEBPImageDecoder(AlphaOption alphaOption, GammaAndColorProfile |
| , m_frameBackgroundHasAlpha(false) |
| , m_demux(0) |
| , m_demuxState(WEBP_DEMUX_PARSING_HEADER) |
| - , m_haveAlreadyParsedThisData(false) |
| , m_repetitionCount(cAnimationLoopOnce) |
| , m_decodedHeight(0) |
| { |
| @@ -156,24 +155,20 @@ void WEBPImageDecoder::clearDecoder() |
| m_frameBackgroundHasAlpha = false; |
| } |
| -void WEBPImageDecoder::onSetData(SegmentReader*) |
| -{ |
| - m_haveAlreadyParsedThisData = false; |
| -} |
| - |
| int WEBPImageDecoder::repetitionCount() const |
| { |
| return failed() ? cAnimationLoopOnce : m_repetitionCount; |
| } |
| -bool WEBPImageDecoder::frameIsCompleteAtIndex(size_t index) const |
| +bool WEBPImageDecoder::frameIsFullyReceivedAtIndex(size_t index) const |
| { |
| - if (!m_demux || m_demuxState <= WEBP_DEMUX_PARSING_HEADER) |
| - return false; |
| + ASSERT(m_haveUpdatedFrameCount); |
| if (!(m_formatFlags & ANIMATION_FLAG)) |
| - return ImageDecoder::frameIsCompleteAtIndex(index); |
| - bool frameIsLoadedAtIndex = index < m_frameBufferCache.size(); |
| - return frameIsLoadedAtIndex; |
| + return ImageDecoder::frameIsFullyReceivedAtIndex(index); |
| + |
| + // Multi-frame WebP frame gets added to m_frameBufferCache through |
| + // initializeNewFrame() only when the frame data is fully received. |
| + return index < m_frameBufferCache.size(); |
| } |
| float WEBPImageDecoder::frameDurationAtIndex(size_t index) const |
| @@ -186,11 +181,6 @@ bool WEBPImageDecoder::updateDemuxer() |
| if (failed()) |
| return false; |
|
scroggo_chromium
2016/06/02 21:00:14
Don't you want to return if (haveUpdatedFrameCount
aleksandar.stojiljkovic
2016/06/03 19:33:57
Reverted this code - having ImageDecoder::haveUpda
|
| - if (m_haveAlreadyParsedThisData) |
| - return true; |
| - |
| - m_haveAlreadyParsedThisData = true; |
| - |
| const unsigned webpHeaderSize = 30; |
| if (m_data->size() < webpHeaderSize) |
| return false; // Await VP8X header so WebPDemuxPartial succeeds. |