From 7181a21ca912f74ac2e11280ac09f50b14ee7919 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 27 Dec 2013 16:48:48 +0100 Subject: [PATCH] rtpsession: use RTT from the Retransmission event Place the estimated RTT in the Retransmission event and let the session manager use that instead of the hardcoded value. --- gst/rtpmanager/gstrtpjitterbuffer.c | 4 +++- gst/rtpmanager/gstrtpsession.c | 8 +++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index 85dad3be94..ab7d838e43 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -2504,7 +2504,9 @@ do_expected_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer, "frequency", G_TYPE_UINT, priv->rtx_retry_timeout, "period", G_TYPE_UINT, priv->rtx_retry_period, "deadline", G_TYPE_UINT, priv->latency_ms, - "packet-spacing", G_TYPE_UINT64, priv->packet_spacing, NULL)); + "packet-spacing", G_TYPE_UINT64, priv->packet_spacing, + "avg-rtt", G_TYPE_UINT, GST_TIME_AS_MSECONDS (priv->avg_rtx_rtt), + NULL)); priv->num_rtx_requests++; timer->num_rtx_retry++; diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c index 4c9437ad00..f51b61353e 100644 --- a/gst/rtpmanager/gstrtpsession.c +++ b/gst/rtpmanager/gstrtpsession.c @@ -1551,7 +1551,7 @@ gst_rtp_session_event_recv_rtp_src (GstPad * pad, GstObject * parent, forward = FALSE; } else if (gst_structure_has_name (s, "GstRTPRetransmissionRequest")) { GstClockTime running_time; - guint seqnum, delay, deadline, max_delay; + guint seqnum, delay, deadline, max_delay, avg_rtt; GST_RTP_SESSION_LOCK (rtpsession); rtpsession->priv->rtx_count++; @@ -1567,14 +1567,16 @@ gst_rtp_session_event_recv_rtp_src (GstPad * pad, GstObject * parent, delay = 0; if (!gst_structure_get_uint (s, "deadline", &deadline)) deadline = 100; + if (!gst_structure_get_uint (s, "avg-rtt", &avg_rtt)) + avg_rtt = 40; /* remaining time to receive the packet */ max_delay = deadline; if (max_delay > delay) max_delay -= delay; /* estimated RTT */ - if (max_delay > 40) - max_delay -= 40; + if (max_delay > avg_rtt) + max_delay -= avg_rtt; else max_delay = 0;