mirror of
https://github.com/livekit/livekit.git
synced 2026-04-13 06:45:40 +00:00
Only change committed quality in update. (#917)
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user