From d64247d12dfd458e79046631e94a89b979b496ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?= Date: Sat, 21 Mar 2020 21:03:11 +0100 Subject: [PATCH] Expose simulcast settings to client config --- app/public/config/config.example.js | 14 +++++++++++++- app/src/RoomClient.js | 25 ++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/app/public/config/config.example.js b/app/public/config/config.example.js index a375cbb..6d78565 100644 --- a/app/public/config/config.example.js +++ b/app/public/config/config.example.js @@ -22,7 +22,19 @@ var config = * veryhigh ~ 1920x1080 * ultra ~ 3840x2560 **/ - defaultResolution : 'medium', + defaultResolution : 'medium', + // Enable or disable simulcast for webcam video + simulcast : true, + // Enable or disable simulcast for screen sharing video + simulcastSharing : false, + // Simulcast encoding layers and levels + simulcastEncodings : + [ + { scaleResolutionDownBy: 4 }, + { scaleResolutionDownBy: 2 }, + { scaleResolutionDownBy: 1 } + ], + // Socket.io request timeout requestTimeout : 10000, transportOptions : { diff --git a/app/src/RoomClient.js b/app/src/RoomClient.js index 1efcab2..f5693ae 100644 --- a/app/src/RoomClient.js +++ b/app/src/RoomClient.js @@ -157,9 +157,15 @@ export default class RoomClient // Whether simulcast should be used. this._useSimulcast = useSimulcast; + if ('simulcast' in window.config) + this._useSimulcast = window.config.simulcast; + // Whether simulcast should be used for sharing this._useSharingSimulcast = useSharingSimulcast; + if ('simulcastSharing' in window.config) + this._useSharingSimulcast = window.config.simulcastSharing; + this._muted = muted; // This device @@ -2574,8 +2580,16 @@ export default class RoomClient } else { - encodings = VIDEO_SIMULCAST_ENCODINGS - .map((encoding) => ({ ...encoding, dtx: true })); + if ('simulcastEncodings' in window.config) + { + encodings = window.config.simulcastEncodings + .map((encoding) => ({ ...encoding, dtx: true })); + } + else + { + encodings = VIDEO_SIMULCAST_ENCODINGS + .map((encoding) => ({ ...encoding, dtx: true })); + } } this._screenSharingProducer = await this._sendTransport.produce( @@ -2743,7 +2757,12 @@ export default class RoomClient if (firstVideoCodec.mimeType.toLowerCase() === 'video/vp9') encodings = VIDEO_KSVC_ENCODINGS; else - encodings = VIDEO_SIMULCAST_ENCODINGS; + { + if ('simulcastEncodings' in window.config) + encodings = window.config.simulcastEncodings; + else + encodings = VIDEO_SIMULCAST_ENCODINGS; + } this._webcamProducer = await this._sendTransport.produce( {