Need to return delta the new provisional layer takes. (#433)

This commit is contained in:
Raja Subramanian
2022-02-11 14:04:47 +05:30
committed by GitHub
parent f3a6f58006
commit c9cfb0d362
2 changed files with 9 additions and 3 deletions
+2 -2
View File
@@ -550,13 +550,13 @@ func (f *Forwarder) ProvisionalAllocate(availableChannelCapacity int64, layers V
if requiredBitrate <= (availableChannelCapacity + alreadyAllocatedBitrate) {
f.provisional.layers = layers
return requiredBitrate
return requiredBitrate - alreadyAllocatedBitrate
}
// when pause is disallowed, pick the layer if none allocated already or something lower is available
if !allowPause && (f.provisional.layers == InvalidLayers || !layers.GreaterThan(f.provisional.layers)) {
f.provisional.layers = layers
return requiredBitrate
return requiredBitrate - alreadyAllocatedBitrate
}
return 0
+7 -1
View File
@@ -362,8 +362,14 @@ func TestForwarderProvisionalAllocate(t *testing.T) {
usedBitrate := f.ProvisionalAllocate(bitrates[2][3], VideoLayers{spatial: 0, temporal: 0}, true)
require.Equal(t, bitrates[0][0], usedBitrate)
usedBitrate = f.ProvisionalAllocate(bitrates[2][3], VideoLayers{spatial: 2, temporal: 3}, true)
require.Equal(t, bitrates[2][3]-bitrates[0][0], usedBitrate)
usedBitrate = f.ProvisionalAllocate(bitrates[2][3], VideoLayers{spatial: 0, temporal: 3}, true)
require.Equal(t, bitrates[0][3]-bitrates[2][3], usedBitrate)
usedBitrate = f.ProvisionalAllocate(bitrates[2][3], VideoLayers{spatial: 1, temporal: 2}, true)
require.Equal(t, bitrates[1][2], usedBitrate)
require.Equal(t, bitrates[1][2]-bitrates[0][3], usedBitrate)
// available not enough to reach (2, 2), allocating at (2, 2) should not succeed
usedBitrate = f.ProvisionalAllocate(bitrates[2][2]-bitrates[1][2]-1, VideoLayers{spatial: 2, temporal: 2}, true)