hlsdemux: Give a proper name to the srcpads and remove it when resetting the element
authorSebastian Dröge <sebastian@centricular.com>
Wed, 12 Feb 2014 17:27:21 +0000 (18:27 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 12 Feb 2014 17:27:21 +0000 (18:27 +0100)
ext/hls/gsthlsdemux.c
ext/hls/gsthlsdemux.h

index ded4802..f0b4ad3 100644 (file)
@@ -645,12 +645,15 @@ switch_pads (GstHLSDemux * demux, GstCaps * newcaps)
   GstPad *oldpad = demux->srcpad;
   GstEvent *event;
   gchar *stream_id;
+  gchar *name;
 
   GST_DEBUG ("Switching pads (oldpad:%p) with caps: %" GST_PTR_FORMAT, oldpad,
       newcaps);
 
   /* First create and activate new pad */
-  demux->srcpad = gst_pad_new_from_static_template (&srctemplate, NULL);
+  name = g_strdup_printf ("src_%u", demux->srcpad_counter++);
+  demux->srcpad = gst_pad_new_from_static_template (&srctemplate, name);
+  g_free (name);
   gst_pad_set_event_function (demux->srcpad,
       GST_DEBUG_FUNCPTR (gst_hls_demux_src_event));
   gst_pad_set_query_function (demux->srcpad,
@@ -879,6 +882,12 @@ gst_hls_demux_reset (GstHLSDemux * demux, gboolean dispose)
 
   demux->have_group_id = FALSE;
   demux->group_id = G_MAXUINT;
+
+  demux->srcpad_counter = 0;
+  if (demux->srcpad) {
+    gst_element_remove_pad (GST_ELEMENT_CAST (demux), demux->srcpad);
+    demux->srcpad = NULL;
+  }
 }
 
 static gboolean
index 6536218..29d579d 100644 (file)
@@ -55,8 +55,9 @@ struct _GstHLSDemux
 {
   GstElement parent;
 
-  GstPad *srcpad;
   GstPad *sinkpad;
+  GstPad *srcpad;
+  gint srcpad_counter;
 
   gboolean have_group_id;
   guint group_id;