playsink: Unlink pads when switching between enabling/disabling the deinterlace chain

See bug #678762.
This commit is contained in:
Sebastian Dröge 2012-06-25 16:01:06 +02:00
parent 67bbfdde4e
commit a038e5e583

View file

@ -3094,6 +3094,8 @@ gst_play_sink_reconfigure (GstPlaySink * playsink)
add_chain (GST_PLAY_CHAIN (playsink->videodeinterlacechain), TRUE);
activate_chain (GST_PLAY_CHAIN (playsink->videodeinterlacechain), TRUE);
gst_pad_unlink (playsink->video_srcpad_stream_synchronizer,
playsink->videochain->sinkpad);
gst_pad_link_full (playsink->video_srcpad_stream_synchronizer,
playsink->videodeinterlacechain->sinkpad, GST_PAD_LINK_CHECK_NOTHING);
} else {
@ -3111,6 +3113,10 @@ gst_play_sink_reconfigure (GstPlaySink * playsink)
if (!need_vis && !need_text && (!playsink->textchain
|| !playsink->text_pad)) {
GST_DEBUG_OBJECT (playsink, "ghosting video sinkpad");
gst_pad_unlink (playsink->video_srcpad_stream_synchronizer,
playsink->videochain->sinkpad);
gst_pad_unlink (playsink->videodeinterlacechain->srcpad,
playsink->videochain->sinkpad);
if (need_deinterlace)
gst_pad_link_full (playsink->videodeinterlacechain->srcpad,
playsink->videochain->sinkpad, GST_PAD_LINK_CHECK_NOTHING);