resindvd: Send stream-start event before anything else on the mpeg demuxer srcpads
authorSebastian Dröge <slomo@circular-chaos.org>
Mon, 22 Jul 2013 07:18:32 +0000 (09:18 +0200)
committerSebastian Dröge <slomo@circular-chaos.org>
Mon, 22 Jul 2013 07:19:06 +0000 (09:19 +0200)
ext/resindvd/gstmpegdemux.c

index a03eab3..1f24978 100644 (file)
@@ -273,6 +273,7 @@ gst_flups_demux_create_stream (GstFluPSDemux * demux, gint id, gint stream_type)
   GstFluPSDemuxClass *klass = GST_FLUPS_DEMUX_GET_CLASS (demux);
   GstCaps *caps;
   GstClockTime threshold = SEGMENT_THRESHOLD;
+  gchar *stream_id;
 
   name = NULL;
   template = NULL;
@@ -391,6 +392,12 @@ gst_flups_demux_create_stream (GstFluPSDemux * demux, gint id, gint stream_type)
         stream->pad);
   }
 
+  stream_id =
+      gst_pad_create_stream_id_printf (stream->pad, GST_ELEMENT_CAST (demux),
+      "%02x", id);
+  gst_pad_push_event (stream->pad, gst_event_new_stream_start (stream_id));
+  g_free (stream_id);
+
   gst_pad_set_caps (stream->pad, caps);
   GST_DEBUG_OBJECT (demux, "create pad %s, caps %" GST_PTR_FORMAT, name, caps);
   gst_caps_unref (caps);
@@ -833,6 +840,9 @@ gst_flups_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
   GstFluPSDemux *demux = GST_FLUPS_DEMUX (parent);
 
   switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_STREAM_START:
+      gst_event_unref (event);
+      break;
     case GST_EVENT_FLUSH_START:
       gst_flups_demux_send_event (demux, event);
       break;