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,