diff --git a/ChangeLog b/ChangeLog index f2ec13924c..08d4a57d72 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-05-03 Edward Hervey + + * gst/videorate/gstvideorate.c: (gst_video_rate_chain): + There is no sensible way to handle incoming buffers which don't have a + valid timestamp. We therefore discard them and wait for the next one. + 2007-05-01 Tim-Philipp Müller * gst/playback/gstdecodebin.c: (type_found), (plugin_init): diff --git a/gst/videorate/gstvideorate.c b/gst/videorate/gstvideorate.c index d71f051c89..b6cf25cbb6 100644 --- a/gst/videorate/gstvideorate.c +++ b/gst/videorate/gstvideorate.c @@ -569,6 +569,9 @@ gst_video_rate_chain (GstPad * pad, GstBuffer * buffer) in_ts = GST_BUFFER_TIMESTAMP (buffer); + if (G_UNLIKELY (in_ts == GST_CLOCK_TIME_NONE)) + goto invalid_buffer; + GST_DEBUG_OBJECT (videorate, "got buffer with timestamp %" GST_TIME_FORMAT, GST_TIME_ARGS (in_ts)); @@ -683,6 +686,14 @@ not_negotiated: res = GST_FLOW_NOT_NEGOTIATED; goto done; } + +invalid_buffer: + { + GST_WARNING_OBJECT (videorate, + "Got buffer with GST_CLOCK_TIME_NONE timestamp, discarding it"); + gst_buffer_unref (buffer); + goto done; + } } static void