caps = gst_pad_get_current_caps (self->sinkpad);
if (caps != NULL) {
if (!gst_deinterlace_setcaps (self, self->sinkpad, caps)) {
+ gst_pad_mark_reconfigure (self->srcpad);
gst_caps_unref (caps);
- return GST_FLOW_NOT_NEGOTIATED;
+ if (GST_PAD_IS_FLUSHING (self->srcpad))
+ return GST_FLOW_FLUSHING;
+ else
+ return GST_FLOW_NOT_NEGOTIATED;
}
gst_caps_unref (caps);
} else {
+ gst_pad_mark_reconfigure (self->srcpad);
return GST_FLOW_FLUSHING;
}
} else {
if (peercaps)
gst_caps_unref (peercaps);
GST_ERROR_OBJECT (pad, "Invalid caps: %" GST_PTR_FORMAT, caps);
+ gst_pad_mark_reconfigure (self->srcpad);
return FALSE;
}
set_caps_failed:
gst_caps_unref (peercaps);
if (srccaps)
gst_caps_unref (srccaps);
+ gst_pad_mark_reconfigure (self->srcpad);
return FALSE;
}
no_bufferpool:
GST_ERROR_OBJECT (pad, "could not negotiate bufferpool");
if (srccaps)
gst_caps_unref (srccaps);
+ gst_pad_mark_reconfigure (self->srcpad);
return FALSE;
}
}