deal with the case where one of pts,dts has wrapped but the other has not
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 31 Jul 2007 15:06:27 +0000 (15:06 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 31 Jul 2007 15:06:27 +0000 (15:06 +0000)
Originally committed as revision 9839 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/utils.c

index 87025c1..70b7ddc 100644 (file)
@@ -595,6 +595,11 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
     int num, den, presentation_delayed, delay, i;
     int64_t offset;
 
     int num, den, presentation_delayed, delay, i;
     int64_t offset;
 
+    if(pkt->pts != AV_NOPTS_VALUE && pkt->dts != AV_NOPTS_VALUE && pkt->dts > pkt->pts && st->pts_wrap_bits<63
+       /*&& pkt->dts-(1LL<<st->pts_wrap_bits) < pkt->pts*/){
+        pkt->dts -= 1LL<<st->pts_wrap_bits;
+    }
+
     if (pkt->duration == 0) {
         compute_frame_duration(&num, &den, st, pc, pkt);
         if (den && num) {
     if (pkt->duration == 0) {
         compute_frame_duration(&num, &den, st, pc, pkt);
         if (den && num) {