mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 04:46:13 +00:00
rtpjitterbuffer: Optimize offset update
As we are applying the same offset over all timers, there timer ordering won't change, so we can safely skip time-reordering.
This commit is contained in:
parent
af1c586c7b
commit
4a9f42430a
1 changed files with 3 additions and 4 deletions
|
@ -1958,15 +1958,14 @@ update_timer_offsets (GstRtpJitterBuffer * jitterbuffer)
|
||||||
{
|
{
|
||||||
GstRtpJitterBufferPrivate *priv = jitterbuffer->priv;
|
GstRtpJitterBufferPrivate *priv = jitterbuffer->priv;
|
||||||
RtpTimer *test = rtp_timer_queue_peek_earliest (priv->timers);
|
RtpTimer *test = rtp_timer_queue_peek_earliest (priv->timers);
|
||||||
|
GstClockTimeDiff new_offset = timeout_offset (jitterbuffer);
|
||||||
|
|
||||||
while (test) {
|
while (test) {
|
||||||
if (test->type != RTP_TIMER_EXPECTED) {
|
if (test->type != RTP_TIMER_EXPECTED) {
|
||||||
GstClockTimeDiff new_offset = timeout_offset (jitterbuffer);
|
|
||||||
|
|
||||||
test->timeout = get_pts_timeout (test) + new_offset;
|
test->timeout = get_pts_timeout (test) + new_offset;
|
||||||
test->offset = new_offset;
|
test->offset = new_offset;
|
||||||
|
/* as we apply the offset on all timers, the order of timers won't
|
||||||
rtp_timer_queue_reschedule (priv->timers, test);
|
* change and we can skip updating the timer queue */
|
||||||
}
|
}
|
||||||
|
|
||||||
test = rtp_timer_get_next (test);
|
test = rtp_timer_get_next (test);
|
||||||
|
|
Loading…
Reference in a new issue