From 1993c87fd8b05f3df94c6ae48b1d4e411d5f9d79 Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Thu, 1 Aug 2024 22:08:53 +0530 Subject: [PATCH] Do not force rollover if ts rollover is not active. (#2899) There are cases of small negative sequence number jump and small positive time stamp jump. Those should not force rollover. Maybe, they should be dropped, but just logging for now till we learn more. --- pkg/sfu/buffer/rtpstats_receiver.go | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/pkg/sfu/buffer/rtpstats_receiver.go b/pkg/sfu/buffer/rtpstats_receiver.go index 46fa77331..8944b96ba 100644 --- a/pkg/sfu/buffer/rtpstats_receiver.go +++ b/pkg/sfu/buffer/rtpstats_receiver.go @@ -259,18 +259,25 @@ func (r *RTPStatsReceiver) Update( // it is possible that sequence number has rolled over too if gapSN < 0 && gapTS > 0 && payloadSize > 0 { - // not possible to know how many cycles of sequence number roll over could have happened, - // use 1 to ensure that it at least does not go backwards - resSN = r.sequenceNumber.Rollover(sequenceNumber, 1) - if resSN.IsUnhandled { - flowState.IsNotHandled = true - return - } + if tsRolloverCount >= 0 { + // not possible to know how many cycles of sequence number roll over could have happened, + // use 1 to ensure that it at least does not go backwards + resSN = r.sequenceNumber.Rollover(sequenceNumber, 1) + if resSN.IsUnhandled { + flowState.IsNotHandled = true + return + } - r.logger.Warnw( - "forcing sequence number rollover", nil, - getLoggingFields()..., - ) + r.logger.Warnw( + "forcing sequence number rollover", nil, + getLoggingFields()..., + ) + } else { + r.logger.Warnw( + "forcing sequence number rollover skipped", nil, + getLoggingFields()..., + ) + } } } gapSN = int64(resSN.ExtendedVal - resSN.PreExtendedHighest)