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. |