Fix duration calculation in the presence of a single wraping of the timeline.
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 27 Jan 2010 19:37:52 +0000 (19:37 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 27 Jan 2010 19:37:52 +0000 (19:37 +0000)
Fixes issue1714.

Originally committed as revision 21485 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/utils.c

index 64c5ec4..c15b5f1 100644 (file)
@@ -1823,6 +1823,8 @@ static void av_estimate_timings_from_pts(AVFormatContext *ic, int64_t old_offset
             start_time[pkt->stream_index] != AV_NOPTS_VALUE) {
             end_time = pkt->pts;
             duration = end_time - start_time[pkt->stream_index];
             start_time[pkt->stream_index] != AV_NOPTS_VALUE) {
             end_time = pkt->pts;
             duration = end_time - start_time[pkt->stream_index];
+            if (duration < 0)
+                duration += 1LL<<st->pts_wrap_bits;
             if (duration > 0) {
                 if (st->duration == AV_NOPTS_VALUE ||
                     st->duration < duration)
             if (duration > 0) {
                 if (st->duration == AV_NOPTS_VALUE ||
                     st->duration < duration)