diff --git a/pkg/rtc/participant.go b/pkg/rtc/participant.go index 0c3481449..7cb7db17f 100644 --- a/pkg/rtc/participant.go +++ b/pkg/rtc/participant.go @@ -140,6 +140,7 @@ type ParticipantParams struct { SubscriptionLimitVideo int32 PlayoutDelay *livekit.PlayoutDelay SyncStreams bool + EnableTrafficLoadTracking bool } type ParticipantImpl struct { @@ -868,7 +869,9 @@ func (p *ParticipantImpl) Close(sendLeave bool, reason types.ParticipantCloseRea go func() { p.SubscriptionManager.Close(isExpectedToResume) p.TransportManager.Close() - p.ParticipantTrafficLoad.Close() + if p.ParticipantTrafficLoad != nil { + p.ParticipantTrafficLoad.Close() + } }() p.dataChannelStats.Stop() @@ -1383,11 +1386,13 @@ func (p *ParticipantImpl) setupSubscriptionManager() { } func (p *ParticipantImpl) setupParticipantTrafficLoad() { - p.ParticipantTrafficLoad = NewParticipantTrafficLoad(ParticipantTrafficLoadParams{ - Participant: p, - DataChannelStats: p.dataChannelStats, - Logger: p.params.Logger, - }) + if p.params.EnableTrafficLoadTracking { + p.ParticipantTrafficLoad = NewParticipantTrafficLoad(ParticipantTrafficLoadParams{ + Participant: p, + DataChannelStats: p.dataChannelStats, + Logger: p.params.Logger, + }) + } } func (p *ParticipantImpl) updateState(state livekit.ParticipantInfo_State) { diff --git a/pkg/rtc/participant_traffic_load.go b/pkg/rtc/participant_traffic_load.go index e0fa7a4e5..28f6867d1 100644 --- a/pkg/rtc/participant_traffic_load.go +++ b/pkg/rtc/participant_traffic_load.go @@ -62,6 +62,10 @@ func (p *ParticipantTrafficLoad) Close() { } func (p *ParticipantTrafficLoad) OnTrafficLoad(f func(trafficLoad *types.TrafficLoad)) { + if p == nil { + return + } + p.lock.Lock() p.onTrafficLoad = f p.lock.Unlock() @@ -75,6 +79,10 @@ func (p *ParticipantTrafficLoad) getOnTrafficLoad() func(trafficLoad *types.Traf } func (p *ParticipantTrafficLoad) GetTrafficLoad() *types.TrafficLoad { + if p == nil { + return nil + } + p.lock.RLock() defer p.lock.RUnlock() diff --git a/pkg/sfu/buffer/rtpstats_base.go b/pkg/sfu/buffer/rtpstats_base.go index 0b5139b37..eba2425b9 100644 --- a/pkg/sfu/buffer/rtpstats_base.go +++ b/pkg/sfu/buffer/rtpstats_base.go @@ -530,6 +530,7 @@ func (r *rtpStatsBase) maybeAdjustFirstPacketTime(srData *RTCPSenderReportData, "extNowTS", extNowTS, "extStartTS", extStartTS, "srData", srData, + "tsOffset", tsOffset, "timeSinceReceive", timeSinceReceive.String(), "timeSinceFirst", timeSinceFirst.String(), "samplesDiff", samplesDiff,