[FFmpeg-cvslog] r15641 - trunk/libavformat/utils.c

michael subversion
Sun Oct 19 03:02:48 CEST 2008


Author: michael
Date: Sun Oct 19 03:02:48 2008
New Revision: 15641

Log:
Check for pts==dts on I/P frames in the presence of non low delay decoding and
discard these invalid timestamps.
fixes issue171.


Modified:
   trunk/libavformat/utils.c

Modified: trunk/libavformat/utils.c
==============================================================================
--- trunk/libavformat/utils.c	(original)
+++ trunk/libavformat/utils.c	Sun Oct 19 03:02:48 2008
@@ -838,6 +838,14 @@ static void compute_pkt_fields(AVFormatC
         pkt->dts -= 1LL<<st->pts_wrap_bits;
     }
 
+    // some mpeg2 in mpeg-ps lack dts (issue171 / input_file.mpg)
+    // we take the conservative approach and discard both
+    // Note, if this is misbehaving for a H.264 file then possibly presentation_delayed is not set correctly.
+    if(delay==1 && pkt->dts == pkt->pts && pkt->dts != AV_NOPTS_VALUE && presentation_delayed){
+        av_log(s, AV_LOG_ERROR, "invalid dts/pts combination\n");
+        pkt->dts= pkt->pts= AV_NOPTS_VALUE;
+    }
+
     if (pkt->duration == 0) {
         compute_frame_duration(&num, &den, st, pc, pkt);
         if (den && num) {




More information about the ffmpeg-cvslog mailing list