From a54dd9084a53f5cee95691269ca630fadd421c77 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Tue, 24 Mar 2026 01:06:19 +0100 Subject: [PATCH] feat: show encoder implementation in Connection Info, VP9 recommended hint - Connection Info now shows encoder impl (e.g. libvpx, OpenH264, ExternalEncoder) on send-side video tracks alongside quality limitation reason - Amber warning "VP9 is recommended" when H.264 is selected --- .../src/components/voice/ConnectionInfoPopover.tsx | 11 +++++++---- .../components/voice/ScreenShareSettingsPopover.tsx | 5 +++++ packages/web/src/hooks/useTrackStats.ts | 3 +++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/web/src/components/voice/ConnectionInfoPopover.tsx b/packages/web/src/components/voice/ConnectionInfoPopover.tsx index 59bbcb42..a7134026 100644 --- a/packages/web/src/components/voice/ConnectionInfoPopover.tsx +++ b/packages/web/src/components/voice/ConnectionInfoPopover.tsx @@ -93,16 +93,19 @@ function VideoTrackRow({ track }: { track: VideoTrackStat }) { {track.codec && {track.codec}} - {(resolution || track.fps !== null || track.qualityLimitation || track.simulcastLayer) && ( + {(resolution || track.fps !== null || track.qualityLimitation || track.simulcastLayer || track.encoderImpl) && (
{resolution && `${resolution}`} {track.fps !== null && ` @${track.fps}`} - {track.direction === 'send' && track.qualityLimitation && track.qualityLimitation !== 'none' - ? track.qualityLimitation - : ''} + {track.direction === 'send' && (() => { + const parts: string[] = []; + if (track.encoderImpl) parts.push(track.encoderImpl); + if (track.qualityLimitation && track.qualityLimitation !== 'none') parts.push(track.qualityLimitation); + return parts.join(' ยท ') || null; + })()} {track.direction === 'recv' && track.simulcastLayer ? track.simulcastLayer : ''} diff --git a/packages/web/src/components/voice/ScreenShareSettingsPopover.tsx b/packages/web/src/components/voice/ScreenShareSettingsPopover.tsx index 25443eb5..c514a3a3 100644 --- a/packages/web/src/components/voice/ScreenShareSettingsPopover.tsx +++ b/packages/web/src/components/voice/ScreenShareSettingsPopover.tsx @@ -199,6 +199,11 @@ export function ScreenShareSettingsPopover({ open, onClose, anchorRef }: ScreenS ))}
+ {config.codec !== 'vp9' && ( +
+ VP9 is recommended for most setups +
+ )} {/* Bitrate Override */} diff --git a/packages/web/src/hooks/useTrackStats.ts b/packages/web/src/hooks/useTrackStats.ts index d37f9b7b..ac80ba7a 100644 --- a/packages/web/src/hooks/useTrackStats.ts +++ b/packages/web/src/hooks/useTrackStats.ts @@ -26,6 +26,7 @@ export interface VideoTrackStat { participantName: string | null; bitrate: number; codec: string | null; + encoderImpl: string | null; width: number | null; height: number | null; fps: number | null; @@ -362,6 +363,7 @@ export function useTrackStats(enabled: boolean): TrackStatsSnapshot | null { participantName: null, bitrate, codec, + encoderImpl: report.encoderImplementation ?? null, width, height, fps, @@ -493,6 +495,7 @@ export function useTrackStats(enabled: boolean): TrackStatsSnapshot | null { participantName: identity.participantName, bitrate, codec, + encoderImpl: null, width, height, fps,