Commit Graph

64 Commits

Author SHA1 Message Date
Ryan Hunt
f703c76ee2 Bug 1523969 part 10 - Move method definition inline comments to new line in 'image/'. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D21110
2019-02-25 16:07:58 -06:00
Sylvestre Ledru
e5a134f73a Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset
2018-11-30 11:46:48 +01:00
Andrew Osmond
283422a564 Bug 1501482. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D11897
2018-11-16 09:41:27 -05:00
Andrew Osmond
38813726fd 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
2018-11-01 19:26:14 -04:00
Andrew Osmond
ea3496614c Bug 1294490 - Part 3. Implement WebP decoder. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D8116
2018-10-31 15:01:08 -04:00
Andrew Osmond
5d780ad614 Bug 1465619 - Part 7. Add support for recycling to image::Decoder. r=tnikkel
The owner for the decoder may implement IDecoderFrameRecycler to allow
the decoder to request a recycled frame instead of allocating a new one.
If none are available, it will fallback to allocating a new frame.

Not only may the IDecoderFrameRecycler not have any frames available for
recycling, the recycled frame itself may still be in use by other
entities outside of imagelib. Additionally it may still be required by
BlendAnimationFilter to restore the previous frame's data. It may even
be the same frame as to restore. In the worst case, we will simply
choose to allocate an entirely new frame, just like before.

When we allocate a new frame, that means the old frame we tried to
recycle will be taken out of circulation and not reused again,
regardless of why it failed.

Differential Revision: https://phabricator.services.mozilla.com/D7512
2018-10-22 13:40:35 -04:00
Andrew Osmond
0066c1d8fb Bug 1337111 - Part 3. Land groundwork for new blended animation gtests. r=tnikkel 2018-09-17 15:06:29 -04:00
Coroiu Cristina
23659dbd32 Backed out 6 changesets (bug 1337111) for build bustages at builds/worker/workspace/build/src/image/SurfaceFilters.h on a CLOSED TREE
Backed out changeset ca0caa556dc9 (bug 1337111)
Backed out changeset d7d7fa868d0d (bug 1337111)
Backed out changeset 93e956e89a21 (bug 1337111)
Backed out changeset f36337c1309b (bug 1337111)
Backed out changeset 1b1e25b0b345 (bug 1337111)
Backed out changeset 3785cdebe6a3 (bug 1337111)
2018-09-17 20:42:30 +03:00
Andrew Osmond
8e220a9ff4 Bug 1337111 - Part 3. Land groundwork for new blended animation gtests. r=tnikkel 2018-09-17 13:21:38 -04:00
Emilio Cobos Álvarez
6100dee429 Bug 1466168: Remove mozilla::Forward in favor of std::forward. r=froydnj
Same approach as the other bug, mostly replacing automatically by removing
'using mozilla::Forward;' and then:

  s/mozilla::Forward/std::forward/
  s/Forward</std::forward</

The only file that required manual fixup was TestTreeTraversal.cpp, which had
a class called TestNodeForward with template parameters :)

MozReview-Commit-ID: A88qFG5AccP
2018-06-02 09:33:26 +02:00
Andrew Osmond
9ded73a5b4 Bug 1442037 - Fix an incorrect assert in DecoderFactory::CloneAnimationDecoder. r=tnikkel
When cloning an animated image decoder, we asserted that
Decoder::HasAnimation was true. This is incorrect because if the decoder
has yet to complete the metadata decoding, or it has but only finds out
the image is animated when it discovers the second frame, then we will
try to clone a valid animated image decoder, but fail the assertion.
Instead, this patch verifies the image type supports animations.
2018-03-01 19:38:58 -05:00
Andrew Osmond
7952dfe242 Bug 523950 - Part 6. Add DecoderFactory::CloneAnimationDecoder to clone an existing image decoder. r=tnikkel
Used later in the patch series, this API allows one to get an identical
decoder to the one given, but decodes from the beginning.
2018-02-28 13:34:52 -05:00
Andrew Osmond
d78c35476d Bug 523950 - Part 5. Pass the currently displayed frame of an animation to its decoder. r=tnikkel
When we need to recreate an animated image decoder because it was
discarded, the animation may have progressed beyond the first frame.
Given that later in the patch series we need FrameAnimator to be driving
the decoding more actively, it simplifies its role by making it assume
the initial state of the decoder matches its initial state. Passing in
the currently displayed frame allows the decoder to advance its frame
buffer (and potentially discard unnecessary frames), such that when the
animation actually wants to advance as it normally would, the decoder
state matches what it would have been if it had never been discarded.
2018-02-28 13:34:52 -05:00
Andrew Osmond
a2da8f23eb Bug 1389988 - Handle a data race between a new sync decode request and a pending decoder. r=tnikkel
If there is an active provider which has yet to produce a frame, any
calls to SurfaceCache::Lookup will return MatchType::PENDING. If
RasterImage::Lookup gets the above result while given FLAG_SYNC_DECODE,
it will attempt to start a new decoder. It is entirely possible that
when we try to insert the new provider into the SurfaceCache, it cannot
because the original provider finally did produce something. In that
case we should abandon attempting to redecode and retry our lookup.
2018-02-09 08:51:28 -05:00
Jonathan Watt
75b61adca2 Bug 1417021 - Fix various non-unified build errors in imagelib. r=aosmond 2017-10-24 23:22:55 +01:00
Gerald Squelart
b4647eb598 Bug 1410252 - Convert 'WrapNotNull(new T(...' to 'MakeNotNull<T*>(...' - r=njn
Most cases where the pointer is stored into an already-declared variable can
trivially be changed to MakeNotNull<T*>, as the NotNull raw pointer will end
up in a smart pointer.

In RAII cases, the target type can be specified (e.g.:
`MakeNotNull<RefPtr<imgFrame>>)`), in which case the variable type may just be
`auto`, similar to the common use of MakeUnique.
Except when the target type is a base pointer, in which case it must be
specified in the declaration.

MozReview-Commit-ID: BYaSsvMhiDi
2017-10-20 18:25:33 +11:00
Andrew Osmond
c16ea30b46 Bug 1370412 - Part 8a. Add "substitutable" flag to ISurfaceProvider state to indicate when the caller won't accept substitutes. r=tnikkel
When SurfaceCache::Lookup is called to access surface data, it indicates
that the caller will not accept substitutes as in the case of
SurfaceCache::LookupBestMatch. As such, we need to be careful not to
remove those surfaces from our cache when pruning (in part 8b). This is
the marker used to track that, at some point, there was a caller which
got this surface that would accept no other (e.g. factor of 2 mode must
make an accept for this particular surface).
2017-09-05 07:58:45 -04:00
Andrew Osmond
5cd0c28d91 Bug 1315554 - Part 8. Allow DecoderFactory::CreateDecoderForICOResource to create metadata decoders. r=tnikkel 2017-07-22 07:50:32 -04:00
Andrew Osmond
d72ae32db1 Bug 1315554 - Part 6. Reuse the same SourceBuffer when decoding a resource within an ICO. r=tnikkel 2017-07-22 07:50:31 -04:00
Andrew Osmond
db6e1e8dfa Bug 1315554 - Part 1. Enforce the parent decoder size (ICO) for child decoders (BMP, PNG). r=tnikkel 2017-07-22 07:50:31 -04:00
Sebastian Hengst
1b9afeceb6 Backed out changeset fd310390a64a (bug 1315554) for failing GTest's ImageDecoders.LargeICOWithPNGSingleChunk on OS X opt. r=backout 2017-07-22 11:05:35 +02:00
Sebastian Hengst
486cc7cb00 Backed out changeset e39309b6fe7f (bug 1315554) 2017-07-22 11:04:02 +02:00
Sebastian Hengst
cb2086f0e6 Backed out changeset d46b7e02802c (bug 1315554) 2017-07-22 11:03:52 +02:00
Andrew Osmond
b7a5343164 Bug 1315554 - Part 8. Allow DecoderFactory::CreateDecoderForICOResource to create metadata decoders. r=tnikkel 2017-07-22 00:14:59 -04:00
Andrew Osmond
1359a001f0 Bug 1315554 - Part 6. Reuse the same SourceBuffer when decoding a resource within an ICO. r=tnikkel 2017-07-22 00:14:59 -04:00
Andrew Osmond
e5d030062e Bug 1315554 - Part 1. Enforce the parent decoder size (ICO) for child decoders (BMP, PNG). r=tnikkel 2017-07-22 00:14:58 -04:00
Andrew Osmond
21758b6755 Bug 1339202 - Decode images to shared surfaces for WebRender. r=tnikkel 2017-02-08 15:48:59 -05:00
Sebastian Hengst
4c2306faba Backed out changeset 45dd83a63162 (bug 1339202) for crashing in image processing related tests, e.g. xpcshell test test_imgtools.js. r=backout 2017-02-13 22:34:54 +01:00
Andrew Osmond
c03ed5beaf Bug 1339202 - Decode images to shared surfaces for WebRender. r=tnikkel 2017-02-08 15:48:59 -05:00
Ehsan Akhgari
5a0aa00c2b Bug 1311246 - Remove support for the -moz-samplesize media fragment; r=jrmuizel
This removes the feature added in bug 854795 for Tarako b2g devices.
2016-11-16 08:18:56 -05:00
Seth Fowler
264b7e19c3 Bug 1296828 (Part 3) - Update SurfaceCache API to rely on ImageKeys and SurfaceKeys stored on ISurfaceProviders. r=dholbert 2016-08-26 17:03:19 -07:00
Seth Fowler
dbc467745f Bug 1296828 (Part 2) - Store ImageKeys and SurfaceKeys directly on ISurfaceProviders. r=dholbert,edwin 2016-08-26 17:03:17 -07:00
Seth Fowler
ed50277add Bug 1293472 (Part 3) - Store animated images in the surface cache as a sequence of frames, rather than each frame getting its own cache entry. r=dholbert,edwin,njn 2016-08-18 15:42:48 -07:00
Marcos Caceres
1641e52c61 Bug 1160200 - APNG can't be used with type switching. r=mcaceres, r=jrmuizel, r=johns 2016-08-09 22:15:00 +02:00
Seth Fowler
cb009c3612 Bug 1291045 (Part 7) - Replace DecodingTask with DecodedSurfaceProvider. r=dholbert,edwin 2016-08-05 18:46:24 -07:00
Seth Fowler
2c64c4a4f9 Bug 1291045 (Part 3) - Handle interactions with the SurfaceCache in DecodingTask. r=dholbert,edwin 2016-08-05 18:46:13 -07:00
Seth Fowler
77d123ca25 Bug 1291045 (Part 1) - Use a different IDecodingTask for animated images. r=dholbert,edwin 2016-08-05 18:46:10 -07:00
Seth Fowler
be3801b269 Bug 1292505 (Followup) - Add an assert that we don't create a decoder for an ICO resource during a metadata decode. r=me 2016-08-05 15:04:20 -07:00
Seth Fowler
414d097f49 Bug 1292505 (Part 1b) - Update DecoderFactory to use SetOutputSize(), and propagate the changes to RasterImage. r=edwin 2016-08-05 13:44:46 -07:00
Seth Fowler
2ba15e348c Bug 1285867 (Part 1) - Remove Decoder's notion of decoder errors. r=edwin 2016-07-15 16:41:11 -07:00
Seth Fowler
28cdad949d Bug 1185799 (Part 1) - Use DecoderFactory to construct nsICODecoder's contained decoder. r=edwin 2016-07-07 15:50:44 -07:00
Seth Fowler
1f9b35837b Bug 1282354 - Move code for SurfaceCache placeholder insertion from RasterImage to DecoderFactory. r=dholbert 2016-07-02 18:47:49 -06:00
Daniel Holbert
d5653afeea Bug 1282670, part 2: Remove unnecessary/redundant string-related #include & "using" declarations in imagelib. r=seth
MozReview-Commit-ID: 1hgnUosiOFU
2016-06-30 10:25:35 -07:00
Seth Fowler
6a066f954f Bug 1282352 - Make DecoderFactory use NotNull where possible. r=edwin 2016-06-29 18:33:22 -07:00
Seth Fowler
a8b8626747 Bug 1282275 - Return IDecodingTask objects instead of Decoder objects from most DecoderFactory functions. r=dholbert 2016-06-29 18:33:18 -07:00
Seth Fowler
769e308f2f Bug 1207830 (Part 1) - Make it possible to create an anonymous decoder that downscales. r=njn 2016-05-27 12:59:19 -07:00
Carsten "Tomcat" Book
1a2dcc1022 Backed out changeset 1bc7102718a9 (bug 1207830) for test failures in ImageDecoders.JPGDownscaleDuringDecode 2016-05-27 09:05:25 +02:00
Seth Fowler
64222939b0 Bug 1207830 (Part 1) - Make it possible to create an anonymous decoder that downscales. r=njn 2016-05-26 22:57:09 -07:00
Sebastian Hengst
d31962bf62 Backed out changeset 68442febc36c (bug 1160200) for almost permafailing added test apng-mime/test.html Android 4.3 API15+ opt. r=backout 2016-04-23 22:33:26 +02:00
David Newton
dd3d2b8a48 Bug 1160200 - APNG can't be used with type switching. r=mcaceres,r=jrmuizel 2016-04-20 23:57:00 +02:00