[FFmpeg-trac] #11012(avformat:new): APNG decoder incorrectly assumes fcTL chunk must be immediately followed by fdAT or IDAT
FFmpeg
trac at avcodec.org
Mon May 13 00:10:49 EEST 2024
#11012: APNG decoder incorrectly assumes fcTL chunk must be immediately followed by
fdAT or IDAT
----------------------------------+---------------------------------------
Reporter: tobbez | Type: defect
Status: new | Priority: normal
Component: avformat | Version: unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
----------------------------------+---------------------------------------
The APNG decoder (more specifically `apng_read_packet` in
libavformat/apngdec.c) incorrectly assumes an `fcTL` chunk must be
''immediately'' followed by either an `fdAT` or an `IDAT` chunk.
In addition, when the `fdAT`/`IDAT` check fails, the input stream is not
rewinded to the start of the chunk that follows the `fcTL` chunk, causing
misleading log messages: "tag=ware (0x65726177) len=1399809652" in the
output below ought to be "tag=tEXt (0x74584574) len=16".
An example file can be created using exiftool on an existing APNG file
(`exiftool -Software=example apng.png`). This produces a file where the
first `fcTL` chunk is followed by a `tEXt` chunk. Such an example will be
attached.
How to reproduce:
{{{
% ffmpeg -i example.png -f null /dev/null
ffmpeg version N-115183-g02c032abcd Copyright (c) 2000-2024 the FFmpeg
developers
built with gcc 13 (13.2.1_p20240503 p15)
configuration:
libavutil 59. 17.100 / 59. 17.100
libavcodec 61. 5.103 / 61. 5.103
libavformat 61. 3.103 / 61. 3.103
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.101 / 10. 2.101
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
[apng @ 0x55841a01a7c0] Could not find codec parameters for stream 0
(Video: apng, none, 64x64): unspecified pixel format
Consider increasing the value for the 'analyzeduration' (0) and
'probesize' (5000000) options
Input #0, apng, from 'example.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: apng, none, 64x64, 100k tbr, 100k tbn
Stream mapping:
Stream #0:0 -> #0:0 (apng (native) -> wrapped_avframe (native))
Press [q] to stop, [?] for help
[apng @ 0x55841a01a7c0] In-stream tag=ware (0x65726177) len=1399809652 is
not implemented. Update your FFmpeg version to the newest one from Git. If
the problem still occurs, it means that your file has a feature which has
not been implemented.
[apng @ 0x55841a01a7c0] If you want to help, upload a sample of this file
to https://streams.videolan.org/upload/ and contact the ffmpeg-devel
mailing list. (ffmpeg-devel at ffmpeg.org)
[in#0/apng @ 0x55841a01a500] Error during demuxing: Not yet implemented in
FFmpeg, patches welcome
Cannot determine format of input 0:0 after EOF
[vf#0:0 @ 0x55841a01cb80] Task finished with error code: -1094995529
(Invalid data found when processing input)
[vf#0:0 @ 0x55841a01cb80] Terminating thread with return code -1094995529
(Invalid data found when processing input)
[vost#0:0/wrapped_avframe @ 0x55841a01cfc0] Could not open encoder before
EOF
[vost#0:0/wrapped_avframe @ 0x55841a01cfc0] Task finished with error code:
-22 (Invalid argument)
[vost#0:0/wrapped_avframe @ 0x55841a01cfc0] Terminating thread with return
code -22 (Invalid argument)
[out#0/null @ 0x55841a01c940] Nothing was written into output file,
because at least one of its streams received no packets.
frame= 0 fps=0.0 q=0.0 Lsize= 0KiB time=N/A bitrate=N/A speed=N/A
Conversion failed!
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/11012>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list