Only change committed quality in update. (#917)

This commit is contained in:
Raja Subramanian
2022-08-15 17:29:52 +05:30
committed by GitHub
parent c38d4df52f
commit eaaec0aae1
2 changed files with 9 additions and 21 deletions

View File

@@ -58,13 +58,14 @@ func (d *DynacastManager) AddCodec(mime string) {
}
func (d *DynacastManager) Restart() {
d.lock.RLock()
d.lock.Lock()
d.committedMaxSubscribedQuality = make(map[string]livekit.VideoQuality)
dqs := d.getDynacastQualitiesLocked()
d.lock.RUnlock()
d.lock.Unlock()
for _, dq := range dqs {
dq.Restart()
d.committedMaxSubscribedQuality[dq.MimeType()] = dq.MaxSubscribedQuality()
}
}
@@ -149,7 +150,6 @@ func (d *DynacastManager) getOrCreateDynacastQuality(mime string) *DynacastQuali
dq.Start()
d.dynacastQuality[mime] = dq
d.committedMaxSubscribedQuality[mime] = dq.MaxSubscribedQuality()
return dq
}

View File

@@ -57,17 +57,6 @@ func (d *DynacastQuality) OnSubscribedMaxQualityChange(f func(maxSubscribedQuali
d.onSubscribedMaxQualityChange = f
}
func (d *DynacastQuality) MimeType() string {
return d.params.MimeType
}
func (d *DynacastQuality) MaxSubscribedQuality() livekit.VideoQuality {
d.lock.RLock()
defer d.lock.RUnlock()
return d.maxSubscribedQuality
}
func (d *DynacastQuality) NotifySubscriberMaxQuality(subscriberID livekit.ParticipantID, quality livekit.VideoQuality) {
d.lock.Lock()
if quality == livekit.VideoQuality_OFF {
@@ -77,7 +66,7 @@ func (d *DynacastQuality) NotifySubscriberMaxQuality(subscriberID livekit.Partic
}
d.lock.Unlock()
d.updateQualityChange()
d.updateQualityChange(false)
}
func (d *DynacastQuality) NotifySubscriberNodeMaxQuality(nodeID livekit.NodeID, quality livekit.VideoQuality) {
@@ -89,19 +78,18 @@ func (d *DynacastQuality) NotifySubscriberNodeMaxQuality(nodeID livekit.NodeID,
}
d.lock.Unlock()
d.updateQualityChange()
d.updateQualityChange(false)
}
func (d *DynacastQuality) reset() {
d.lock.Lock()
d.initialized = false
d.maxSubscribedQuality = livekit.VideoQuality_HIGH
d.lock.Unlock()
d.startMaxQualityTimer()
}
func (d *DynacastQuality) updateQualityChange() {
func (d *DynacastQuality) updateQualityChange(force bool) {
d.lock.Lock()
maxSubscribedQuality := livekit.VideoQuality_OFF
for _, subQuality := range d.maxSubscriberQuality {
@@ -115,7 +103,7 @@ func (d *DynacastQuality) updateQualityChange() {
}
}
if maxSubscribedQuality == d.maxSubscribedQuality && d.initialized {
if maxSubscribedQuality == d.maxSubscribedQuality && d.initialized && !force {
d.lock.Unlock()
return
}
@@ -147,7 +135,7 @@ func (d *DynacastQuality) startMaxQualityTimer() {
d.maxQualityTimer = time.AfterFunc(initialQualityUpdateWait, func() {
d.stopMaxQualityTimer()
d.updateQualityChange()
d.updateQualityChange(true)
})
}