Opened 5 years ago

Last modified 19 months ago

#16650 needs_work enhancement

Integrate APNG into show and save methods

Reported by: gagern Owned by:
Priority: major Milestone: sage-6.4
Component: graphics Keywords: notebook, animate
Cc: niles Merged in:
Authors: Martin von Gagern Reviewers:
Report Upstream: N/A Work issues:
Branch: u/gagern/ticket/16650 (Commits) Commit: 6c6eee310cbf66cbb954f423eb4d14592ef6e1fc
Dependencies: #7298, #16571 Stopgaps:

Description

Once #16571 and #7298 get merged, it is time to add support for animapted PNGs (APNG) to the Animation.show() and Animation.save() methods, and also to update the doctests to use show(format="png") for these.

Change History (16)

comment:1 Changed 5 years ago by gagern

  • Status changed from new to needs_review

comment:2 Changed 5 years ago by gagern

  • Branch set to u/gagern/ticket/16650
  • Created changed from 07/12/14 18:32:18 to 07/12/14 18:32:18
  • Modified changed from 07/12/14 21:31:24 to 07/12/14 21:31:24

comment:3 Changed 5 years ago by gagern

  • Commit set to 83d734ce657f10bdc7472d88aa4ab2035a8e4c66

Only the last commit is really new. The merge before that did resolve a conflict, but in a pretty obvious way. Everything else is from the named dependencies.


Last 10 new commits:

e2d3e11Proper hyperlink formatting in animate documentation.
bd17f04Add APNG support.
a60fe0bTurn generator into list when rendering frames.
04665b0Fix frame size for standard example animation.
f4a2427Merge fix of standard example animation into APNG branch.
8af6a08Base Animation.show on Animation.save, and pass more arguments.
3beb8b1Create HTML to embed generated GIF in notebook.
c16f275Support HTML5 video tag.
effa6cfMerge branch ticket/7298 into ticket/16571 to create ticket/16650.
83d734cAdd support for APNG to Animation.save().

comment:4 Changed 5 years ago by vbraun_spam

  • Milestone changed from sage-6.3 to sage-6.4

comment:5 Changed 5 years ago by git

  • Commit changed from 83d734ce657f10bdc7472d88aa4ab2035a8e4c66 to 1e4de99ab3ab7f16cb4451015d3b975135ff81df

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

bc9f681Merge fix of standard example animation into APNG branch.
780e614Proper hyperlink formatting in animate documentation.
10f8e52Make number of frames available after rendering using generator.
941170bAdd APNG support.
3a99225Merge ticket/16645 into ticket/16571 to deal with conflict.
f0bfc49Allow embedding animations into tables.
2fb3d6aMark test saving GIF as optional.
f61d9d1Merge branch ticket/7298 into ticket/16571 to create ticket/16650.
1e4de99Add support for APNG to Animation.save().

comment:6 Changed 5 years ago by git

  • Commit changed from 1e4de99ab3ab7f16cb4451015d3b975135ff81df to f5fc85780877227c7c5abecec684f102595a5d33

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

e216b92Make number of frames available after rendering using generator.
b057e61Add APNG support.
f347d4cDoctests for each method of APngAssembler using tracing fixture.
7d2531dDetails on my APNG contribution in module documentation.
dc0067dBase Animation.show on Animation.save, and pass more arguments.
4e9101fCreate HTML to embed generated GIF in notebook.
e4807ccSupport HTML5 video tag.
2f6a670Allow embedding animations into tables.
d0e89d5Merge branch ticket/7298 into ticket/16571 to create ticket/16650.
f5fc857Add support for APNG to Animation.save().

comment:7 Changed 5 years ago by niles

  • Cc niles added

comment:8 Changed 5 years ago by gagern

  • Status changed from needs_review to needs_work

The recent changes from #17234 prevent our dependency #7298 from being merged, and at the moment I'm far from sure how to rebase that code, see comment:48:ticket:7298. Once I get that rebased, there is one question regarding this ticket here as well:

Should we reuse the PNG format description, or introduce a new one?

On the one hand, APNG (as opposed to MNG) is very much about graceful degradation, so it makes sense to treat it as PNG in most places. On the other hand, perhaps the display manager can decide whether a client is actually capable of displaying APNG or not. If so, we might prefer supported APNG over GIF, but GIF over unsupported APNG interpreted as still PNG. If the display manager does not know about APNG support, but does know that PNG is supported, then the user should at least be able to choose APNG format manually, even though it might not be the auto-selected default in that case.

comment:9 follow-up: Changed 5 years ago by vbraun

Do not reuse OutputImagePng, that is for non-animated png.

Another basic output format should be a sequence of PNG, which can easily be displayed in a web browser with javascript (embed images as necessary). Perhaps the easiest animation format.

comment:10 in reply to: ↑ 9 Changed 5 years ago by gagern

Replying to vbraun:

Another basic output format should be a sequence of PNG, which can easily be displayed in a web browser with javascript (embed images as necessary). Perhaps the easiest animation format.

I'm not sure how much such a format would suffer from HTTP overhead, particularly for a large number of small frames. I guess it depends on the network connection (for the cloud in particular) whether that factor outweights the overhead of concatenating all PNGs to a single APNG file.

But if you are willing to use custom JavaScript code for animations, you could also use existing code which provides APNG support on browsers which don't support it natively.

comment:11 Changed 5 years ago by vbraun

I'm thinking about base64-encoded inline images, especially since IPython doesn't allow you to return arbitrary collections of files. Though an apng polyfill would work, too.

comment:12 Changed 4 years ago by gagern

I intend not to work on this until #7298 gets reviewed and ready for merge.

comment:13 Changed 4 years ago by git

  • Commit changed from f5fc85780877227c7c5abecec684f102595a5d33 to de1dcbb0c93ab5364001b361d3616ed87a46a0da

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

a8d97b7Trac #7298: Enable HTML5 video in the Sage Notebook
f6e6412Trac #7298: Implement output types for various video container formats
ea5dfe2Trac #7298: Drop support for the autoplay and controls attributes for video
de1dcbbAdd support for APNG to Animation.save() and Animation.show(format="png").

comment:14 Changed 4 years ago by git

  • Commit changed from de1dcbb0c93ab5364001b361d3616ed87a46a0da to 6c6eee310cbf66cbb954f423eb4d14592ef6e1fc

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

6c6eee3Trac #16650: Add support for APNG to Animation.save() and Animation.show().

comment:15 Changed 4 years ago by gagern

  • Status changed from needs_work to needs_review

Since #7298 received a positive review just now, here is a rebased version of this modification here. With the new rich representations framework, there was a lot more to do than in the original commits. But it integrates APNG nicely with all the rest.

comment:16 Changed 19 months ago by chapoton

  • Status changed from needs_review to needs_work

does not apply

Note: See TracTickets for help on using tickets.