diff options
Diffstat (limited to 'gst/rtpmanager/gstrtpsession.c')
-rw-r--r-- | gst/rtpmanager/gstrtpsession.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c index bb47a29ed..01153e23c 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; } |