From 454d75951e4438f83e9d491c9548e071e2e2f827 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 27 Aug 2013 09:34:46 +0200 Subject: [PATCH] jitterbuffer: fix types of the retransmission event --- gst/rtpmanager/gstrtpjitterbuffer.c | 6 +++--- gst/rtpmanager/gstrtpsession.c | 20 +++++++++++++++----- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index d56d6af..079ae0c 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -2204,9 +2204,9 @@ do_expected_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer, gst_structure_new ("GstRTPRetransmissionRequest", "seqnum", G_TYPE_UINT, (guint) timer->seqnum, "running-time", G_TYPE_UINT64, timer->rtx_base, - "delay", G_TYPE_UINT64, timer->rtx_retry, - "frequency", G_TYPE_INT, priv->rtx_retry_timeout, - "period", G_TYPE_INT, priv->rtx_retry_period, + "delay", G_TYPE_UINT, GST_TIME_AS_MSECONDS (timer->rtx_retry), + "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)); diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c index 6cb0d09..c9beff7 100644 --- a/gst/rtpmanager/gstrtpsession.c +++ b/gst/rtpmanager/gstrtpsession.c @@ -1504,7 +1504,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; + guint seqnum, delay, deadline, max_delay; if (!gst_structure_get_clock_time (s, "running-time", &running_time)) running_time = -1; @@ -1512,13 +1512,23 @@ gst_rtp_session_event_recv_rtp_src (GstPad * pad, GstObject * parent, ssrc = -1; if (!gst_structure_get_uint (s, "seqnum", &seqnum)) seqnum = -1; - if (!gst_structure_get_uint (s, "delay", &deadline)) - delay = -1; + if (!gst_structure_get_uint (s, "delay", &delay)) + delay = 0; if (!gst_structure_get_uint (s, "deadline", &deadline)) - deadline = -1; + deadline = 100; + + /* 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; + else + max_delay = 0; if (rtp_session_request_nack (rtpsession->priv->session, ssrc, seqnum, - (deadline - delay) * GST_MSECOND)) + max_delay * GST_MSECOND)) forward = FALSE; } break; -- 2.7.4