Firefox no longer joins video conferences with 30 fps camera (first 15 seconds)
Categories
(Core :: WebRTC, 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):
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.
Reporter | ||
Comment 1•2 years ago
|
||
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
Reporter | ||
Updated•2 years ago
|
Reporter | ||
Updated•2 years ago
|
Comment 2•2 years ago
|
||
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:
- making libvpx encoders' rate control trusted, which moves frame dropping logic from libwebrtc's MediaOptimization into the encoder.
- add option to configure resolution_bitrate_limits, resolution and bitrate limits could affect framerate
- disable frame dropping from codec settings, which, well, mentions frame dropping
The main suspect is making libvpx encoders' rate control trusted. Could you test this by setting trust_vp8 = false
locally?
Updated•2 years ago
|
Updated•1 year ago
|
Description
•