From ac99cc6537e686a46dd8df1f5d4d752bbebc3c51 Mon Sep 17 00:00:00 2001 From: Thore Cimbal Date: Tue, 28 Jul 2026 23:08:11 +0200 Subject: [PATCH] fix: limit codec dropdown to codecs the SFU actually accepts Live-verified via matrix-rtc-sfu negotiation logs (2026-07-28): a real VP9 publish attempt got "falling back to alternative video codec" - enabledPublishCodecs was [VP8, H264, H265], no VP9/AV1. The client's backupCodec masked this (silent regression to VP8, no visible failure), but offering VP9/AV1 in the dropdown was misleading - selecting them has no real effect right now. Trimmed the dropdown to VP8/H264/H265 (added h265 as a real option - livekit-client's own VideoCodec type already supports it). Also fixed screenShareCodec's default, which was "vp9" (meaning every user who enabled the toggle without touching the codec dropdown was silently requesting an unsupported codec) - now "vp8" to match camera's default. --- src/settings/MediaQualitySettings.tsx | 9 +++++++-- src/settings/settings.ts | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/settings/MediaQualitySettings.tsx b/src/settings/MediaQualitySettings.tsx index 88936e96..d47e0b10 100644 --- a/src/settings/MediaQualitySettings.tsx +++ b/src/settings/MediaQualitySettings.tsx @@ -122,15 +122,20 @@ export const MediaQualitySettings: FC<{ + {/* Only list codecs the SFU actually accepts right now (confirmed + live via matrix-rtc-sfu negotiation logs, 2026-07-28 - + enabledPublishCodecs was [VP8, H264, H265]). VP9/AV1 are not + currently negotiated by the SFU - selecting them silently + falls back to VP8 via the client's backupCodec, so leaving + them out avoids offering a choice that has no real effect. */} diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 3c750b64..44dcf1b0 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -158,7 +158,7 @@ export const customLivekitUrl = new Setting( null, ); -export type VideoCodec = "vp8" | "vp9" | "h264" | "av1"; +export type VideoCodec = "vp8" | "vp9" | "h264" | "av1" | "h265"; /** * Parse a "WIDTHxHEIGHT" resolution string into numeric width and height. @@ -193,7 +193,7 @@ export const screenShareBitrate = new Setting( export const screenShareCodec = new Setting( "screen-share-codec", - "vp9", + "vp8", ); // Camera video quality settings