New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 838 users

Comments by non-members will not trigger notification emails to users who starred this issue.
Status: Fixed
Merged: issue 1171
Owner:
Closed: Apr 2017
Cc:
Components:
EstimatedDays: ----
NextAction: 2017-03-02
OS: Linux, Android, Windows, Chrome, Mac
Pri: 2
Type: Launch-OWP
Launch-Accessibility: NA
Launch-Legal: Yes
Launch-M-Approved: ----
Launch-M-Target: 59-Dev, 59-Beta, 59-Stable-Exp, 59-Stable
Launch-Privacy: NA
Launch-Security: Yes
Launch-Status: Review-Requested
Launch-Test: ----
Launch-UI: NA
Product-Review: ----

Blocked on:
issue 698487
issue 698490
issue 700892
issue 706679
issue 707073

Blocking:
issue 698808
issue 699675
issue 704425
issue 707356


Participants' hotlists:
test

Show other hotlists

Other hotlists containing this issue:
Top-Starred-Bugs


Sign in to add a comment
Support for Animated PNG
Reported by maxste...@gmail.com, Nov 30 2014 Back to list
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
Comment 24 by tkent@chromium.org, Jul 20 2016
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
Comment 29 by hcm@chromium.org, Jul 21 2016
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 2016
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.

Comment 38 by hcm@chromium.org, Dec 13 2016
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. ?
Comment 39 by hcm@chromium.org, Dec 14 2016
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 2017
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

Comment 41 by hcm@chromium.org, Jan 17 2017
Cc: -joostouwerling@google.com
Labels: Launch-Status-Review-Requested
Comment 42 by hcm@chromium.org, Jan 17 2017
Main (updated) CL with implementation: https://codereview.chromium.org/2618633004/
Cc: mbarbe...@chromium.org
Labels: Launch-Security-Started
From a security perspective, the main thing I'd want to see is a fuzzer, and we got that in #40 from scroggo. Thanks, scroggo! +mbarbella: LGTY?
Just don't forget to fix that one bug caught by the fuzzer.

Labels: -Launch-Security-Started Launch-Security-Yes
LGTM overall. It's probably also worth taking a look at the coverage report from https://cluster-fuzz.appspot.com/coverage_report/fuzzer/libfuzzer_blink_png_decoder_fuzzer/2017-01-16 to see if there are other potential candidates for files to add to the corpus.

At a glance the numbers look a little low to me, but we tend to link a bit too much into these binaries because of the sanitizer instrumentation. Still, there should be some room for improvement.
hcm@: Just wondering, do we have any high level test plan exists for this feature? so that test engineering team would be able to review this.

Thank you!
Comment 47 by hcm@chromium.org, Jan 23 2017
We are primarily leaning on automated testing, but there is a request to manually execute this test: http://littlesvr.ca/apng/test.html
Cc: rbyers@chromium.org
Labels: M-58
NextAction: 2017-03-02
Note this is currently the #4 topped starred Blink bug.

From offline conversation I understand the implementation is pretty good shape (https://codereview.chromium.org/2618633004) with some minor details still being ironed out before an intent-to-ship thread.

hcm/scroggo does it seem like M58 (3/2 branch) is a possible launch milestone worth targetting (with the understanding of course that there's always unexpected delays, especially when changing API surface area like this)?  Setting labels for that, but feel free to update.

Comment 49 by hcm@chromium.org, Jan 24 2017
Labels: Launch-M-Target-58-Dev
Yes, we're targeting M58.
Cc: a...@chromium.org
+ajha, who is already looking into this feature testing.
Please apply appropriate OS labels. Thank you.
Comment 52 by hcm@chromium.org, Feb 6 2017
Labels: OS-Android OS-Chrome OS-Linux OS-Mac OS-Windows
Cc: candr...@chromium.org
candrada@ for test planning on Android.
Comment 54 Deleted
Labels: Launch-Legal-Yes
Project Member Comment 56 by bugdroid1@chromium.org, Feb 9 2017
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9f178059a3f0fd6f7a151bfe129a697ceaf0b150

commit 9f178059a3f0fd6f7a151bfe129a697ceaf0b150
Author: mmoroz <mmoroz@chromium.org>
Date: Thu Feb 09 14:29:11 2017

Add more as seed corpus for blink_png_decoder_fuzzer.

Add corpus //WebKit/LayoutTests/images/png-suite/samples and
//cc/test/data

R=noel@chromium.org, scroggo@chromium.org
BUG= 437662 ,678181

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

[modify] https://crrev.com/9f178059a3f0fd6f7a151bfe129a697ceaf0b150/third_party/WebKit/Source/platform/BUILD.gn

I just created APNG animation with google logo (ajax loader). This looks cool for Google Pages.

Please check file attachments
google_ajax_loader.png
37.1 KB View Download
google_ajax_loader_16_16.png
37.1 KB View Download
Comment 58 by a...@chromium.org, Feb 23 2017
Just to update, tested this on Windows-10, latest canary(58.0.3021.0) as per http://littlesvr.ca/apng/test.html. Attached is the screen-cast of the behavior observed with 'Test page with APNG set' and 'Reference page with static PNG files'.

Looks like implementation CL: https://codereview.chromium.org/2618633004/ is still not committed in canary as I am not seeing any animation on 'test1.html' from http://littlesvr.ca/apng/test.html.

hcm@/scroggo@/mmoroz@: Could you please confirm if anything being missed here or this is still in line for M-58(branch 03/02).

Thank you! 
Comment 59 by hcm@chromium.org, Feb 23 2017
Labels: -Launch-M-Target-58-Dev Launch-M-Target-59-Dev
Due to delays in launch process and latest feedback/tweaks being made on the CL, I think we are forced to retarget to 59.  We will work to get this in asap after branch for maximum test time and assurance we get it in the next milestone.
Comment 60 by acte...@gmail.com, Feb 23 2017
What? Please, add APNG support for 58 dev version. 
Comment 61 by hcm@chromium.org, Feb 28 2017
Labels: -Type-Launch-OWP Launch-M-Target-59-Beta Launch-M-Target-59-Stable-Exp Launch-M-Target-59-Stable Launch-Privacy-NA Type-Launch
Comment 62 by hcm@chromium.org, Feb 28 2017
Labels: Launch-Accessibility-NA Launch-UI-NA
Blocking: 698808
govind@, do we need anything here to flip the Launch-Test bit?
Cc: manoranj...@chromium.org
+ manoranjanr@, could you please check testing status on Desktop with ajha@.

candrada@, is testing on Android completed?


The actual CL (https://codereview.chromium.org/2618633004/) yet to be landed in trunk.

hcm@/noel@, do we have any ETA?

Thank you!
Cc: noel@chromium.org
We haven't completed testing.  We are planning to test on Android in M59 since it's been moved.
Blocking: 699675
Comment 70 by noel@chromium.org, Mar 9 2017
#66 Nope.
Blocking: 700892
Blockedon: 698487
Any reason why this issue is under Restrict-View-Google label?

Comment 74 by noel@chromium.org, Mar 15 2017
Blockedon: 698490
> Any reason why this issue is under Restrict-View-Google label?

The comments don't show where the label got added (should they?), and it presumably didn't start that way (since maxstepin@gmail reported the bug). I looked through the dupes and blocks, and none of them are Restrict-View-Google.
Happened fairly recently, around Feb 28/March 1. Probably by accident, other labels have been changed around that time (mostly from 58 to 59).
Normally, yes, comments should show where the RestrictViewGoogle was added.

If you hover the "Restrict View Google" label, it's marked "Derived". My *guess* is that this restriction occurred because in Comment #61, Type went from Type-Launch-OWP to Type-Launch, which results in the view restriction being derived.
Labels: -Type-Launch Type-Launch-OWP
Type=Launch bugs are intended for internal Google tracking only and so are always RVG, so this was probably an unintended side-effect of the label change in #61.  Since this is a web exposed change developers care about, we should probably be using Launch-OWP instead (or filing a separate Type=Launch bug for the bookkeeping if necessary).
Comment 79 by noel@chromium.org, Mar 23 2017
Blockedon: 704425
Comment 80 by noel@chromium.org, Mar 30 2017
Blockedon: 707073
Comment 81 by noel@chromium.org, Mar 31 2017
Blockedon: 706679
Comment 82 by noel@chromium.org, Mar 31 2017
Blocking: -700892
Comment 83 by noel@chromium.org, Mar 31 2017
Blockedon: 700892
Blocking: 707356
Comment 85 by noel@chromium.org, Apr 1 2017
Blocking: 704425
Comment 86 by noel@chromium.org, Apr 1 2017
Blockedon: -704425
Comment 87 Deleted
Project Member Comment 88 by bugdroid1@chromium.org, Apr 12 2017
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/08f24841310c677a67f79f89253d971820069da4

commit 08f24841310c677a67f79f89253d971820069da4
Author: scroggo <scroggo@chromium.org>
Date: Wed Apr 12 15:43:08 2017

Add a web platform test for APNG

While animated-png.html uses internals for selecting frames and
verifying that we decode APNGs properly, this test confirms that a
basic animation will work correctly, and can work in other browsers.

- apng.png
A simple APNG with two frames. The first frame is red, and displays
for as short a time as possible (11 ms; anything less than that and
Chromium increases the time), followed by a green frame. The image
does not loop. The green frame matches green.png, which already
exists

- animated-png-timeout-ref.html
Reference page showing the existing image (green.png).

BUG= 437662 

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

[add] https://crrev.com/08f24841310c677a67f79f89253d971820069da4/third_party/WebKit/LayoutTests/external/wpt/apng/animated-png-timeout-ref.html
[add] https://crrev.com/08f24841310c677a67f79f89253d971820069da4/third_party/WebKit/LayoutTests/external/wpt/apng/animated-png-timeout.html
[add] https://crrev.com/08f24841310c677a67f79f89253d971820069da4/third_party/WebKit/LayoutTests/external/wpt/images/apng.png

Comment 89 by a...@chromium.org, Apr 21 2017
Just to update, 

Tested this as per C#47 on the latest Dev(59.0.3071.15) on Windows-10, Mac OS 10.12.3 and Linux Ubuntu 14.04 & on the latest available M-59 on Chrome OS- Daisy on 59.0.3071.8/9460.4.0.

This is working as intended and test URL http://littlesvr.ca/apng/test.html works as expected. http://littlesvr.ca/apng/test1.html shows the APNG support and is same as reference page: http://littlesvr.ca/apng/test1-ref.html(screenshot attached).

Thank you! 
437662.png
106 KB View Download
Comment 91 Deleted
The email tells you why at the bottom and how to stop doing so.
I've been getting these emails for years and cannot get them to stop lol
Comment 94 by ebra...@gnu.org, Apr 26 2017
Status: Fixed
Does this mean that Chrome will now have full apng support without extensions?
Yes, Chrome 59 animates animated PNGs without requiring any sort of browser extensions.
We did it everyone 

So do you wanna hang out or something
Comment 98 Deleted
Comment 99 by m.go...@gmail.com, Apr 27 2017
Re comment #98:
I don't have any of these problems on a Mac on Chrome Canary 60.0.3082.0. You have an older version, maybe that's why.
Comment 100 by tjb0...@gmail.com, Apr 27 2017
Re comment #99:
Good point - I had wrongly assumed that the chromium-dev AUR package would fetch the latest version automatically, rather than a static version number. If I don't add another comment later, it's safe to assume that everything's working as intended.
I have tested this feature on latest M59 - 59.0.3071.29 , on the below android devices

Samsung Galaxy Tab 4 (SM-T530NU) / LRX22G - working fine , http://littlesvr.ca/apng/test1.html shows the APNG support and is same as reference page: http://littlesvr.ca/apng/test1-ref.html

Moto Z play XT1653 / MPNS24 - working fine as expected , but on the below devices we don't see expected behaviour.

Gioness S6S / MRA58K
Samsung Galaxy S6 Edge plus (SM-G935F) / MMB29K
Nexus 5X / N
Samsung Galaxy On Nxt (SM-G610F) / MMB29K



Sign in to add a comment