Disable AV1 for firefox (#5015)

* Disable AV1 for firefox

* test
This commit is contained in:
cnderrauber authored and GitHub committed 2026-10-15 09:28:42 +08:00
1 parent 0b58164597
commit 3d45aa2e87
2 files changed
+4 -11

No files matched your search

+3 -6
View File
@@ -49,13 +49,10 @@ var StaticConfigurations = []ConfigurationItem{
},
Merge: true,
},
// Firefox 155 enabled AV1 for WebRTC by default, but 155/156 decode only the base spatial
// layer of an AV1 SVC stream. SVC is not visible in SDP, so such a subscriber negotiating AV1
// would be forwarded the SVC stream in place of the publisher's backup codec and render
// higher layers black. Firefox 157 decodes the higher layers, so it keeps AV1.
// Firefox does not publish AV1 either (no SVC encoding), so disable it in both directions.
// Firefox enabled AV1 for WebRTC by default since 155, but we got reports of issues with AV1 decoding.
// It does not publish AV1 either (no SVC encoding), so disable it in both directions.
{
Match: must.Get(NewScriptMatch(`(c.browser == "firefox" || c.browser == "firefox mobile") && c.browser_version < "157"`)),
Match: must.Get(NewScriptMatch(`c.browser == "firefox" || c.browser == "firefox mobile"`)),
Configuration: &livekit.ClientConfiguration{
DisabledCodecs: &livekit.DisabledCodecs{
Codecs: []*livekit.Codec{
+1 -5
View File
@@ -62,15 +62,11 @@ func TestStaticConfigurationAV1(t *testing.T) {
return false
}
// Firefox 155/156 decode only the base spatial layer of AV1 SVC
require.True(t, av1Disabled(&livekit.ClientInfo{Browser: "Firefox", BrowserVersion: "155.0", Os: "macOS"}))
require.True(t, av1Disabled(&livekit.ClientInfo{Browser: "firefox", BrowserVersion: "156.0.1", Os: "windows"}))
require.True(t, av1Disabled(&livekit.ClientInfo{Browser: "firefox", BrowserVersion: "158.0.2", Os: "windows"}))
// an unknown version is treated as affected
require.True(t, av1Disabled(&livekit.ClientInfo{Browser: "firefox", Os: "linux"}))
// Firefox 157 decodes every layer, so it keeps AV1
require.False(t, av1Disabled(&livekit.ClientInfo{Browser: "firefox", BrowserVersion: "157.0", Os: "windows"}))
require.False(t, av1Disabled(&livekit.ClientInfo{Browser: "firefox", BrowserVersion: "158.0.2", Os: "windows"}))
require.False(t, av1Disabled(&livekit.ClientInfo{Browser: "chrome", Os: "linux"}))
// Firefox for Android keeps the AV1 rule alongside its H.264 publish rule
android := &livekit.ClientInfo{Browser: "firefox mobile", BrowserVersion: "156.0", Os: "android"}