mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 04:22:27 +00:00
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.
This commit is contained in:
parent
e996f73d0c
commit
7181a21ca9
2 changed files with 8 additions and 4 deletions
|
@ -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++;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue