Fix platform processing when using aggregated processing settings
Categories
(Core :: WebRTC: Audio/Video, defect, P2)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox131 | --- | fixed |
People
(Reporter: pehrsons, Assigned: pehrsons)
References
(Blocks 1 open bug)
Details
Attachments
(4 external files)
Platform processing was disabled in bug 1908539 because Google Meet would request two getUserMedia tracks for the same device: one with default processing constraints, and one with all processing constraints being false.
Gecko will in such a case make both tracks share the device, so the processing applied in the platform will therefore be in an aggregate form, the intersection of the processing param set for both tracks, i.e. no platform processing since one track had requested it to be disabled.
This caused echo in Google Meet because Gecko has a bug where the result of applying the aggregate settings is ignored, leading to the sw processing not getting applied at all on the track having processing set.
I'll use this bug to fix that Gecko bug and let platform processing ride the trains again.
| Assignee | ||
Comment 1•2 years ago
|
||
| Assignee | ||
Comment 2•2 years ago
|
||
| Assignee | ||
Comment 3•2 years ago
|
||
As described, this patch adds two things:
A new event where an audio processing track can get notified that new
processing params are about to get applied to the source. This is to handle use
cases involving aggregate processing params, i.e. when two tracks want to apply
different processing params to the same device. A second such track would
otherwise cause the aggregate params to get applied before the first track gets
notified async through the result event, possibly causing a glitch -- if
platform params are relaxed before compensated by the track. And,
A generation id of the processing params getting applied to a particular device.
Since the event informing a processing track of the result of applying platform
processing params is async from the new event informing the processing track of
the platform processing params about to get applied, described above, there can
in theory be any number of requests to apply processing params in flight at any
given time. The generation id is needed to distinguish two distinct requests to
apply identical processing params to a given device, where neither of the
requests have signaled their result yet. This allows the processing track to
avoid relaxing the software processing params prematurely, which could cause a
glitch similar to that described for the new event above.
| Assignee | ||
Comment 4•2 years ago
|
||
| Assignee | ||
Comment 5•2 years ago
|
||
A profile showing this issue being hit on Google Meet, with the fixes applied: https://share.firefox.dev/3WSKDfk
AEC fallback to the libwebrtc sw one is confirmed working by ear.
Updated•2 years ago
|
| Assignee | ||
Updated•2 years ago
|
Comment 7•2 years ago
|
||
| bugherder | ||
| Assignee | ||
Updated•2 years ago
|
Comment 9•2 years ago
|
||
| bugherder | ||
Updated•2 years ago
|
| Assignee | ||
Comment 10•2 years ago
|
||
This is meant to mark this bug as the root cause of bug 1908539, not the other way around.
Description
•