diff options
author | Olivier CrĂȘte <olivier.crete@collabora.co.uk> | 2009-05-22 00:51:53 +0200 |
---|---|---|
committer | Wim Taymans <wim@metal.(none)> | 2009-05-22 00:51:53 +0200 |
commit | 4424fd3c93ab2f2b9590a3b0c461c16d01f8a00a (patch) | |
tree | 48fb480eaf7101b602191c0cc4a1b200b9070a2b /gst | |
parent | 65d55e6b13c41f3ca6ff5e4e39fbd7ec990e8d0a (diff) | |
download | gst-plugins-bad-4424fd3c93ab2f2b9590a3b0c461c16d01f8a00a.tar.gz gst-plugins-bad-4424fd3c93ab2f2b9590a3b0c461c16d01f8a00a.tar.bz2 gst-plugins-bad-4424fd3c93ab2f2b9590a3b0c461c16d01f8a00a.zip |
rtpbin: Implement relasing of the rtp recv pad
Diffstat (limited to 'gst')
-rw-r--r-- | gst/rtpmanager/gstrtpbin.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/gst/rtpmanager/gstrtpbin.c b/gst/rtpmanager/gstrtpbin.c index a1411e10..075776ee 100644 --- a/gst/rtpmanager/gstrtpbin.c +++ b/gst/rtpmanager/gstrtpbin.c @@ -2081,8 +2081,23 @@ link_failed: static void remove_recv_rtp (GstRtpBin * rtpbin, GstRtpBinSession * session, GstPad * pad) { - g_warning ("gstrtpbin: releasing pad %s:%s is not implemented", - GST_DEBUG_PAD_NAME (pad)); + if (session->demux_newpad_sig) { + g_signal_handler_disconnect (session->demux, session->demux_newpad_sig); + session->demux_newpad_sig = 0; + } + + if (session->recv_rtp_src) { + gst_object_unref (session->recv_rtp_src); + session->recv_rtp_src = NULL; + } + + if (session->recv_rtp_sink) { + gst_element_release_request_pad (session->session, session->recv_rtp_sink); + session->recv_rtp_sink = NULL; + } + + gst_pad_set_active (pad, FALSE); + gst_element_remove_pad (GST_ELEMENT_CAST (rtpbin), pad); } /* Create a pad for receiving RTCP for the session in @name. Must be called with |