Fix DD tracker addition. (#2751)

DD uses a wrapped tracker. Check only stream tracker manager field for
existing tracker.
This commit is contained in:
Raja Subramanian
2024-06-03 12:14:42 +05:30
committed by GitHub
parent e483cee662
commit b7ea733492

View File

@@ -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) {