gecko-dev/image/decoders
Andrew Osmond eebcbbd123 Bug 1504448 - Fix buffering problems in WebPDecoder. r=tnikkel
There were two unrelated buffering problems in nsWebPDecoder. The first
was with the decoder contract. We are expected to loop until the
iterator is unable to provide more data, and wait for the SourceBuffer
to reschedule us, where as nsWebPDecoder::DoDecode only did one pass.
Thus when something yielded wanting more data, we would just wait
forever.

The second was the integration with the libwebp API. We are expected to
retry when we receive SUSPENDED from the decoder, as it decided to yield
pixels instead of continuing to decode as many as possible.

The tests did not cover the first problem because multi chunk decoder
tests do not use SourceBuffer scheduling. This is an oversight. They now
will write a chunk of data, let the SourceBuffer reschedule the decoder,
and repeat until all of the data has been written.

The tests did not cover the second problem because all of the reference
WebP images are too small. This patch adds a new test with a large WebP
image (converted from a Mozilla all hands photo of lanyards). This
should actually trigger the SUSPEND behaviour of libwebp.

Differential Revision: https://phabricator.services.mozilla.com/D10817
2018-11-07 06:28:38 -05:00
..
icon Bug 1494127 - Fix trivial calls to do_QueryInterface that return an nsresult r=smaug 2018-10-01 21:38:43 +00:00
EXIF.cpp Bug 1469769 - Part 6: Replace non-failing NS_NOTREACHED with MOZ_ASSERT_UNREACHABLE. r=froydnj 2018-06-17 22:43:11 -07:00
EXIF.h
GIF2.h Bug 1337111 - Part 2. Add an image decoder flag to request complete frames. r=tnikkel 2018-09-17 15:06:28 -04:00
iccjpeg.c
iccjpeg.h
moz.build Bug 1294490 - Part 3. Implement WebP decoder. r=tnikkel 2018-10-31 15:01:08 -04:00
nsBMPDecoder.cpp Bug 1462355 - Part 1c. Make individual image decoders to use updated Decoder/SurfacePipe methods. r=tnikkel 2018-05-29 08:36:12 -04:00
nsBMPDecoder.h Bug 523950 - Part 2. Expose image decoder type and SourceBuffer to owners. r=tnikkel 2018-02-28 13:34:52 -05:00
nsGIFDecoder2.cpp Bug 1337111 - Part 2. Add an image decoder flag to request complete frames. r=tnikkel 2018-09-17 15:06:28 -04:00
nsGIFDecoder2.h Bug 1382683 - Part 2. Switch nsGIFDecoder2 to write pixels in blocks instead of individually. r=tnikkel 2018-05-25 06:52:03 -04:00
nsICODecoder.cpp Bug 1489454 - Remove all trailing whitespaces (again) r=Ehsan 2018-09-07 14:47:51 +00:00
nsICODecoder.h Bug 523950 - Part 2. Expose image decoder type and SourceBuffer to owners. r=tnikkel 2018-02-28 13:34:52 -05:00
nsIconDecoder.cpp Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj 2018-06-01 10:45:27 +02:00
nsIconDecoder.h Bug 523950 - Part 2. Expose image decoder type and SourceBuffer to owners. r=tnikkel 2018-02-28 13:34:52 -05:00
nsJPEGDecoder.cpp Bug 1470447 - JPEG decoder should post an invalidation for each row. r=tnikkel 2018-07-11 11:44:17 -04:00
nsJPEGDecoder.h Bug 1470447 - JPEG decoder should post an invalidation for each row. r=tnikkel 2018-07-11 11:44:17 -04:00
nsPNGDecoder.cpp Bug 1337111 - Part 2. Add an image decoder flag to request complete frames. r=tnikkel 2018-09-17 15:06:28 -04:00
nsPNGDecoder.h Bug 523950 - Part 2. Expose image decoder type and SourceBuffer to owners. r=tnikkel 2018-02-28 13:34:52 -05:00
nsWebPDecoder.cpp Bug 1504448 - Fix buffering problems in WebPDecoder. r=tnikkel 2018-11-07 06:28:38 -05:00
nsWebPDecoder.h Bug 1504448 - Fix buffering problems in WebPDecoder. r=tnikkel 2018-11-07 06:28:38 -05:00