ffmpegdec: don't do QoS on invalid timestamps
authorWim Taymans <wim.taymans@collabora.co.uk>
Fri, 5 Jun 2009 11:47:15 +0000 (13:47 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Fri, 5 Jun 2009 11:47:15 +0000 (13:47 +0200)
When we convert the timestamp to running_time, don't try to do QoS on invalid
times.

Fixes #580810

ext/ffmpeg/gstffmpegdec.c

index 45052f5..485ff64 100644 (file)
@@ -1257,10 +1257,14 @@ gst_ffmpegdec_do_qos (GstFFMpegDec * ffmpegdec, GstClockTime timestamp,
     goto no_qos;
   }
 
-  /* qos is done on running time */
+  /* qos is done on running time of the timestamp */
   qostime = gst_segment_to_running_time (&ffmpegdec->segment, GST_FORMAT_TIME,
       timestamp);
 
+  /* timestamp can be out of segment, then we don't do QoS */
+  if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (qostime)))
+    goto no_qos;
+
   /* see how our next timestamp relates to the latest qos timestamp. negative
    * values mean we are early, positive values mean we are too late. */
   diff = GST_CLOCK_DIFF (qostime, earliest_time);