[webkit-reviews] review denied: [Bug 58851] add incremental decoding to WebP decoder : [Attachment 90121] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Apr 18 17:37:09 PDT 2011
Peter Kasting <pkasting at google.com> has denied review:
Bug 58851: add incremental decoding to WebP decoder
https://bugs.webkit.org/show_bug.cgi?id=58851
Attachment 90121: Patch
https://bugs.webkit.org/attachment.cgi?id=90121&action=review
------- Additional Comments from Peter Kasting <pkasting at google.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=90121&action=review
r- for the concern about byte ordering; the rest are all nits.
> Source/WebCore/ChangeLog:5
> + add incremental decoding to WebP decoder
Nit: add -> Add
> Source/WebCore/ChangeLog:12
> + No new tests.
> + Testing buffered connection is flaky: one need a very big picture
> + to test with and an emulated clogged-connection. And even then,
> + there's no guaranty the test will eventually chose the
> + incremental-decoding code path.
Nit: Lots of grammar/mechanics errors. How about this simpler version:
No new tests, as it's not possible for the layout test framework to force the
decoders to decode incrementally.
> Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp:86
> + const uint8_t* dataBytes = reinterpret_cast<const
uint8_t*>(m_data->data());
Nit: Move this below the conditional, into the next section.
> Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp:98
> + bool dataComplete = isAllDataReceived();
Nit: allDataReceived would be a more parallel-structured name.
> Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp:116
> + if (!dataComplete) {
> + m_decoder = WebPINewRGB(MODE_RGB, m_rgbOutput.data(),
m_rgbOutput.size(), stride);
> + if (!m_decoder)
> + return setFailed();
> + }
Nit: I think it would be slightly clearer if you moved this block into the else
block below that actually uses the decoder, and changed the conditional to be
"if (!m_decoder)". Then all access to the decoder occurs within a single outer
conditional arm.
> Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp:117
> + m_lastVisibleRow = 0;
Nit: We don't need to zero this here, it was zeroed in the constructor.
> Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp:119
> + int visiblePart = 0; // Last completed row.
Nit: newLastVisibleRow would be a better name, and would need no comment.
> Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp:137
> + buffer.setRGBA(x, y, src[bytesPerPixel * x + 0],
src[bytesPerPixel * x + 1], src[bytesPerPixel * x + 2], 0xff);
I'm confused. This reverses the byte order for both incremental and
non-incremental decoding. I don't see any flag changes in the non-incremental
case or other evidence that this is the right thing to do there (I have no idea
on the incremental case as it's new). Why is this happening?
> Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp:144
> + if (m_lastVisibleRow == height) {
> + buffer.setStatus(ImageFrame::FrameComplete);
> + return true;
> + } else
> + return false; // I/O suspension.
Nit: Shorter:
if (m_lastVisibleRow == height)
buffer.setStatus(ImageFrame::FrameComplete);
return m_lastVisibleRow == height;
> Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.h:52
> + // These fields store the decoder's state during incremental decoding,
when only partial data is available.
Nit: Blank line before this. Also, this sentence is technically false, since
only the first of the three fields is incremental-only. I'd instead do:
WebPIDecoder* m_decoder; // This is only used when we want to decode() but
not all data is available yet.
...and leave the rest uncommented.
More information about the webkit-reviews
mailing list