mirror of
https://github.com/livekit/livekit.git
synced 2026-04-27 08:35:26 +00:00
Fix missed update when subscribers are subscribing to the same layer (#310)
This commit is contained in:
+7
-15
@@ -915,25 +915,17 @@ func (t *MediaTrack) updateQualityChange() {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
t.allSubscribersMuted = false
|
||||
if maxSubscribedQuality != t.maxSubscribedQuality {
|
||||
if t.allSubscribersMuted || maxSubscribedQuality != t.maxSubscribedQuality {
|
||||
t.allSubscribersMuted = false
|
||||
notifyMaxExpected = true
|
||||
maxExpectedSpatialLayer = SpatialLayerForQuality(maxSubscribedQuality)
|
||||
|
||||
t.maxSubscribedQuality = maxSubscribedQuality
|
||||
|
||||
subscribedQualities = append(subscribedQualities, &livekit.SubscribedQuality{Quality: livekit.VideoQuality_LOW, Enabled: true})
|
||||
|
||||
if t.maxSubscribedQuality == livekit.VideoQuality_LOW {
|
||||
subscribedQualities = append(subscribedQualities, &livekit.SubscribedQuality{Quality: livekit.VideoQuality_MEDIUM, Enabled: false})
|
||||
} else {
|
||||
subscribedQualities = append(subscribedQualities, &livekit.SubscribedQuality{Quality: livekit.VideoQuality_MEDIUM, Enabled: true})
|
||||
}
|
||||
|
||||
if t.maxSubscribedQuality != livekit.VideoQuality_HIGH {
|
||||
subscribedQualities = append(subscribedQualities, &livekit.SubscribedQuality{Quality: livekit.VideoQuality_HIGH, Enabled: false})
|
||||
} else {
|
||||
subscribedQualities = append(subscribedQualities, &livekit.SubscribedQuality{Quality: livekit.VideoQuality_HIGH, Enabled: true})
|
||||
for q := livekit.VideoQuality_LOW; q <= livekit.VideoQuality_HIGH; q++ {
|
||||
subscribedQualities = append(subscribedQualities, &livekit.SubscribedQuality{
|
||||
Quality: q,
|
||||
Enabled: q <= t.maxSubscribedQuality,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -236,5 +236,14 @@ func TestSubscribedMaxQuality(t *testing.T) {
|
||||
}
|
||||
require.Equal(t, "v1", actualTrackID)
|
||||
require.EqualValues(t, expectedSubscribedQualities, actualSubscribedQualities)
|
||||
|
||||
// unmuting "s1" should enable previously set max quality
|
||||
mt.NotifySubscriberMaxQuality("s1", livekit.VideoQuality_LOW)
|
||||
expectedSubscribedQualities = []*livekit.SubscribedQuality{
|
||||
{Quality: livekit.VideoQuality_LOW, Enabled: true},
|
||||
{Quality: livekit.VideoQuality_MEDIUM, Enabled: false},
|
||||
{Quality: livekit.VideoQuality_HIGH, Enabled: false},
|
||||
}
|
||||
require.EqualValues(t, expectedSubscribedQualities, actualSubscribedQualities)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user