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
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;