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
3512969d03
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@lotusguild/element-call-embedded",
|
"name": "@lotusguild/element-call-embedded",
|
||||||
"version": "0.25.0-lotus.2",
|
"version": "0.25.0-lotus.3",
|
||||||
"files": [
|
"files": [
|
||||||
"README.md",
|
"README.md",
|
||||||
"LICENSE-AGPL-3.0",
|
"LICENSE-AGPL-3.0",
|
||||||
|
|||||||
@@ -88,6 +88,16 @@ afterEach(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("[lotus] audio-capture URL param overrides", () => {
|
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)", () => {
|
test("with params defaulted to true, the Settings govern (upstream behaviour)", () => {
|
||||||
getUrlParams.mockReturnValue({
|
getUrlParams.mockReturnValue({
|
||||||
echoCancellation: true,
|
echoCancellation: true,
|
||||||
|
|||||||
@@ -183,6 +183,13 @@ function generateRoomOption({
|
|||||||
audioCaptureDefaults: {
|
audioCaptureDefaults: {
|
||||||
...liveKitOptions.audioCaptureDefaults,
|
...liveKitOptions.audioCaptureDefaults,
|
||||||
deviceId: devices.audioInput.selected$.value?.id,
|
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:
|
echoCancellation:
|
||||||
echoCancellationSetting.getValue() &&
|
echoCancellationSetting.getValue() &&
|
||||||
getUrlParams().echoCancellation !== false,
|
getUrlParams().echoCancellation !== false,
|
||||||
|
|||||||
Reference in New Issue
Block a user