diff --git a/pkg/clientconfiguration/conf.go b/pkg/clientconfiguration/conf.go index 9614a0602..1f039590b 100644 --- a/pkg/clientconfiguration/conf.go +++ b/pkg/clientconfiguration/conf.go @@ -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{ diff --git a/pkg/clientconfiguration/conf_test.go b/pkg/clientconfiguration/conf_test.go index 415abbbf3..e11738750 100644 --- a/pkg/clientconfiguration/conf_test.go +++ b/pkg/clientconfiguration/conf_test.go @@ -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"}