[FFmpeg-trac] #4890(avcodec:new): avi file loses A/V sync because decoder mistakenly decodes broken frame
FFmpeg
trac at avcodec.org
Mon Sep 28 23:41:16 CEST 2015
#4890: avi file loses A/V sync because decoder mistakenly decodes broken frame
---------------------------------+--------------------------------------
Reporter: gjdfgh | Type: defect
Status: new | Priority: normal
Component: avcodec | Version: git-master
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
---------------------------------+--------------------------------------
The attached sample file has a strange mp3 audio packet in the beginning,
and real audio starting at about 7 seconds.
libavcodec's mp3 decoder decodes this first packet into about 20 seconds
of silence. The second audio packet has PTs 7.632 seconds, so I conclude
decoding of the first packet is broken.
The result is that players using libavcodec lose A/V sync, because the
first audio packet decodes to too much audio, and/or the audio PTS
essentially goes backwards after the first packet.
The sample [1] works with vlc (uses its own mp3 decoder), mplayer2 (uses
libmpg123), mpv under Libav (Libav doesn't seem to have this problem), but
_not_ ffplay or mpv linked against ffmpeg.
Remuxing the audio to raw mp3 via codec copy results in a file that
behaves very strange with ffmpeg: it first plays 20 seconds (or whatever
it was) audio, then a timestamp reset happens, and then the normal audio
(from the second avi packet onwards) plays. The duration of the mp3 file
is also shown incorrectly. This indicates that libavformat probably
handles it somewhat correctly, but the decoder outputs too much data.
Upon a closer look, it actually turns out that the packet consists almost
entirely of zero bytes. Only towards the end there's something that
resembles a mp3 frame. So libavcodec's mp3 decoder decodes zeros. I don't
think this is valid; the decoder should reject this.
[1] https://0x0.st/z6_.avi
--
Ticket URL: <https://trac.ffmpeg.org/ticket/4890>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list