From 9f4fbab03f35b5f34231420ac167d2c15de19c3b Mon Sep 17 00:00:00 2001 From: Eduard Kuzmenko Date: Fri, 11 Feb 2022 21:10:04 +0400 Subject: [PATCH] Some tweaks --- src/lib/calls/groupCallConnectionInstance.ts | 13 +++++++++++++ src/lib/calls/helpers/getScreenStream.ts | 2 ++ src/lib/calls/streamManager.ts | 20 ++++++++++++++++++-- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/lib/calls/groupCallConnectionInstance.ts b/src/lib/calls/groupCallConnectionInstance.ts index 7ddd6c3a..0f32ed90 100644 --- a/src/lib/calls/groupCallConnectionInstance.ts +++ b/src/lib/calls/groupCallConnectionInstance.ts @@ -308,6 +308,19 @@ export default class GroupCallConnectionInstance extends CallConnectionInstanceB }); } + if(this.options.type === 'presentation') { + promise.then(() => { + this.connection.getTransceivers().find(transceiver => { + if(transceiver.sender?.track?.kind === 'video') { + transceiver.sender.setParameters({ + ...transceiver.sender.getParameters(), + degradationPreference: 'maintain-resolution' + }); + } + }); + }); + } + return promise; } diff --git a/src/lib/calls/helpers/getScreenStream.ts b/src/lib/calls/helpers/getScreenStream.ts index de653872..41328bac 100644 --- a/src/lib/calls/helpers/getScreenStream.ts +++ b/src/lib/calls/helpers/getScreenStream.ts @@ -1,4 +1,6 @@ export default async function getScreenStream(constraints: DisplayMediaStreamConstraints) { const screenStream = await navigator.mediaDevices.getDisplayMedia(constraints); + const track = screenStream.getVideoTracks()[0]; + track.contentHint = 'text'; return screenStream; } diff --git a/src/lib/calls/streamManager.ts b/src/lib/calls/streamManager.ts index c03ac195..fb4e39be 100644 --- a/src/lib/calls/streamManager.ts +++ b/src/lib/calls/streamManager.ts @@ -266,9 +266,18 @@ export default class StreamManager { // const direction: RTCRtpTransceiverInit['direction'] = 'sendrecv'; // const direction: RTCRtpTransceiverInit['direction'] = 'sendonly'; const transceiverInit: RTCRtpTransceiverInit = {direction, streams: [inputStream]}; + const transceiverAudioInit: RTCRtpTransceiverInit = {...transceiverInit}; + const transceiverVideoInit: RTCRtpTransceiverInit = {...transceiverInit}; + + // if(this.isScreenSharingManager) { + // transceiverVideoInit.sendEncodings = [{}]; + // } else { + // transceiverVideoInit.sendEncodings = [{maxBitrate: 2500000}]; + // } + const types: ['audio' | 'video', RTCRtpTransceiverInit][] = [ - ['audio' as const, transceiverInit], - ['video' as const, transceiverInit/* {sendEncodings: [{maxBitrate: 2500000}], ...transceiverInit} */] + ['audio' as const, transceiverAudioInit], + ['video' as const, transceiverVideoInit] ]; const tracks = inputStream.getTracks(); @@ -290,6 +299,13 @@ export default class StreamManager { let {transceiver} = entry; if(!transceiver) { transceiver = entry.createTransceiver(conference.connection, transceiverInit); + + /* if(this.isScreenSharingManager) { + transceiver.sender.setParameters({ + ...transceiver.sender.getParameters(), + degradationPreference: 'maintain-resolution' + }); + } */ } if(entry.direction !== transceiver.direction) {