Ignore 0 RTT for nacker (#424)

- Propagate when a track is added
- Reduce scope of lock
This commit is contained in:
Raja Subramanian
2022-02-09 14:08:07 +05:30
committed by GitHub
parent 222b02aa73
commit f4f9df375f
2 changed files with 14 additions and 6 deletions

View File

@@ -318,7 +318,7 @@ func (b *Buffer) SetRTT(rtt uint32) {
b.stats.RTT = rtt
if b.nacker != nil {
if b.nacker != nil && rtt != 0 {
b.nacker.SetRTT(rtt)
}
}

View File

@@ -64,6 +64,7 @@ type WebRTCReceiver struct {
bufferMu sync.RWMutex
buffers [DefaultMaxLayerSpatial + 1]*buffer.Buffer
rtt uint32
upTrackMu sync.RWMutex
upTracks [DefaultMaxLayerSpatial + 1]*webrtc.TrackRemote
@@ -77,7 +78,6 @@ type WebRTCReceiver struct {
streamTrackerManager *StreamTrackerManager
rtt uint32
connectionStats *connectionquality.ConnectionStats
// update stats
@@ -187,17 +187,23 @@ func (w *WebRTCReceiver) GetConnectionScore() float32 {
}
func (w *WebRTCReceiver) SetRTT(rtt uint32) {
w.rtt = rtt
w.bufferMu.Lock()
if w.rtt == rtt {
w.bufferMu.Unlock()
return
}
w.bufferMu.RLock()
for _, buffer := range w.buffers {
w.rtt = rtt
buffers := w.buffers
w.bufferMu.Unlock()
for _, buffer := range buffers {
if buffer == nil {
continue
}
buffer.SetRTT(rtt)
}
w.bufferMu.RUnlock()
}
func (w *WebRTCReceiver) SetTrackMeta(trackID livekit.TrackID, streamID string) {
@@ -261,7 +267,9 @@ func (w *WebRTCReceiver) AddUpTrack(track *webrtc.TrackRemote, buff *buffer.Buff
w.bufferMu.Lock()
w.buffers[layer] = buff
rtt := w.rtt
w.bufferMu.Unlock()
buff.SetRTT(rtt)
if w.Kind() == webrtc.RTPCodecTypeVideo && w.useTrackers {
w.streamTrackerManager.AddTracker(layer)