tagdemux: Use upstream GST_EVENT_STREAM_START if present
If we have an upstream GST_EVENT_STREAM_START, use that one instead
of creating a new one which could be completely different from the
upstream one and drop information (like the stream flags and stream
object).
Only create a new event if we don't already have one from upstream
https://bugzilla.gnome.org/show_bug.cgi?id=797215
diff --git a/gst-libs/gst/tag/gsttagdemux.c b/gst-libs/gst/tag/gsttagdemux.c
index 98cf646..5c5887b 100644
--- a/gst-libs/gst/tag/gsttagdemux.c
+++ b/gst-libs/gst/tag/gsttagdemux.c
@@ -329,10 +329,6 @@
if (old_caps == NULL || !gst_caps_is_equal (new_caps, old_caps)) {
GstEvent *event;
- guint group_id;
- gboolean have_group_id;
- gchar *stream_id = gst_pad_create_stream_id (tagdemux->priv->srcpad,
- GST_ELEMENT_CAST (tagdemux), NULL);
gst_caps_replace (&tagdemux->priv->src_caps, new_caps);
@@ -342,23 +338,16 @@
event =
gst_pad_get_sticky_event (tagdemux->priv->sinkpad,
GST_EVENT_STREAM_START, 0);
- if (event) {
- if (gst_event_parse_group_id (event, &group_id))
- have_group_id = TRUE;
- else
- have_group_id = FALSE;
- gst_event_unref (event);
- } else {
- have_group_id = TRUE;
- group_id = gst_util_group_id_next ();
+ if (!event) {
+ gchar *stream_id = gst_pad_create_stream_id (tagdemux->priv->srcpad,
+ GST_ELEMENT_CAST (tagdemux), NULL);
+ GST_DEBUG_OBJECT (tagdemux, "Creating new STREAM_START event");
+ event = gst_event_new_stream_start (stream_id);
+ g_free (stream_id);
+ gst_event_set_group_id (event, gst_util_group_id_next ());
}
-
- event = gst_event_new_stream_start (stream_id);
- if (have_group_id)
- gst_event_set_group_id (event, group_id);
-
gst_pad_push_event (tagdemux->priv->srcpad, event);
- g_free (stream_id);
+
gst_pad_set_caps (tagdemux->priv->srcpad, tagdemux->priv->src_caps);
} else {
/* Caps never changed */