mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 05:16:13 +00:00
parsebin: Don't modify inexistant GstStream
When handling exposing un-handled streams, we can only replace the GstStream for those we are creating ourselves (i.e. the fallback collection). Fixes assertions when the demuxer creates those streams Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2368>
This commit is contained in:
parent
fb9a116fc5
commit
5f474c3743
1 changed files with 14 additions and 13 deletions
|
@ -1376,22 +1376,23 @@ analyze_new_pad (GstParseBin * parsebin, GstElement * src, GstPad * pad,
|
||||||
g_value_array_free (factories);
|
g_value_array_free (factories);
|
||||||
|
|
||||||
if (parsebin->expose_allstreams) {
|
if (parsebin->expose_allstreams) {
|
||||||
GstStream *newstream;
|
|
||||||
GST_LOG_OBJECT (parsepad, "Existing GstStream %" GST_PTR_FORMAT,
|
|
||||||
parsepad->active_stream);
|
|
||||||
/* If we expose all streams, we only need to inform the application about
|
/* If we expose all streams, we only need to inform the application about
|
||||||
* a missing handler but still expose it. We also make sure the stream
|
* a missing handler but still expose it. We also make sure the stream
|
||||||
* type is unknown. */
|
* type is unknown. */
|
||||||
g_assert (parsepad->active_stream);
|
if (parsepad->in_a_fallback_collection) {
|
||||||
newstream =
|
GstStream *newstream;
|
||||||
gst_stream_new (gst_stream_get_stream_id (parsepad->active_stream),
|
GST_LOG_OBJECT (parsepad, "Existing GstStream %" GST_PTR_FORMAT,
|
||||||
caps, GST_STREAM_TYPE_UNKNOWN,
|
parsepad->active_stream);
|
||||||
gst_stream_get_stream_flags (parsepad->active_stream));
|
g_assert (parsepad->active_stream);
|
||||||
gst_object_replace ((GstObject **) & parsepad->active_stream,
|
newstream =
|
||||||
(GstObject *) newstream);
|
gst_stream_new (gst_stream_get_stream_id (parsepad->active_stream),
|
||||||
GST_LOG_OBJECT (parsepad, "New GstStream %" GST_PTR_FORMAT,
|
caps, GST_STREAM_TYPE_UNKNOWN,
|
||||||
parsepad->active_stream);
|
gst_stream_get_stream_flags (parsepad->active_stream));
|
||||||
|
gst_object_replace ((GstObject **) & parsepad->active_stream,
|
||||||
|
(GstObject *) newstream);
|
||||||
|
GST_LOG_OBJECT (parsepad, "New GstStream %" GST_PTR_FORMAT,
|
||||||
|
parsepad->active_stream);
|
||||||
|
}
|
||||||
gst_element_post_message (GST_ELEMENT_CAST (parsebin),
|
gst_element_post_message (GST_ELEMENT_CAST (parsebin),
|
||||||
gst_missing_decoder_message_new (GST_ELEMENT_CAST (parsebin), caps));
|
gst_missing_decoder_message_new (GST_ELEMENT_CAST (parsebin), caps));
|
||||||
goto expose_pad;
|
goto expose_pad;
|
||||||
|
|
Loading…
Reference in a new issue