fix: limit codec dropdown to codecs the SFU actually accepts
Build / build_full_element_call (push) Canceled after 0s
Build / build_embedded_element_call (push) Canceled after 0s
Build / build_sdk_element_call (push) Canceled after 0s
Build / Build Storybook (push) Canceled after 0s
Build & publish embedded packages for releases / Versioning (push) Canceled after 0s
Test / Run unit tests (push) Canceled after 0s
Test / Run end-to-end tests (push) Canceled after 0s
Upload translation files to Localazy / upload (push) Canceled after 0s
GitHub Actions Security Analysis with zizmor 🌈 / Run zizmor 🌈 (push) Canceled after 0s
Build / deploy_develop (push) Canceled after 0s
Build / docker_for_develop (push) Canceled after 0s
Build & publish embedded packages for releases / build_element_call (push) Canceled after 0s
Build & publish embedded packages for releases / Publish tarball (push) Canceled after 0s
Build & publish embedded packages for releases / Publish NPM (push) Canceled after 0s
Build & publish embedded packages for releases / Publish Android AAR (push) Canceled after 0s
Build & publish embedded packages for releases / Publish SwiftPM Library (push) Canceled after 0s
Build & publish embedded packages for releases / Update release notes (push) Canceled after 0s
Build Element Call / Build Element Call (push) Canceled after 0s

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.
This commit is contained in:
Thore Cimbal
2026-07-28 23:08:11 +02:00
parent f13c4b43cd
commit ac99cc6537
2 changed files with 9 additions and 4 deletions
+7 -2
View File
@@ -122,15 +122,20 @@ export const MediaQualitySettings: FC<{
<label htmlFor={`${id}Codec`}>
{t("settings.codec_label", "Codec")}
</label>
{/* 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. */}
<select
id={`${id}Codec`}
value={codec}
onChange={(e): void => setCodec(e.target.value as VideoCodec)}
>
<option value="vp8">VP8</option>
<option value="vp9">VP9</option>
<option value="h264">H.264</option>
<option value="av1">AV1</option>
<option value="h265">H.265</option>
</select>
</div>
</>
+2 -2
View File
@@ -158,7 +158,7 @@ export const customLivekitUrl = new Setting<string | null>(
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<number>(
export const screenShareCodec = new Setting<VideoCodec>(
"screen-share-codec",
"vp9",
"vp8",
);
// Camera video quality settings