diff --git a/pkg/config/config.go b/pkg/config/config.go index a3ceaa6fb..99787d08d 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -158,6 +158,7 @@ type StreamTrackerFrameConfig struct { } type StreamTrackerConfig struct { + StreamTrackerType StreamTrackerType `yaml:"stream_tracker_type,omitempty"` BitrateReportInterval map[int32]time.Duration `yaml:"bitrate_report_interval,omitempty"` ExemptedLayers []int32 `yaml:"exempted_layers,omitempty"` PacketTracker map[int32]StreamTrackerPacketConfig `yaml:"packet_tracker,omitempty"` @@ -171,7 +172,6 @@ type StreamTrackersConfig struct { type VideoConfig struct { DynacastPauseDelay time.Duration `yaml:"dynacast_pause_delay,omitempty"` - StreamTrackerType StreamTrackerType `yaml:"stream_tracker_type,omitempty"` StreamTracker StreamTrackersConfig `yaml:"stream_tracker,omitempty"` } @@ -285,9 +285,9 @@ func NewConfig(confString string, strictMode bool, c *cli.Context, baseFlags []c }, Video: VideoConfig{ DynacastPauseDelay: 5 * time.Second, - StreamTrackerType: StreamTrackerTypePacket, StreamTracker: StreamTrackersConfig{ Video: StreamTrackerConfig{ + StreamTrackerType: StreamTrackerTypePacket, BitrateReportInterval: map[int32]time.Duration{ 0: 1 * time.Second, 1: 1 * time.Second, @@ -324,6 +324,7 @@ func NewConfig(confString string, strictMode bool, c *cli.Context, baseFlags []c }, }, Screenshare: StreamTrackerConfig{ + StreamTrackerType: StreamTrackerTypePacket, BitrateReportInterval: map[int32]time.Duration{ 0: 4 * time.Second, 1: 4 * time.Second, diff --git a/pkg/rtc/mediatrack.go b/pkg/rtc/mediatrack.go index a370c3661..eedfa6184 100644 --- a/pkg/rtc/mediatrack.go +++ b/pkg/rtc/mediatrack.go @@ -234,7 +234,6 @@ func (t *MediaTrack) AddReceiver(receiver *webrtc.RTPReceiver, track *webrtc.Tra t.params.TrackInfo, LoggerWithCodecMime(t.params.Logger, mime), twcc, - t.params.VideoConfig.StreamTrackerType, t.params.VideoConfig.StreamTracker, sfu.WithPliThrottleConfig(t.params.PLIThrottleConfig), sfu.WithAudioConfig(t.params.AudioConfig), diff --git a/pkg/sfu/receiver.go b/pkg/sfu/receiver.go index 644f82329..772af1ca9 100644 --- a/pkg/sfu/receiver.go +++ b/pkg/sfu/receiver.go @@ -171,8 +171,7 @@ func NewWebRTCReceiver( trackInfo *livekit.TrackInfo, logger logger.Logger, twcc *twcc.Responder, - trackerType config.StreamTrackerType, - trackerConfig config.StreamTrackersConfig, + trackersConfig config.StreamTrackersConfig, opts ...ReceiverOpts, ) *WebRTCReceiver { w := &WebRTCReceiver{ @@ -190,7 +189,7 @@ func NewWebRTCReceiver( isRED: IsRedCodec(track.Codec().MimeType), } - w.streamTrackerManager = NewStreamTrackerManager(logger, trackInfo, w.isSVC, w.codec.ClockRate, trackerType, trackerConfig) + w.streamTrackerManager = NewStreamTrackerManager(logger, trackInfo, w.isSVC, w.codec.ClockRate, trackersConfig) w.streamTrackerManager.OnAvailableLayersChanged(w.downTrackLayerChange) w.streamTrackerManager.OnBitrateAvailabilityChanged(w.downTrackBitrateAvailabilityChange) diff --git a/pkg/sfu/streamtrackermanager.go b/pkg/sfu/streamtrackermanager.go index f4d278ab2..498fdd870 100644 --- a/pkg/sfu/streamtrackermanager.go +++ b/pkg/sfu/streamtrackermanager.go @@ -18,7 +18,6 @@ type StreamTrackerManager struct { maxPublishedLayer int32 clockRate uint32 - trackerType config.StreamTrackerType trackerConfig config.StreamTrackerConfig lock sync.RWMutex @@ -40,7 +39,6 @@ func NewStreamTrackerManager( trackInfo *livekit.TrackInfo, isSVC bool, clockRate uint32, - trackerType config.StreamTrackerType, trackersConfig config.StreamTrackersConfig, ) *StreamTrackerManager { s := &StreamTrackerManager{ @@ -49,7 +47,6 @@ func NewStreamTrackerManager( isSVC: isSVC, maxPublishedLayer: 0, clockRate: clockRate, - trackerType: trackerType, } switch s.trackInfo.Source { @@ -118,7 +115,7 @@ func (s *StreamTrackerManager) AddTracker(layer int32) *streamtracker.StreamTrac } var trackerImpl streamtracker.StreamTrackerImpl - switch s.trackerType { + switch s.trackerConfig.StreamTrackerType { case config.StreamTrackerTypePacket: trackerImpl = s.createStreamTrackerPacket(layer) case config.StreamTrackerTypeFrame: