Project: chromium Issues People Development process History Sign in
New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Issue 437662 Support for Animated PNG
Starred by 878 users Reported by maxste...@gmail.com, Nov 30 2014 Back to list
Status: Assigned
Merged: issue 1171
Owner:
Cc:
Components:
NextAction: ----
OS: ----
Pri: 2
Type: Launch-OWP
Launch-Accessibility: ----
Launch-Legal: ----
Launch-M-Approved: ----
Launch-M-Target: ----
Launch-Privacy: ----
Launch-Security: ----
Launch-Status: ----
Launch-Test: ----
Launch-UI: ----


Sign in to add a comment
Change description:
Implement APNG (Animated PNG) support

Changes to API surface:

Links:
Spec: http://wiki.mozilla.org/APNG_Specification
CrBug feature request (lots of stars): http://crbug.com/1171
APNG Test Suite: http://littlesvr.ca/apng/test.html
More tests: http://philip.html5.org/tests/apng/tests.html

Support in other browsers:
Internet Explorer: No
Firefox: Yes
Safari: Yes

http://caniuse.com/apng
 
Comment 1 by tkent@chromium.org, Apr 13 2015
Mergedinto: 1171
Status: Duplicate
Not really a duplicate of 1171, which was "request for enhancement".

This one is OWP launch tracking bug.

Blink CL:
https://codereview.chromium.org/1250373006/
Comment 3 by tkent@chromium.org, Aug 28 2015
Labels: Cr-Blink-Image
Mergedinto:
Status: Untriaged
Comment 5 by ebrami...@gmail.com, Nov 17 2015
Do you it would be good idea to mark this as "No active development" on https://www.chromestatus.com/feature/6691520493125632 or is there any serious attempt to do this finnaly?
Comment 6 Deleted
Comment 7 by maxste...@gmail.com, Nov 17 2015
To me, "no active development" kinda implies "I give up" which isn't the case at all.

At this point I'm waiting for the Blink team and the Owners to make a decision.
(to clarify: I'm outside contributor, not a googler)

The code is fully functional, that's why you don't see any recent updates. I might update it a little to deal with accumulated bitrot from time to time, but that's it.


There is an "Intent to Implement: Animated PNG" discussion on blink-dev with some additional details on what's going on here.
Comment 8 by ebrami...@gmail.com, Nov 17 2015
Oh, right, sorry then.
Comment 9 Deleted
Fixed incorrect decoding of ICO files containing PNG data.

new CL: https://codereview.chromium.org/1567053002/
Some "unsigned" -> "size_t" changes, no big deal.

CL is the same.
Issue 580778 has been merged into this issue.
Comment 13 by hora...@gmail.com, Jan 26 2016
I don't know, but given the revival of the GIF format and animations suddenly appearing everywhere from major news sites to blogs and social networks and so on, I'd think that this feature is a big deal. 

If I were part of the Chromium/Blink upper echelon, I'd want to roll this out as soon as possible or feasible, with all the fanfare.

Make some splash, let them know who supported this first, real money says this could be the next game changer.

At least send a link to this issue to some friends, colleagues and so on, this needs more stars ;-)
Comment 14 by yanp...@gmail.com, Jan 26 2016
I guess this feature is not yet implemented because google wants to force everyone to use google's own standards, like Microsoft. Something like GoogIF. For example google offers to save password on sites which asks browser not to do it. 
#14, most GIFs you see on popular sites (such as imgur, gfycat and 9gag) are actually WebMs. That said, Chrome does already support animated WebP: https://www.chromestatus.com/feature/4785074604081152
Imgur only converts long GIFs into video. Short ones are still GIFs. For example:
http://imgur.com/gallery/5imcO

Google is another somewhat popular site with GIFs on the front page ;)
http://www.google.com/logos/doodles/2016/new-years-day-2016-5637619880820736-hp2x.gif


Comment 17 by hora...@gmail.com, Jan 28 2016
#15, case in point: WebM videos, looped and without sound, just an ugly workaround for better animations.

It can't be more obvious that the demand exists. Sites like gfycat are the living proof.

Animated WebP, APNG/MNG, whatever..

They all beat GIF. We will see what gets adopted first.
Comment 18 Deleted
Chrome Android does not allow autoplay for vidoe tags, so all videos converted from gif can not behave like original gif.
in my Opinion APNG is the best GIF Alternative since it offers everything PNGs do, partial transparency, losslessness while giving it animation.
teamhydr, Fully agree with you. It's smart and easy tool for do Alpha-Animated effects on web. And I'm in sorrow that Chrome still not support it.
Guys, just let's do it!

Is it Microsoft Edge will make support of APNG before the Google Chrome team? :)
Please, dont do vendor formats war!
Just allow us, web developers, do good things.
Updated due to recent changes in original PNGImageDecoder.

Same CL: https://codereview.chromium.org/1567053002/
Mergedinto: 1171
Status: Duplicate
Status: Available
Owner: chrishtr@chromium.org
Assigning to myself to pass on to actual implementors.
Status: Assigned
Owner: dk...@chromium.org
Owner: hcm@chromium.org
Status: Duplicate
Why was this deduped from the original APNG support issue?  Let's just have one tracking bug.
First, this one is created as Launch-OWP bug, to track the actual implementation.
(as described in http://www.chromium.org/blink#launch-process instructions)

Second, 1171 was closed for comments many years ago.
Updated due to recent Blink Reformat.

http://i.imgur.com/V76YFw8.png
Status: Assigned
Cc: hcm@chromium.org cblume@chromium.org scroggo@chromium.org msarett@chromium.org
Issue 1171 has been merged into this issue.
Made this one the true bug, because it does have the launch tracking and that's justified in this case (I think).
So I just find out there is another implementation work is going on... Posting the link here,

https://codereview.chromium.org/2386453003/ 

I guess I can stop keeping my implementation up-to-date now, but it's still there:

https://codereview.chromium.org/1567053002/

Not sure about the need to do the same work twice, but OK.
Project Member Comment 36 by bugdroid1@chromium.org, Dec 5
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/378e8f3d4729d64eacd3ea24bd05f4d1e11502f6

commit 378e8f3d4729d64eacd3ea24bd05f4d1e11502f6
Author: joostouwerling <joostouwerling@google.com>
Date: Mon Dec 05 22:50:37 2016

Add a basic test suite for PNGImageDecoder.

Add the following tests for PNGImageDecoder:
- Verify that the repetition count is cAnimationNone.
- Verify that the image size is decoded correctly.
- Verify that the decoded frame count is 1, and that the frame duration
  is 0.
- Verify that progressively providing the image data yields the same
  frame buffer hashes as when the data is provided in a truncated form.
- Verify that progressive decoding can completely decode the image when
  at first half of the image data is provided and the image is partially
  decoded, and then the rest of the image data is provided. It verifies
  that the content of the intermediate and final frame are different.
- Verify that the decoder is invalidated when invalid image data is
  provided.
- Verify that frameIsCompleteAtIndex() returns true if and only if the
  frame is completely decoded. Fully receiving the image data is not
  enough to be considered complete for static PNGs.

The image that is being tested is a simple 111 by 29 pixels image
created by myself.

As an additional note here - some of these tests are a little awkward when this
CL is viewed in isolation, with e.g. separate functions for tests which allow
more configuration than necessary. This is done so they can be reused for APNG
tests, which is currently in development in crrev.com/2386453003.

BUG=437662

Review-Url: https://codereview.chromium.org/2548863002
Cr-Commit-Position: refs/heads/master@{#436435}

[add] https://crrev.com/378e8f3d4729d64eacd3ea24bd05f4d1e11502f6/third_party/WebKit/LayoutTests/images/resources/png-simple.png
[modify] https://crrev.com/378e8f3d4729d64eacd3ea24bd05f4d1e11502f6/third_party/WebKit/Source/platform/BUILD.gn
[add] https://crrev.com/378e8f3d4729d64eacd3ea24bd05f4d1e11502f6/third_party/WebKit/Source/platform/image-decoders/png/PNGImageDecoderTest.cpp

Please provide the following information, so that chrome test engineering team can proceed with testing.

1. Is the feature code complete & enabled in the trunk and ready for testing?
2. Does this require manual testing?
3. Any specific setup / flags required?
4. Do we have enough UMA coverage to measure the stability? Its highly recommend always adding Stability.Counts and CrashExitCodes.* to your json to measure stability of your experiment.

Cc: joostouwerling@google.com
Just realized Joost wasn't on this.. will start some answers:
1. code complete, not yet committed as we are trying to verify we have the right test plan in place
2. yes? seems we should have a minimal set of tests to verify animated content correctness
3. no
4. ?
Cc: gov...@chromium.org
There are discussions ongoing to finalize whether this will be integrated as-is directly or enabled with an accept header value. The feature code itself is not changing though, and we are losing the main developer on it end of week, any possibility we could integrate to a branch or another method of getting some early testing?
Project Member Comment 40 by bugdroid1@chromium.org, Jan 5
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1cc893851ef9ad007f4fb1eaabf58870fc634e81

commit 1cc893851ef9ad007f4fb1eaabf58870fc634e81
Author: scroggo <scroggo@chromium.org>
Date: Thu Jan 05 15:52:12 2017

Add fuzzer for (A)PNG decoder

Implement a fuzzer for the PNG decoder. It uses three animated png images
created by joostouwerling@google.com and three existing static PNG images
in WebKits LayoutTest resources as a seed corpus.

It works for both the current PNGImageDecoder, which only supports
decoding static PNGs, and the new PNGImageDecoder which also supports
decoding animated PNGs. This is achieved by having both static and
animated PNG images in the seed corpus.

BUG=437662

Review-Url: https://codereview.chromium.org/2603303003
Cr-Commit-Position: refs/heads/master@{#441661}

[add] https://crrev.com/1cc893851ef9ad007f4fb1eaabf58870fc634e81/third_party/WebKit/LayoutTests/images/resources/pngfuzz/border-image.png
[add] https://crrev.com/1cc893851ef9ad007f4fb1eaabf58870fc634e81/third_party/WebKit/LayoutTests/images/resources/pngfuzz/oval.png
[add] https://crrev.com/1cc893851ef9ad007f4fb1eaabf58870fc634e81/third_party/WebKit/LayoutTests/images/resources/pngfuzz/png-animated-idat-not-part-of-animation.png
[add] https://crrev.com/1cc893851ef9ad007f4fb1eaabf58870fc634e81/third_party/WebKit/LayoutTests/images/resources/pngfuzz/png-animated-idat-part-of-animation.png
[add] https://crrev.com/1cc893851ef9ad007f4fb1eaabf58870fc634e81/third_party/WebKit/LayoutTests/images/resources/pngfuzz/png-animated-three-independent-frames.png
[add] https://crrev.com/1cc893851ef9ad007f4fb1eaabf58870fc634e81/third_party/WebKit/LayoutTests/images/resources/pngfuzz/png-simple.png
[modify] https://crrev.com/1cc893851ef9ad007f4fb1eaabf58870fc634e81/third_party/WebKit/Source/platform/BUILD.gn
[add] https://crrev.com/1cc893851ef9ad007f4fb1eaabf58870fc634e81/third_party/WebKit/Source/platform/PngFuzzer.cpp

Sign in to add a comment