Commit 89c66361 authored by Seungha Yang's avatar Seungha Yang 🐑

decodebin3: Store stream-start event on output pad before exposing it

It's required for users to be able to figure out associated GstStream
object with a pad on pad-added callback.

Part-of: <gstreamer/gst-plugins-base!880>
parent 825eea95
......@@ -2262,6 +2262,20 @@ reconfigure_output_stream (DecodebinOutputStream * output,
goto cleanup;
}
if (output->src_exposed == FALSE) {
GstEvent *stream_start;
stream_start = gst_pad_get_sticky_event (slot->src_pad,
GST_EVENT_STREAM_START, 0);
/* Ensure GstStream is accesiable from pad-added callback */
if (stream_start) {
gst_pad_store_sticky_event (output->src_pad, stream_start);
gst_event_unref (stream_start);
} else {
GST_WARNING_OBJECT (slot->src_pad,
"Pad has no stored stream-start event");
}
output->src_exposed = TRUE;
gst_element_add_pad (GST_ELEMENT_CAST (dbin), output->src_pad);
}
......
......@@ -541,6 +541,7 @@ add_output_pad (GstURIDecodeBin3 * dec, GstPad * target_pad)
{
OutputPad *output;
gchar *pad_name;
GstEvent *stream_start;
output = g_slice_new0 (OutputPad);
......@@ -554,6 +555,17 @@ add_output_pad (GstURIDecodeBin3 * dec, GstPad * target_pad)
g_free (pad_name);
gst_pad_set_active (output->ghost_pad, TRUE);
stream_start = gst_pad_get_sticky_event (target_pad,
GST_EVENT_STREAM_START, 0);
if (stream_start) {
gst_pad_store_sticky_event (output->ghost_pad, stream_start);
gst_event_unref (stream_start);
} else {
GST_WARNING_OBJECT (target_pad,
"Exposing pad without stored stream-start event");
}
gst_element_add_pad (GST_ELEMENT (dec), output->ghost_pad);
output->probe_id =
......
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