fix(lotus): capture the microphone mono — stereo interfaces published left-only on Firefox
audioCaptureDefaults set no channelCount, so Firefox captured a 2-channel audio interface (Scarlett Solo, one XLR mic on input 1) as stereo and, with browser audio processing off (the ML denoise tier), published it as is: peers heard the speaker in the left ear only. Chrome downmixes such captures itself, which is why it only showed on Firefox. Request channelCount: 1 for mic capture; screenshare audio is captured separately and is unaffected. Tested. Bumps to 0.25.0-lotus.3. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
This commit is contained in:
co-authored by
Claude Opus 5
parent
778712409e
commit
bc0e5ed432
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@lotusguild/element-call-embedded",
|
||||
"version": "0.25.0-lotus.2",
|
||||
"version": "0.25.0-lotus.3",
|
||||
"files": [
|
||||
"README.md",
|
||||
"LICENSE-AGPL-3.0",
|
||||
|
||||
@@ -88,6 +88,16 @@ afterEach(() => {
|
||||
});
|
||||
|
||||
describe("[lotus] audio-capture URL param overrides", () => {
|
||||
test("mic capture is always requested mono (stereo interfaces on Firefox published L-only)", () => {
|
||||
getUrlParams.mockReturnValue({
|
||||
echoCancellation: false,
|
||||
noiseSuppression: false,
|
||||
autoGainControl: false,
|
||||
});
|
||||
createRoom();
|
||||
expect(capturedAudioDefaults()).toMatchObject({ channelCount: 1 });
|
||||
});
|
||||
|
||||
test("with params defaulted to true, the Settings govern (upstream behaviour)", () => {
|
||||
getUrlParams.mockReturnValue({
|
||||
echoCancellation: true,
|
||||
|
||||
@@ -183,6 +183,13 @@ function generateRoomOption({
|
||||
audioCaptureDefaults: {
|
||||
...liveKitOptions.audioCaptureDefaults,
|
||||
deviceId: devices.audioInput.selected$.value?.id,
|
||||
// [lotus] Voice is mono. Without this, Firefox captures a 2-channel
|
||||
// audio interface (e.g. a Scarlett Solo with one XLR mic on input 1) as
|
||||
// stereo and, with browser audio processing off, publishes it that way —
|
||||
// peers hear the speaker in the left ear only. Chrome downmixes such
|
||||
// captures itself, which is why it only showed on Firefox. Screenshare
|
||||
// audio is captured separately and is unaffected.
|
||||
channelCount: 1,
|
||||
echoCancellation:
|
||||
echoCancellationSetting.getValue() &&
|
||||
getUrlParams().echoCancellation !== false,
|
||||
|
||||
Reference in New Issue
Block a user