[FFmpeg-devel] [PATCH] avformat/apngdec: transmit all the chunks between consecutive fcTL ones.

James Almer jamrial at gmail.com
Mon Nov 24 17:54:26 CET 2014


On 24/11/14 12:12 PM, Benoit Fouet wrote:
> In order to support multiple IDAT of fdAT chunks following an fcTL one,
> transmit all the chunks between two fcTL ones (or between fcTL and IEND
> one).

Using one of the samples from https://people.mozilla.org/~dolske/apng/demo.html

$ ./ffmpeg -i chompy2.png chompy2.mp4 -loglevel debug

[...]

Input #0, apng, from 'chompy2.png':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: apng, rgba, 166x120, 14.58 fps, 10 tbr, 90k tbn, 90k tbc
Output #0, mp4, to 'chompy2.mp4':
  Metadata:
    encoder         : Lavf56.15.100
    Stream #0:0, 0, 1/10240: Video: mpeg4 ( [0][0][0] / 0x0020), yuv420p, 166x120, 1/10, q=2-31, 200 kb/s, 10 fps, 10240 tbn, 10 tbc
    Metadata:
      encoder         : Lavc56.13.100 mpeg4
Stream mapping:
  Stream #0:0 -> #0:0 (apng (native) -> mpeg4 (native))
Press [q] to stop, [?] for help
*** dropping frame 8 from stream 0 at ts 5
*** dropping frame 10 from stream 0 at ts 7
*** dropping frame 12 from stream 0 at ts 9
*** dropping frame 14 from stream 0 at ts 11
[output stream 0:0 @ 0000000000317a20] EOF on sink link output stream 0:0:default.
No more output streams to write to, finishing.
frame=   16 fps=0.0 q=2.3 Lsize=      64kB time=00:00:01.60 bitrate= 328.6kbits/s dup=0 drop=5
video:63kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.433775%
Input file #0 (chompy2.png):
  Input stream #0:0 (video): 21 packets read (288248 bytes); 21 frames decoded;
  Total: 21 packets (288248 bytes) demuxed
Output file #0 (chompy2.mp4):
  Output stream #0:0 (video): 16 frames encoded; 16 packets muxed (64794 bytes);
  Total: 16 packets (64794 bytes) muxed
23 frames successfully decoded, 0 decoding errors

I fixed this by using time_base instead of r_frame_rate in decode_fctl_chunk, but i'm not sure 
if that's correct either because it's changed after reading every frame, and in this one apng 
file the last frame has a different delay_den and delay_num values than in every previous frame.


More information about the ffmpeg-devel mailing list