From 6c781b9ca39a833912c4d1043922cd3430cfc9ec Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 16 Aug 2007 11:40:16 +0000 Subject: gst/rtpmanager/gstrtpjitterbuffer.c: Fix EOS handling. Original commit message from CVS: * gst/rtpmanager/gstrtpjitterbuffer.c: (gst_rtp_jitter_buffer_sink_event), (gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop): Fix EOS handling. Convert some DEBUG into WARNINGs. Pause task when flushing. * gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init), (rtcp_thread), (gst_rtp_session_event_recv_rtcp_sink): Use system clock for RTCP session management timeouts. * gst/rtpmanager/rtpsession.c: (on_new_ssrc), (on_ssrc_collision), (on_ssrc_validated), (on_bye_ssrc), (on_bye_timeout), (on_timeout): Release the session lock when emiting signals. --- gst/rtpmanager/gstrtpsession.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'gst/rtpmanager/gstrtpsession.c') diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c index bb47a29e..01153e23 100644 --- a/gst/rtpmanager/gstrtpsession.c +++ b/gst/rtpmanager/gstrtpsession.c @@ -537,9 +537,10 @@ rtcp_thread (GstRTPSession * rtpsession) GstClockTime current_time; GstClockTime next_timeout; - clock = gst_element_get_clock (GST_ELEMENT_CAST (rtpsession)); + /* RTCP timeouts we use the system clock */ + clock = gst_system_clock_obtain (); if (clock == NULL) - return; + goto no_clock; current_time = gst_clock_get_time (clock); @@ -590,6 +591,15 @@ rtcp_thread (GstRTPSession * rtpsession) gst_object_unref (clock); GST_DEBUG_OBJECT (rtpsession, "leaving RTCP thread"); + return; + + /* ERRORS */ +no_clock: + { + GST_ELEMENT_ERROR (rtpsession, CORE, CLOCK, (NULL), + ("Could not get system clock")); + return; + } } static gboolean @@ -900,6 +910,10 @@ gst_rtp_session_event_recv_rtcp_sink (GstPad * pad, GstEvent * event) switch (GST_EVENT_TYPE (event)) { default: + if (rtpsession->send_rtcp_src) { + gst_event_ref (event); + ret = gst_pad_push_event (rtpsession->send_rtcp_src, event); + } ret = gst_pad_push_event (rtpsession->sync_src, event); break; } -- cgit v1.2.1