GST_DEBUG_OBJECT (render, "performing negotiation");
+ gst_pad_check_reconfigure (render->srcpad);
+
if (!caps)
caps = gst_pad_get_current_caps (render->video_sinkpad);
else
gst_caps_unref (caps);
+ if (!ret)
+ gst_pad_mark_reconfigure (render->srcpad);
+
return ret;
no_format:
{
if (caps)
gst_caps_unref (caps);
+ gst_pad_mark_reconfigure (render->srcpad);
return FALSE;
}
}
goto done;
}
- if (gst_pad_check_reconfigure (render->srcpad))
- gst_ttml_render_negotiate (render, NULL);
+ if (gst_pad_check_reconfigure (render->srcpad)) {
+ if (!gst_ttml_render_negotiate (render, NULL)) {
+ gst_pad_mark_reconfigure (render->srcpad);
+ gst_buffer_unref (video_frame);
+ if (GST_PAD_IS_FLUSHING (render->srcpad))
+ return GST_FLOW_FLUSHING;
+ else
+ return GST_FLOW_NOT_NEGOTIATED;
+ }
+ }
video_frame = gst_buffer_make_writable (video_frame);