summaryrefslogtreecommitdiffstats
path: root/gst/rtpmanager/gstrtpsession.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2007-08-16 11:40:16 +0000
committerWim Taymans <wim.taymans@gmail.com>2007-08-16 11:40:16 +0000
commit6c781b9ca39a833912c4d1043922cd3430cfc9ec (patch)
tree4739198cee2937e819285572abc2043ff7cb21e9 /gst/rtpmanager/gstrtpsession.c
parent7ba5df103c37071d46177de434fdb570df68a650 (diff)
downloadgst-plugins-bad-6c781b9ca39a833912c4d1043922cd3430cfc9ec.tar.gz
gst-plugins-bad-6c781b9ca39a833912c4d1043922cd3430cfc9ec.tar.bz2
gst-plugins-bad-6c781b9ca39a833912c4d1043922cd3430cfc9ec.zip
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.
Diffstat (limited to 'gst/rtpmanager/gstrtpsession.c')
-rw-r--r--gst/rtpmanager/gstrtpsession.c18
1 files changed, 16 insertions, 2 deletions
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;
}