diff --git a/CHANGELOG.md b/CHANGELOG.md index 246e774e70..aaba590d4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed ### Changed +- Do not try to manually adjust SVC layers based off target resolution, as this may lead to an unnecessarily high minimum bitrate to subscribe to all remote videos. Instead rely on browser logic which drops any layers below around 135p. ### Fixed diff --git a/docs/classes/nscalevideouplinkbandwidthpolicy.html b/docs/classes/nscalevideouplinkbandwidthpolicy.html index c6bac793fd..548b905412 100644 --- a/docs/classes/nscalevideouplinkbandwidthpolicy.html +++ b/docs/classes/nscalevideouplinkbandwidthpolicy.html @@ -415,7 +415,7 @@

setMeetingSupportedVideoSendCodecs

@@ -622,7 +622,7 @@

wantsVideoDependencyDescriptorRtpHeaderExtensi
diff --git a/src/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.ts b/src/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.ts index c8f31455a2..24aff63fe3 100644 --- a/src/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.ts +++ b/src/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.ts @@ -264,7 +264,8 @@ export default class NScaleVideoUplinkBandwidthPolicy implements VideoUplinkBand if ((this.numParticipants >= 0 && this.numParticipants < 3) || !this.isUsingSVCCodec) { scalabilityMode = 'L1T1'; } else { - scalabilityMode = targetHeight >= 720 ? 'L3T3' : targetHeight >= 360 ? 'L2T3' : 'L1T3'; + // We do not limit the number of layers depending on input resolution, however Chrome will drop anything below around 135p. + scalabilityMode = 'L3T3'; } this.logger?.info( `calculateEncodingParameters: SVC: ${this.enableSVC} participants: ${ diff --git a/test/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.test.ts b/test/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.test.ts index 79f05e82d2..a3fe1f9746 100644 --- a/test/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.test.ts +++ b/test/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.test.ts @@ -898,40 +898,6 @@ describe('NScaleVideoUplinkBandwidthPolicy', () => { expect(policy.optimalParameters.isSVCEncoding()).to.be.true; }); - it('Degrade to L2T3 scalability mode if target height is between 360 and 720', () => { - policy.setTransceiverController(transceiverController); - // @ts-ignore - policy.isUsingSVCCodec = false; - // @ts-ignore - policy.numParticipants = 10; - // @ts-ignore - policy.numberOfPublishedVideoSources = 8; - policy.setSVCEnabled(true); - policy.setMeetingSupportedVideoSendCodecs( - [VideoCodecCapability.vp9Profile0()], - [VideoCodecCapability.vp9Profile0(), VideoCodecCapability.h264ConstrainedBaselineProfile()] - ); - // @ts-ignore - expect(policy.optimalParameters.isSVCEncoding()).to.be.true; - }); - - it('Degrade to L1T3 scalability mode if target height is below 360', () => { - policy.setTransceiverController(transceiverController); - // @ts-ignore - policy.isUsingSVCCodec = false; - // @ts-ignore - policy.numParticipants = 16; - // @ts-ignore - policy.numberOfPublishedVideoSources = 14; - policy.setSVCEnabled(true); - policy.setMeetingSupportedVideoSendCodecs( - [VideoCodecCapability.vp9Profile0()], - [VideoCodecCapability.vp9Profile0(), VideoCodecCapability.h264ConstrainedBaselineProfile()] - ); - // @ts-ignore - expect(policy.optimalParameters.isSVCEncoding()).to.be.true; - }); - it('Enables SVC when SVC is enabled, even if logger is not defined', () => { policy = new NScaleVideoUplinkBandwidthPolicy(selfAttendeeId, true); policy.setTransceiverController(transceiverController);