diff options
author | Sebastian Dröge <slomo@circular-chaos.org> | 2013-07-22 15:45:57 +0200 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2013-07-22 16:02:46 +0200 |
commit | bde41413f6ec508a3e1d98d4b749d0193bfbf0a6 (patch) | |
tree | 24511a92757eacb52d5082df48fabd00f5b34dd1 | |
parent | 828791fadc7215555ee44c846d65c76fa34f6138 (diff) |
asfdemux: Add support for group-id in the stream-start event
-rw-r--r-- | gst/asfdemux/gstasfdemux.c | 23 | ||||
-rw-r--r-- | gst/asfdemux/gstasfdemux.h | 3 |
2 files changed, 25 insertions, 1 deletions
diff --git a/gst/asfdemux/gstasfdemux.c b/gst/asfdemux/gstasfdemux.c index f314e9bd..693a5d3b 100644 --- a/gst/asfdemux/gstasfdemux.c +++ b/gst/asfdemux/gstasfdemux.c @@ -234,6 +234,8 @@ gst_asf_demux_reset (GstASFDemux * demux, gboolean chain_reset) /* do not remove those for not adding pads with same name */ demux->num_audio_streams = 0; demux->num_video_streams = 0; + demux->have_group_id = FALSE; + demux->group_id = G_MAXUINT; } demux->num_streams = 0; demux->activated_streams = FALSE; @@ -2368,6 +2370,7 @@ static void gst_asf_demux_activate_stream (GstASFDemux * demux, AsfStream * stream) { if (!stream->active) { + GstEvent *event; gchar *stream_id; GST_INFO_OBJECT (demux, "Activating stream %2u, pad %s, caps %" @@ -2377,7 +2380,25 @@ gst_asf_demux_activate_stream (GstASFDemux * demux, AsfStream * stream) stream_id = gst_pad_create_stream_id_printf (stream->pad, GST_ELEMENT_CAST (demux), "%03u", stream->id); - gst_pad_push_event (stream->pad, gst_event_new_stream_start (stream_id)); + + event = + gst_pad_get_sticky_event (demux->sinkpad, GST_EVENT_STREAM_START, 0); + if (event) { + if (gst_event_parse_group_id (event, &demux->group_id)) + demux->have_group_id = TRUE; + else + demux->have_group_id = FALSE; + gst_event_unref (event); + } else if (!demux->have_group_id) { + demux->have_group_id = TRUE; + demux->group_id = gst_util_group_id_next (); + } + + event = gst_event_new_stream_start (stream_id); + if (demux->have_group_id) + gst_event_set_group_id (event, demux->group_id); + + gst_pad_push_event (stream->pad, event); g_free (stream_id); gst_pad_set_caps (stream->pad, stream->caps); diff --git a/gst/asfdemux/gstasfdemux.h b/gst/asfdemux/gstasfdemux.h index 053fc1e6..0080b162 100644 --- a/gst/asfdemux/gstasfdemux.h +++ b/gst/asfdemux/gstasfdemux.h @@ -129,6 +129,9 @@ struct _GstASFDemux { GstPad *sinkpad; + gboolean have_group_id; + guint group_id; + GstAdapter *adapter; GstTagList *taglist; GstASFDemuxState state; |