mirror of
https://github.com/livekit/livekit.git
synced 2026-05-15 09:36:03 +00:00
Using tracker type per source type which allows diffferent impl for different sources (#1269)
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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),
|
||||
|
||||
+2
-3
@@ -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)
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user