Using tracker type per source type which allows diffferent impl for different sources (#1269)

This commit is contained in:
Raja Subramanian
2022-12-28 14:07:53 +05:30
committed by GitHub
parent 2b031a5112
commit 41a906ce92
4 changed files with 6 additions and 10 deletions
+3 -2
View File
@@ -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,
-1
View File
@@ -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
View File
@@ -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)
+1 -4
View File
@@ -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: