mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-16 19:25:18 +00:00
rtpjitterbuffer: Only unschedule timers for late packets if they're not RTX packets and only once
Timers for RTX packets are dealt with later in update_rtx_timers(), and timers for non-RTX packets would potentially also be unscheduled a second time from there so avoid that. Also don't shadow the timer variable from the outer scope but instead make use of it directly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2973>
This commit is contained in:
parent
034faeae31
commit
2ca849499e
1 changed files with 4 additions and 4 deletions
|
@ -3364,13 +3364,13 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent,
|
||||||
do_next_seqnum = FALSE;
|
do_next_seqnum = FALSE;
|
||||||
|
|
||||||
/* If an out of order packet arrives before its lost timer has expired
|
/* If an out of order packet arrives before its lost timer has expired
|
||||||
* remove it to avoid false positive statistics. */
|
* remove it to avoid false positive statistics. If this is an RTX
|
||||||
RtpTimer *timer = rtp_timer_queue_find (priv->timers, seqnum);
|
* packet then the timer will be updated later as part of update_rtx_timers() */
|
||||||
if (timer && timer->queued && timer->type == RTP_TIMER_LOST) {
|
if (!is_rtx && timer && timer->type == RTP_TIMER_LOST) {
|
||||||
rtp_timer_queue_unschedule (priv->timers, timer);
|
rtp_timer_queue_unschedule (priv->timers, timer);
|
||||||
GST_DEBUG_OBJECT (jitterbuffer,
|
GST_DEBUG_OBJECT (jitterbuffer,
|
||||||
"removing lost timer for late seqnum #%u", seqnum);
|
"removing lost timer for late seqnum #%u", seqnum);
|
||||||
rtp_timer_free (timer);
|
rtp_timer_free (g_steal_pointer (&timer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue