mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-28 11:55:39 +00:00
rtpjitterbuffer: Fix expected_dts calc in calculate_expected
Right above we consider lost_packet packets, each of them having duration, as lost and triggered their timers immediately. Below we use expected_dts to schedule retransmission or schedule lost timers for the packets that come after expected_dts. As we just triggered lost_packets packets as lost, there's no point in scheduling new timers for them and we can just skip over all lost packets. https://bugzilla.gnome.org/show_bug.cgi?id=739868
This commit is contained in:
parent
1a2f253c3a
commit
05bd708fc5
1 changed files with 2 additions and 2 deletions
|
@ -2004,6 +2004,7 @@ calculate_expected (GstRtpJitterBuffer * jitterbuffer, guint32 expected,
|
|||
GstRtpJitterBufferPrivate *priv = jitterbuffer->priv;
|
||||
GstClockTime total_duration, duration, expected_dts;
|
||||
TimerType type;
|
||||
guint lost_packets = 0;
|
||||
|
||||
GST_DEBUG_OBJECT (jitterbuffer,
|
||||
"dts %" GST_TIME_FORMAT ", last %" GST_TIME_FORMAT,
|
||||
|
@ -2025,7 +2026,6 @@ calculate_expected (GstRtpJitterBuffer * jitterbuffer, guint32 expected,
|
|||
|
||||
if (total_duration > priv->latency_ns) {
|
||||
GstClockTime gap_time;
|
||||
guint lost_packets;
|
||||
|
||||
gap_time = total_duration - priv->latency_ns;
|
||||
|
||||
|
@ -2052,7 +2052,7 @@ calculate_expected (GstRtpJitterBuffer * jitterbuffer, guint32 expected,
|
|||
priv->last_in_dts += gap_time;
|
||||
}
|
||||
|
||||
expected_dts = priv->last_in_dts + duration;
|
||||
expected_dts = priv->last_in_dts + (lost_packets + 1) * duration;
|
||||
|
||||
if (priv->do_retransmission) {
|
||||
TimerData *timer;
|
||||
|
|
Loading…
Reference in a new issue