Skip to content

Update libwebrtc to m144 and fix audio device lifecycle/processing#5958

Open
roxanneskelly wants to merge 2 commits into
developfrom
roxie/webrtc-m144
Open

Update libwebrtc to m144 and fix audio device lifecycle/processing#5958
roxanneskelly wants to merge 2 commits into
developfrom
roxie/webrtc-m144

Conversation

@roxanneskelly

Copy link
Copy Markdown
Contributor

Description

  • Update libwebrtc to version m144 (autobuild.xml).
  • Use WebRTC's software APM exclusively; disable built-in (hardware/OS) AEC/AGC/NS, including after each device (re)deploy.
  • Only run the output device once a peer connection's audio is established (and bring devices up with the user's selected device at that point), fixing the buzz heard before/without an active connection.
  • Keep capture warm across mute/unmute to avoid the AEC cold-start hiss; stop recording 30s after a sustained mute so the OS mic indicator clears.
  • Reliably (re)select and (re)start capture/playout after teleport or voice restart so audio sends/records again.
  • Don't suspend the voice channel when entering tuning mode (Vivox-era behavior that dropped the peer connection).

Related Issues

improves #5953 - reduced the chance of hisses occurring
closes #5825 - removed some old vivox code that dropped calls when editing audio settings


Test Guidance

In addition to the reproduction steps for #5953 and #5825, this will need a thorough voice test run, as we updated libwebrtc.
This includes:

  • Device handling
  • Teleports
  • cross-region
  • p2p/adhoc/group
  • etc.

- Update libwebrtc to version m144 (autobuild.xml).
- Use WebRTC's software APM exclusively; disable built-in (hardware/OS)
  AEC/AGC/NS, including after each device (re)deploy.
- Only run the output device once a peer connection's audio is established
  (and bring devices up with the user's selected device at that point),
  fixing the buzz heard before/without an active connection.
- Keep capture warm across mute/unmute to avoid the AEC cold-start hiss;
  stop recording 30s after a sustained mute so the OS mic indicator clears.
- Reliably (re)select and (re)start capture/playout after teleport or
  voice restart so audio sends/records again.
- Don't suspend the voice channel when entering tuning mode (Vivox-era
  behavior that dropped the peer connection).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the c/cpp label Jun 26, 2026
Mute now zeroes captured gain and disables the sender tracks instead of
stopping the capture device, so unmuting no longer cold-starts the AEC
(no hiss) and Bluetooth devices no longer drop/restart as they switch
between mono and stereo.

Capture is gated on voice being enabled rather than on mute: it starts
when voice is enabled and runs across calls and mute/unmute, and is
released when voice is disabled (setVoiceEnabled). Playout stays gated on
there being a connection to render. As a result the OS "mic in use"
indicator is on for the length of the session and only clears when voice
is disabled.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@roxanneskelly roxanneskelly requested a review from akleshchev June 30, 2026 21:59
@roxanneskelly roxanneskelly marked this pull request as ready for review June 30, 2026 21:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

P2P Voice call issues after editing voice settings in preferences

2 participants