diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c index a757b2dbc6..d02ec60235 100644 --- a/gst/playback/gstplaysink.c +++ b/gst/playback/gstplaysink.c @@ -1603,10 +1603,18 @@ gen_text_chain (GstPlaySink * playsink) "max-size-bytes", 0, "max-size-time", (gint64) 0, "silent", TRUE, NULL); gst_bin_add (bin, element); - gst_element_link_pads_full (element, "src", chain->overlay, - "subtitle_sink", GST_PAD_LINK_CHECK_TEMPLATE_CAPS); - textsinkpad = gst_element_get_static_pad (element, "sink"); - srcpad = gst_element_get_static_pad (chain->overlay, "src"); + if (gst_element_link_pads_full (element, "src", chain->overlay, + "subtitle_sink", GST_PAD_LINK_CHECK_TEMPLATE_CAPS)) { + textsinkpad = gst_element_get_static_pad (element, "sink"); + srcpad = gst_element_get_static_pad (chain->overlay, "src"); + } else { + gst_bin_remove (bin, chain->sink); + gst_bin_remove (bin, chain->overlay); + chain->sink = NULL; + chain->overlay = NULL; + gst_object_unref (videosinkpad); + videosinkpad = NULL; + } } } }