diff --git a/ts/components/CallingPipRemoteVideo.dom.tsx b/ts/components/CallingPipRemoteVideo.dom.tsx index e372a67e8c..05d429cb6e 100644 --- a/ts/components/CallingPipRemoteVideo.dom.tsx +++ b/ts/components/CallingPipRemoteVideo.dom.tsx @@ -167,7 +167,11 @@ export function CallingPipRemoteVideo({ } return nonRenderedRemoteParticipant(participant); }); - setGroupCallVideoRequest(participants, newHeight); + setGroupCallVideoRequest( + participants, + // When there's a presenter, we do not want the SFU to prioritize the speaker feed + activeGroupCallSpeaker.presenting ? 0 : newHeight + ); } else { setGroupCallVideoRequest( activeCall.remoteParticipants.map(nonRenderedRemoteParticipant), diff --git a/ts/components/GroupCallRemoteParticipants.dom.tsx b/ts/components/GroupCallRemoteParticipants.dom.tsx index 1a1fa83c8c..39efe15b2c 100644 --- a/ts/components/GroupCallRemoteParticipants.dom.tsx +++ b/ts/components/GroupCallRemoteParticipants.dom.tsx @@ -220,6 +220,10 @@ export function GroupCallRemoteParticipants({ prioritySortedParticipants, ]); + const isSomeonePresenting = + prioritySortedParticipants.length && + prioritySortedParticipants[0].presenting; + // Make sure we're not on a page that no longer exists (e.g. if people left the call) if ( pageIndex >= gridParticipantsByPage.length && @@ -457,7 +461,10 @@ export function GroupCallRemoteParticipants({ } setGroupCallVideoRequest( videoRequest, - clamp(gridParticipantHeight, 0, MAX_FRAME_HEIGHT) + // When there's a presenter, we do not want the SFU to prioritize the speaker + isSomeonePresenting + ? 0 + : clamp(gridParticipantHeight, 0, MAX_FRAME_HEIGHT) ); }, [ devicePixelRatio, @@ -469,6 +476,7 @@ export function GroupCallRemoteParticipants({ setGroupCallVideoRequest, videoRequestMode, participantsOnOtherPages, + isSomeonePresenting, ]); return (