diff --git a/pkg/sfu/forwarder.go b/pkg/sfu/forwarder.go index 7e378ad20..8e2786c08 100644 --- a/pkg/sfu/forwarder.go +++ b/pkg/sfu/forwarder.go @@ -2014,7 +2014,7 @@ func (f *Forwarder) processSourceSwitch(extPkt *buffer.ExtPacket, layer int32) ( } if f.rtpStats != nil { - tsExt, err := f.rtpStats.GetExpectedRTPTimestamp(switchingAt) + tsExt, err := f.rtpStats.GetExpectedRTPTimestamp(switchingAt.UnixNano()) if err == nil { extExpectedTS = tsExt if f.lastReferencePayloadType == -1 { @@ -2453,7 +2453,7 @@ func (f *Forwarder) GetSnTsForBlankFrames(frameRate uint32, numPackets int) ([]S extLastTS := f.rtpMunger.GetExtLastTimestamp() extExpectedTS := extLastTS if f.rtpStats != nil { - tsExt, err := f.rtpStats.GetExpectedRTPTimestamp(mono.Now()) + tsExt, err := f.rtpStats.GetExpectedRTPTimestamp(mono.UnixNano()) if err == nil { extExpectedTS = tsExt } diff --git a/pkg/sfu/rtpstats/rtpstats_sender.go b/pkg/sfu/rtpstats/rtpstats_sender.go index eafa7bc7b..578a4a067 100644 --- a/pkg/sfu/rtpstats/rtpstats_sender.go +++ b/pkg/sfu/rtpstats/rtpstats_sender.go @@ -901,7 +901,7 @@ func (r *RTPStatsSender) MaybeAdjustFirstPacketTime(publisherSRData *livekit.RTC } } -func (r *RTPStatsSender) GetExpectedRTPTimestamp(at time.Time) (expectedTSExt uint64, err error) { +func (r *RTPStatsSender) GetExpectedRTPTimestamp(atNano int64) (expectedTSExt uint64, err error) { r.lock.RLock() defer r.lock.RUnlock() @@ -910,7 +910,7 @@ func (r *RTPStatsSender) GetExpectedRTPTimestamp(at time.Time) (expectedTSExt ui return } - timeDiff := at.Sub(time.Unix(0, r.firstTime)) + timeDiff := time.Duration(atNano - r.firstTime) expectedTSExt = r.extStartTS + r.rtpConverter.ToRTPExt(timeDiff) return }