Skip to content

The 'Echo Cancellation' preference does not take effect when other preferences are left at defaults #5880

Description

@maestrolinden

Environment

Second Life Release 26.2.0.25386466510 (64bit)
Release Notes

You are at 129.1, 128.5, 2.0 in Suduffco located at simhost-0a97dff61f4695132.agni
SLURL: https://maps.secondlife.com/secondlife/Suduffco/129/129/2
(global coordinates 257409.0, 258945.0, 2.0)
Second Life Server 2026-05-12.25766421211
Release Notes

CPU: Apple M1 Pro (2400 MHz)
Memory: 16384 MB
OS Version: macOS 26.5.0 Darwin 25.5.0 Darwin Kernel Version 25.5.0: Mon Apr 27 20:38:56 PDT 2026; root:xnu-12377.121.6~2/RELEASE_ARM64_T6000 arm64
Graphics Card Vendor: Apple
Graphics Card: Apple M1 Pro

OpenGL Version: 4.1 Metal - 90.5

Window size: 1076x650
Font Size Adjustment: 96pt
UI Scaling: 0.75
Draw distance: 120m
Bandwidth: 10000kbit/s
LOD factor: 1.125
Render quality: 1
Texture memory: 12124MB
Disk cache: Max size 2150.4 MB (101.0% used)
HiDPI display mode:

J2C Decoder Version: KDU v8.4.1
Audio Driver Version: OpenAL, version 1.1 ALSOFT 1.24.2 / OpenAL Community / OpenAL Soft: OpenAL Soft
Dullahan: 1.24.0.202510081737
CEF: 139.0.40+g465474a+chromium-139.0.7258.139
Chromium: 139.0.7258.139
LibVLC Version: 3.0.21
Voice Server Version: Secondlife WebRTC Gateway

Packets Lost: 0/5185 (0.0%)
June 01 2026 10:02:16

Description

If a user disables the 'Echo Cancellation' setting in Voice preferences while other voice preferences remain at default, echo cancellation appears to remain enabled, in terms of what other users hear. It would appear that the audio filter pipeline isn't updated when the preference is toggled in either direction.

This might affect the other preferences too, but 'Echo Cancellation' is one of the more obvious preferences to test with.

Other notes:
Soft took a quick look with an AI tool and reported:

LLWebRTCVoiceClient::updateSettings() builds a fresh llwebrtc::LLWebRTCDeviceInterface::AudioConfig, then only calls setAudioConfig() if saved prefs differ from that freshly defaulted object.
But AudioConfig defaults are:

  • echo cancellation: true
  • AGC: true
  • noise suppression: VERY_HIGH
    So if the user setting matches those defaults, the code may decide nothing changed and skip applying the config, even though the actual WebRTC audio processor may currently be in a different state. This is especially suspicious because the native WebRTC APM is initialized with echo cancellation disabled, while the viewer pref defaults it enabled.

Reproduction steps

  1. UserA: Set up your system to use non-headphone speakers for voice audio output
    • I used the built-in mic and speakers of my Macbook for this purpose, which can be great for generating an annoyingly echoing audio stream for others to hear.
  2. UserA: Launch the viewer and use default voice settings:
    • Echo Cancellation: enabled
    • Automatic Gain Control: enabled
    • Microphone Noise Suppression: Max
  3. UserA: Login to any in-world location with voice enabled
  4. UserA: Press the 'Speak' button and speak continuously- Alternatively, use some other device to broadcast voices continuously (e.g. news radio), at the same loudness and distance from the mic as a human would)
  5. UserB: Login to UserA's location and listen to them over voice
  6. UserB: Start speaking in spatial voice, and note:
    • If UserB ever hears their own voice echo'ed while speaking (UserA's "Echo Cancellation" preference should suppress this)
    • If UserA's voice is suppressed to UserB whenever UserB starts to speak
  7. UserA: Open your voice preferences and disable "Echo Cancellation"
  8. UserA: Resume your spatial voice broadcast
  9. UserB: Repeat step (6) and note if results are any different.

Expected results:

  • In (6), UserB should hear the effects of noise cancellation enabled, good or bad
  • In (8), UserB should hear the effects of noise cancellation disabled, including a ~200ms echo of UserB's voice (annoying) but fewer artifacts like suppression of UserA's stream

Actual results:

  • In (6), UserB hears:
    • No echo of their own voice (good)
    • A suppression of UserA's voice when they speak (bad). I think this might be an artifact of echo cancellation
  • In (8), behavior is unchanged to UserB - "Echo Cancellation" on UserA's viewer doesn't appear to matter

Other notes:
If the test is repeated, but UserA sets non-default voice settings (e.g. "Microphone Noise Suppression: None") this bug does not reproduce - toggling 'Echo Cancellation' has the immediate expected effect.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingstale

    Type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions