From 2aaf95a210f2d05f11a9fc190760d30304469863 Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Sat, 15 Dec 2007 19:08:42 +0000 Subject: [PATCH] choose next sample by sample position when streams' next dts difference is below AV_TIME_BASE, to reduce seeking, needed for slow underlying protocols (http), a slightly modified patch from elupus, elupus at ecce dot se Originally committed as revision 11226 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/mov.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index b22fac1f91..545564b3cb 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1511,7 +1511,9 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt) int64_t dts = av_rescale(current_sample->timestamp * (int64_t)msc->time_rate, AV_TIME_BASE, msc->time_scale); dprintf(s, "stream %d, sample %d, dts %"PRId64"\n", i, msc->current_sample, dts); - if (dts < best_dts) { + if (!sample || + ((FFABS(best_dts - dts) <= AV_TIME_BASE && current_sample->pos < sample->pos) || + (FFABS(best_dts - dts) > AV_TIME_BASE && dts < best_dts))) { sample = current_sample; best_dts = dts; sc = msc;