Prevent multiple debounce of quality downgrade. (#2499)

This commit is contained in:
Raja Subramanian
2024-02-22 02:04:13 +05:30
committed by GitHub
parent 6895eff496
commit f3e02d5132

View File

@@ -40,7 +40,8 @@ type DynacastManager struct {
maxSubscribedQuality map[string]livekit.VideoQuality
committedMaxSubscribedQuality map[string]livekit.VideoQuality
maxSubscribedQualityDebounce func(func())
maxSubscribedQualityDebounce func(func())
maxSubscribedQualityDebouncePending bool
qualityNotifyOpQueue *utils.OpsQueue
@@ -223,13 +224,21 @@ func (d *DynacastManager) update(force bool) {
}
if downgradesOnly {
d.params.Logger.Debugw("debouncing quality downgrade",
"committedMaxSubscribedQuality", d.committedMaxSubscribedQuality,
"maxSubscribedQuality", d.maxSubscribedQuality,
)
d.maxSubscribedQualityDebounce(func() {
d.update(true)
})
if !d.maxSubscribedQualityDebouncePending {
d.params.Logger.Debugw("debouncing quality downgrade",
"committedMaxSubscribedQuality", d.committedMaxSubscribedQuality,
"maxSubscribedQuality", d.maxSubscribedQuality,
)
d.maxSubscribedQualityDebounce(func() {
d.update(true)
})
d.maxSubscribedQualityDebouncePending = true
} else {
d.params.Logger.Debugw("quality downgrade waiting for debounce",
"committedMaxSubscribedQuality", d.committedMaxSubscribedQuality,
"maxSubscribedQuality", d.maxSubscribedQuality,
)
}
d.lock.Unlock()
return
}
@@ -237,6 +246,7 @@ func (d *DynacastManager) update(force bool) {
// clear debounce on send
d.maxSubscribedQualityDebounce(func() {})
d.maxSubscribedQualityDebouncePending = false
d.params.Logger.Debugw("committing quality change",
"force", force,