Open Bug 1838079 Opened 1 year ago Updated 1 year ago

Firefox no longer joins video conferences with 30 fps camera (first 15 seconds)

Categories

(Core :: WebRTC, defect)

Unspecified
macOS
defect

Tracking

()

People

(Reporter: jib, Unassigned, NeedInfo)

References

(Regression)

Details

(Keywords: regression)

15 fps is considered the bare minimum for communicating. 30 FPS is ideal. Firefox recently dropped below this for the first 15 seconds of joining in VP8, eventually ramping up resolution and frame-rate.

STRs (on my MBP M2 with 640 x 360 x 30fps capture):

  1. Open https://jsfiddle.net/jib1/c67e4whz/

Expected result (taken from Firefox 108 after ~1 second):

  • 640x480x30 fps
    606,024 bps = 606.024 kbps = 75.753 KBps = 0.6 Mbps VP8
    checking
    connected
    

Actual result (Firefox 116 after ~1 second):

  • 494x278x10 fps
    448,368 bps = 448.368 kbps = 56.046 KBps = 0.4 Mbps VP8
    checking
    connected
    
  • After 15+ seconds, libwebrtc eventually ramps up to 640 x 480 x 30 fps.

Bug 1731520 further regressed 15 fps to 10 fps for some reason (probably because it changed the default gUM capture resolution on my M2 MBP which is a good thing). Just adding for completeness, since it appears to highlights a counter-intuitive fps calculation (lower res->lower fps):

Before bug 1731520: 494x371x15 fps -> 640x480x30 fps after 15 seconds
After bug 1731520: 494x278x10 fps -> 640x360x30 fps after 15 seconds

Regressed by: 1731520
Summary: Firefox no longer joins video conferences with 30 fps camera → Firefox no longer joins video conferences with 30 fps camera (first 15 seconds)
Regressed by: libwebrtc-fast-forward
No longer regressed by: 1731520

Bug 1803368 just wired back up our frame dropping config, which was dropped earlier as a response to upstream changes. Jib said on Matrix that doing another bisect ending just prior to that upstream change yielded this push.

Looking at the changes in bug 1766646 to libvpx_vp8_encoder.cc I see the following candidate:

The main suspect is making libvpx encoders' rate control trusted. Could you test this by setting trust_vp8 = false locally?

Flags: needinfo?(jib)
Severity: -- → S3
You need to log in before you can comment on or make changes to this bug.