From f9f7dd158fceab010a22ea64c195ede9a3af3c8f Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Sat, 21 Mar 2026 23:33:30 +0100 Subject: [PATCH] feat: guard applyConstraints for native mode in useLiveKit --- packages/web/src/hooks/useLiveKit.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/web/src/hooks/useLiveKit.ts b/packages/web/src/hooks/useLiveKit.ts index 3a7500ba..8dd02b8b 100644 --- a/packages/web/src/hooks/useLiveKit.ts +++ b/packages/web/src/hooks/useLiveKit.ts @@ -27,6 +27,7 @@ import { startScreenShare, stopScreenShare, handleScreenShareUnpublished, + resolveNativeOverdrive, } from '../utils/screenShare'; import { getMediaStreamTrack } from '../utils/livekitInternals'; @@ -611,9 +612,14 @@ export function useLiveKit() { if (screenPub?.videoTrack) { const mediaTrack = getMediaStreamTrack(screenPub.videoTrack); if (mediaTrack) { - await mediaTrack.applyConstraints({ width: { ideal: opts.capture.width }, height: { ideal: opts.capture.height }, frameRate: { ideal: opts.capture.frameRate } }); + // Skip resolution constraints for native mode — capture is already at native dims + if (opts.capture.width > 0 && opts.capture.height > 0) { + await mediaTrack.applyConstraints({ width: { ideal: opts.capture.width }, height: { ideal: opts.capture.height }, frameRate: { ideal: opts.capture.frameRate } }); + } mediaTrack.contentHint = opts.contentHint; } + // For native mode, recompute overdrive bitrate from actual track dimensions + resolveNativeOverdrive(mediaTrack ?? null, screenShareConfig, opts); await applyOverdrive(room, Track.Source.ScreenShare, opts.overdrive); } }