diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-04-20 20:42:38 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-04-21 01:31:28 +0200 |
commit | ecf34e8fc2f7c8ec67bf939e3fb621605f4a0697 (patch) | |
tree | 8097ea1c954e2e3ab92bfc2fa295738b82a93c71 | |
parent | 30ba28fe8e5757ab4ee61b9c0e8a418bd7d54b50 (diff) | |
download | ffmpeg-ecf34e8fc2f7c8ec67bf939e3fb621605f4a0697.tar.gz |
avformat/mp3dec: Adjust returned timestamp in the CBR seeking case
With this the returned timestamp should match the packet instead of
the requested timestamp, which may lay between packets
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/mp3dec.c | 6 | ||||
-rw-r--r-- | tests/ref/fate/gapless-mp3-notoc | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/libavformat/mp3dec.c b/libavformat/mp3dec.c index 06bc1d0f7f..0604e315e2 100644 --- a/libavformat/mp3dec.c +++ b/libavformat/mp3dec.c @@ -489,6 +489,12 @@ static int mp3_seek(AVFormatContext *s, int stream_index, int64_t timestamp, ret = avio_seek(s->pb, best_pos, SEEK_SET); if (ret < 0) return ret; + + if (mp3->is_cbr && ie == &ie1) { + int frame_duration = av_rescale(st->duration, 1, mp3->frames); + ie1.timestamp = frame_duration * av_rescale(best_pos - s->internal->data_offset, mp3->frames, mp3->header_filesize); + } + ff_update_cur_dts(s, st, ie->timestamp); st->skip_samples = ie->timestamp <= 0 ? mp3->start_pad + 528 + 1 : 0; return 0; diff --git a/tests/ref/fate/gapless-mp3-notoc b/tests/ref/fate/gapless-mp3-notoc index f52efff249..936d0ba4d9 100644 --- a/tests/ref/fate/gapless-mp3-notoc +++ b/tests/ref/fate/gapless-mp3-notoc @@ -2,4 +2,4 @@ d5c88cf38416329a052a9b0cb140fb4c *tests/data/fate/gapless-mp3-notoc.out-1 c96c3ae7bd3300fd2f4debac222de5b7 3386bc2009b31b7ef39247918cbb02a5 *tests/data/fate/gapless-mp3-notoc.out-2 c96c3ae7bd3300fd2f4debac222de5b7 -e82eaed507ce3f7f6199918159e1ddd7 *tests/data/fate/gapless-mp3-notoc.out-3 +92e37f050ad4fc817730c8af17ee6d1b *tests/data/fate/gapless-mp3-notoc.out-3 |