Commit 62053852 authored by Edward Hervey's avatar Edward Hervey 🤘 Committed by Edward Hervey

playsink: Properly mark pending blocked pads

When blocking input pads, we also need to properly set the appropriate
pending flag.

Without this, when switching stream types after initial configuration
(like going from Audio+Video to Audio+Video+Sub) playsink would never
wait for *all* input streams to be blocked (it would just wait for the
new input pad (text in this case) to be blocked).

Since the reconfiguration might introduce unlinking/relinking of elements,
we need to ensure that *ALL* input streams are blocked.

Failure to do so would result in having some input streams pushing data
to inactive elements (returning GST_FLOW_FLUSHING) or unlinked pads
(returning GST_FLOW_NOT_LINKED).

A later optimization could involve only blocking the input pads that
might be involved in reconfiguration. But better be safe than sorry for
now :)
parent bc90841c
......@@ -4155,7 +4155,7 @@ video_set_blocked (GstPlaySink * playsink, gboolean blocked)
gst_pad_remove_probe (((GstPlayVisChain *) playsink->vischain)->
blockpad, playsink->vis_pad_block_id);
playsink->vis_pad_block_id = 0;
PENDING_FLAG_SET (playsink, GST_PLAY_SINK_TYPE_VIDEO);
playsink->video_block_id =
gst_pad_add_probe (opad, GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM,
sinkpad_blocked_cb, playsink, NULL);
......@@ -4183,6 +4183,7 @@ audio_set_blocked (GstPlaySink * playsink, gboolean blocked)
blockpad, playsink->vis_pad_block_id);
playsink->vis_pad_block_id = 0;
PENDING_FLAG_SET (playsink, GST_PLAY_SINK_TYPE_AUDIO);
playsink->audio_block_id =
gst_pad_add_probe (opad, GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM,
sinkpad_blocked_cb, playsink, NULL);
......@@ -4215,6 +4216,7 @@ text_set_blocked (GstPlaySink * playsink, gboolean blocked)
blockpad, playsink->vis_pad_block_id);
playsink->vis_pad_block_id = 0;
PENDING_FLAG_SET (playsink, GST_PLAY_SINK_TYPE_TEXT);
playsink->text_block_id =
gst_pad_add_probe (opad, GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM,
sinkpad_blocked_cb, playsink, NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment