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
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,
if (total_duration > priv->latency_ns) {
GstClockTime gap_time;
- guint lost_packets;
gap_time = total_duration - priv->latency_ns;
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;