[FFmpeg-trac] #8895(avformat:new): Advanced Edit List support causes decode errors
FFmpeg
trac at avcodec.org
Wed Sep 16 15:57:12 EEST 2020
#8895: Advanced Edit List support causes decode errors
-------------------------------------+-------------------------------------
Reporter: dbuitenh | Owner:
Type: defect | Status: new
Priority: normal | Component: avformat
Version: | Keywords: mov
unspecified | editlist
Blocked By: | Blocking:
Reproduced by developer: 0 | Analyzed by developer: 0
-------------------------------------+-------------------------------------
Summary of the bug:
The "advanced edit list" code in libavformat's MOV/MP4 demuxer causes
decode errors on some files. I think this is related to the fact that
these files are frames stored out of order with negative entries in the
CTTS atom, and the edit list reodering/frame dropping/GOP code doesn't
handle this properly, since it was written with only MP4 in mind, which
only has unsigned value in the CTTS box (MOV can have signed values). As a
result, some edit list entries cause decode errors and artifacting (see
below). Disabling the advanced edit list code (aka not hanling it at all)
with -advanced_editlist 0 or -ignored_editlist 1 prevents these decode
errors.
Also of note is that this file as a CSLG atom, which FFmpeg seems to not
parse at all, which could also be related.
How to reproduce:
{{{
% ffmpeg -i test2.mov -f null -
ffmpeg version N-99165-gfda5363c80 Copyright (c) 2000-2020 the FFmpeg
developers
built with clang version 9.0.1-14
configuration: --cc=clang
libavutil 56. 59.100 / 56. 59.100
libavcodec 58.106.100 / 58.106.100
libavformat 58. 56.100 / 58. 56.100
libavdevice 58. 11.102 / 58. 11.102
libavfilter 7. 87.100 / 7. 87.100
libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
MUH SHIFT = 1
Last message repeated 5 times
MUH SHIFT = 0
Last message repeated 1 times
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test2.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2020-08-13T20:58:58.000000Z
com.apple.finalcutstudio.media.uuid: 41E16D85-BEBA-4ADE-
8AB4-A0E359562D54
Duration: 00:59:36.72, start: 0.000000, bitrate: 5 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv,
bt709, progressive), 1920x1080, 1003 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
(default)
Metadata:
creation_time : 2020-08-13T20:58:58.000000Z
handler_name : Apple Video Media Handler
encoder : AVC Coding
timecode : 00:00:00:00
Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz,
stereo, s16, 1536 kb/s (default)
Metadata:
creation_time : 2020-08-13T20:58:58.000000Z
handler_name : Apple Sound Media Handler
Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
Metadata:
creation_time : 2020-08-13T20:59:27.000000Z
handler_name : Time Code Media Handler
timecode : 00:00:00:00
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> wrapped_avframe (native))
Stream #0:1 -> #0:1 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, null, to 'pipe:':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
com.apple.finalcutstudio.media.uuid: 41E16D85-BEBA-4ADE-
8AB4-A0E359562D54
encoder : Lavf58.56.100
Stream #0:0(eng): Video: wrapped_avframe, yuv420p, 1920x1080, q=2-31,
200 kb/s, 25 fps, 25 tbn, 25 tbc (default)
Metadata:
creation_time : 2020-08-13T20:58:58.000000Z
handler_name : Apple Video Media Handler
timecode : 00:00:00:00
encoder : Lavc58.106.100 wrapped_avframe
Stream #0:1(eng): Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
(default)
Metadata:
creation_time : 2020-08-13T20:58:58.000000Z
handler_name : Apple Sound Media Handler
encoder : Lavc58.106.100 pcm_s16le
[h264 @ 0x2d7ad80] number of reference frames (0+2) exceeds max (1;
probably corrupt input), discarding one
[h264 @ 0x2d7ad80] co located POCs unavailable
[h264 @ 0x2d7ad80] reference count overflow
[h264 @ 0x2d7ad80] decode_slice_header error
[errors continue for a long time from here]
}}}
I have attached a trimmed 2.5mb version of one of these files that should
be sufficient for testing and reproducing, but I also have the creator's
permission to share the whole ~1gb file if necessary or prudent.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8895>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list