From 579f76cf7ce219ba90bef67ad877b48ff48dad68 Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Sat, 31 Aug 2024 11:36:49 +0530 Subject: [PATCH] Use 0 rollover when possible. (#2968) --- pkg/sfu/buffer/rtpstats_receiver.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/sfu/buffer/rtpstats_receiver.go b/pkg/sfu/buffer/rtpstats_receiver.go index b910c5d37..71360ea8e 100644 --- a/pkg/sfu/buffer/rtpstats_receiver.go +++ b/pkg/sfu/buffer/rtpstats_receiver.go @@ -148,6 +148,7 @@ func (r *RTPStatsReceiver) Update( var timeSinceHighest int64 var expectedTSJump int64 var tsRolloverCount int + var snRolloverCount int getLoggingFields := func() []interface{} { return []interface{}{ @@ -156,6 +157,7 @@ func (r *RTPStatsReceiver) Update( "resTS", resTS, "gapTS", int64(resTS.ExtendedVal - resTS.PreExtendedHighest), "timeSinceHighest", time.Duration(timeSinceHighest), + "snRolloverCount", snRolloverCount, "expectedTSJump", expectedTSJump, "tsRolloverCount", tsRolloverCount, "packetTime", time.Unix(0, packetTime).String(), @@ -258,8 +260,12 @@ 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) + // ensure that it at least does not go backwards + snRolloverCount = 0 + if sequenceNumber < r.sequenceNumber.GetHighest() { + snRolloverCount = 1 + } + resSN = r.sequenceNumber.Rollover(sequenceNumber, snRolloverCount) if resSN.IsUnhandled { flowState.IsNotHandled = true return