lavf/mp3dec: don't adjust start time; packets are not adjusted.
authorDale Curtis <dalecurtis@chromium.org>
Thu, 23 Apr 2020 23:18:18 +0000 (16:18 -0700)
committerAnton Khirnov <anton@khirnov.net>
Wed, 27 May 2020 08:22:17 +0000 (10:22 +0200)
commit460132c9980f8a1f501a1f69477bca49e1641233
tree72e03d29a496874562b179252e83d1d86f6f5346
parent7ae340111ec8e1d7d5bc074cbd3e1b9ca4e90a8d
lavf/mp3dec: don't adjust start time; packets are not adjusted.

7546ac2fee4 made it so that the start_time for mp3 files is
adjusted for skip_samples. However, this appears incorrect because
subsequent packet timestamps are not adjusted and skip_samples are
applied by deleting data from a packet without changing the timestamp.

E.g., we are told the start_time is ~25ms and we get a packet with a
timestamp of 0 that has had the skip_samples discarded from it. As such
rendering engines may incorrectly discard everything prior to the
25ms thinking that is where playback should officially start. Since the
samples were deleted without adjusting timestamps though, the true
start_time is still 0.

Other formats like MP4 with edit lists will adjust both the start
time and the timestamps of subsequent packets to avoid this issue.

Signed-off-by: Dale Curtis <dalecurtis@chromium.org>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
libavformat/mp3dec.c
tests/ref/fate/gapless-mp3