From b7ea733492a2fd33285875dfb539f9c3cc0ecdc0 Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Mon, 3 Jun 2024 12:14:42 +0530 Subject: [PATCH] Fix DD tracker addition. (#2751) DD uses a wrapped tracker. Check only stream tracker manager field for existing tracker. --- pkg/sfu/streamtrackermanager.go | 45 ++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/pkg/sfu/streamtrackermanager.go b/pkg/sfu/streamtrackermanager.go index 5f12e85c2..d4bf08f44 100644 --- a/pkg/sfu/streamtrackermanager.go +++ b/pkg/sfu/streamtrackermanager.go @@ -170,37 +170,40 @@ func (s *StreamTrackerManager) AddDependencyDescriptorTrackers() { func (s *StreamTrackerManager) AddTracker(layer int32) streamtracker.StreamTrackerWorker { var tracker streamtracker.StreamTrackerWorker s.lock.Lock() - if s.ddTracker != nil { - tracker = s.ddTracker.LayeredTracker(layer) - } else { - tracker = s.trackers[layer] - } - s.lock.Unlock() + tracker = s.trackers[layer] if tracker != nil { + s.lock.Unlock() return tracker } + if s.ddTracker != nil { + tracker = s.ddTracker.LayeredTracker(layer) + } + s.lock.Unlock() + bitrateInterval, ok := s.trackerConfig.BitrateReportInterval[layer] if !ok { return nil } - var trackerImpl streamtracker.StreamTrackerImpl - switch s.trackerConfig.StreamTrackerType { - case config.StreamTrackerTypePacket: - trackerImpl = s.createStreamTrackerPacket(layer) - case config.StreamTrackerTypeFrame: - trackerImpl = s.createStreamTrackerFrame(layer) - } - if trackerImpl == nil { - return nil - } + if tracker == nil { + var trackerImpl streamtracker.StreamTrackerImpl + switch s.trackerConfig.StreamTrackerType { + case config.StreamTrackerTypePacket: + trackerImpl = s.createStreamTrackerPacket(layer) + case config.StreamTrackerTypeFrame: + trackerImpl = s.createStreamTrackerFrame(layer) + } + if trackerImpl == nil { + return nil + } - tracker = streamtracker.NewStreamTracker(streamtracker.StreamTrackerParams{ - StreamTrackerImpl: trackerImpl, - BitrateReportInterval: bitrateInterval, - Logger: s.logger.WithValues("layer", layer), - }) + tracker = streamtracker.NewStreamTracker(streamtracker.StreamTrackerParams{ + StreamTrackerImpl: trackerImpl, + BitrateReportInterval: bitrateInterval, + Logger: s.logger.WithValues("layer", layer), + }) + } s.logger.Debugw("stream tracker add track", "layer", layer) tracker.OnStatusChanged(func(status streamtracker.StreamStatus) {