diff --git a/src/gstducatividdec.c b/src/gstducatividdec.c
index 0c80b47557505b8b2bbbdc5373c2c49331ac117b..efebe107da111085769d1560c5501de8ca79d2ae 100644 (file)
--- a/src/gstducatividdec.c
+++ b/src/gstducatividdec.c
}
}
- if (send) {
+ if (send && self->out_of_segment == FALSE ) {
GstClockTime ts;
ts = GST_BUFFER_PTS (outbuf);
GstClockTime ts;
ts = GST_BUFFER_PTS (outbuf);
GstDucatiVidDecClass *klass = GST_DUCATIVIDDEC_GET_CLASS (self);
gint64 diff;
GstDucatiVidDecClass *klass = GST_DUCATIVIDDEC_GET_CLASS (self);
gint64 diff;
+ self->out_of_segment = FALSE;
if (self->wait_keyframe) {
if (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT)) {
GST_INFO_OBJECT (self, "skipping until the next keyframe");
if (self->wait_keyframe) {
if (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT)) {
GST_INFO_OBJECT (self, "skipping until the next keyframe");
}
timestamp = GST_BUFFER_PTS (buf);
}
timestamp = GST_BUFFER_PTS (buf);
- if (self->segment.format != GST_FORMAT_TIME ||
- self->qos_earliest_time == GST_CLOCK_TIME_NONE)
+ if (self->segment.format != GST_FORMAT_TIME)
goto no_qos;
if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (timestamp)))
goto no_qos;
if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (timestamp)))
qostime = gst_segment_to_running_time (&self->segment,
GST_FORMAT_TIME, timestamp);
qostime = gst_segment_to_running_time (&self->segment,
GST_FORMAT_TIME, timestamp);
- if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (qostime)))
+ if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (qostime))) {
+ self->out_of_segment = TRUE;
/* out of segment */
/* out of segment */
+ GST_DEBUG_OBJECT(self, "out of segment\n");
goto no_qos;
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. */
/* see how our next timestamp relates to the latest qos timestamp. negative
* values mean we are early, positive values mean we are too late. */