Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c315a716758008c2e11d996fe2e663db6097d114
https://github.com/WebKit/WebKit/commit/c315a716758008c2e11d996fe2e663db6097d114
Author: Chris Dumez <[email protected]>
Date: 2026-07-27 (Mon, 27 Jul 2026)
Changed paths:
M Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp
Log Message:
-----------
RemoteAudioDestination plays stale buffer contents instead of silence on ring
buffer underrun
https://bugs.webkit.org/show_bug.cgi?id=320149
Reviewed by Jean-Yves Avenard.
RemoteAudioDestination::render() only writes into the output buffer when
ConsumerSharedCARingBuffer::fetchIfHasEnoughData() succeeds. On underrun
(common at stream start or under load) it left ioData untouched, so the
audio unit played whatever stale samples happened to be in the buffer
instead of silence, producing an audible glitch and leaking prior audio
content. The sibling WebRTC path
(RemoteAudioMediaStreamTrackRendererInternalUnitManager) already zero-fills
its buffer on underrun; this path did not.
Fill the output buffer on the underrun path rather than leaving it stale.
Instead of an abrupt cutoff to zero (which clicks when the last rendered
sample was non-zero), remember the last rendered sample per channel on
each successful render and, on the first underrun, linearly ramp from that
value down to zero to declick before going fully silent. Subsequent
consecutive underruns output pure silence.
* Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:
Canonical link: https://commits.webkit.org/317968@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications