summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-05-22 16:41:19 +0200
committerTim-Philipp Müller <tim.muller@collabora.co.uk>2009-08-11 02:30:44 +0100
commit7d9c2d20dfd02be8751bd4d711a9470d3ae19304 (patch)
tree25160c50702c503185a4882f8dd4b2a9ee3729f5
parent6c684e59c692bbe3e9ec02a66fcd03771de3fb41 (diff)
rtpbin: add to new signal to remove SSRC pads
-rw-r--r--gst/rtpmanager/gstrtpbin.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/gst/rtpmanager/gstrtpbin.c b/gst/rtpmanager/gstrtpbin.c
index f7d7e54a..017ffc02 100644
--- a/gst/rtpmanager/gstrtpbin.c
+++ b/gst/rtpmanager/gstrtpbin.c
@@ -493,27 +493,18 @@ find_stream_by_ssrc (GstRtpBinSession * session, guint32 ssrc)
}
static void
-ssrc_demux_pad_removed (GstElement * element, GstPad * pad,
+ssrc_demux_pad_removed (GstElement * element, guint ssrc, GstPad * pad,
GstRtpBinSession * session)
{
- guint ssrc;
GstRtpBinStream *stream = NULL;
- gchar *name;
- gint res;
-
- name = gst_pad_get_name (pad);
- res = sscanf (name, "src_%d", &ssrc);
- g_free (name);
-
- if (res != 1)
- return;
GST_RTP_SESSION_LOCK (session);
- if ((stream = find_stream_by_ssrc (session, ssrc))) {
+ if ((stream = find_stream_by_ssrc (session, ssrc)))
session->streams = g_slist_remove (session->streams, stream);
- free_stream (stream);
- }
GST_RTP_SESSION_UNLOCK (session);
+
+ if (stream)
+ free_stream (stream);
}
/* create a session with the given id. Must be called with RTP_BIN_LOCK */
@@ -2093,7 +2084,7 @@ create_recv_rtp (GstRtpBin * rtpbin, GstPadTemplate * templ, const gchar * name)
session->demux_newpad_sig = g_signal_connect (session->demux,
"new-ssrc-pad", (GCallback) new_ssrc_pad_found, session);
session->demux_padremoved_sig = g_signal_connect (session->demux,
- "pad-removed", (GCallback) ssrc_demux_pad_removed, session);
+ "removed-ssrc-pad", (GCallback) ssrc_demux_pad_removed, session);
GST_DEBUG_OBJECT (rtpbin, "ghosting session sink pad");
session->recv_rtp_sink_ghost =