Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 6a97f27f1c5c945db1cb0b40556a507db55aa07f
https://github.com/WebKit/WebKit/commit/6a97f27f1c5c945db1cb0b40556a507db55aa07f
Author: Jer Noble <[email protected]>
Date: 2026-04-10 (Fri, 10 Apr 2026)
Changed paths:
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/ios/TestExpectations
A
LayoutTests/webaudio/MediaElementAudioSource/mediaelementaudiosourcenode-volume-expected.txt
A
LayoutTests/webaudio/MediaElementAudioSource/mediaelementaudiosourcenode-volume.html
A LayoutTests/webaudio/resources/media/sine440.mp3
M Source/WebCore/html/HTMLMediaElement.cpp
M Source/WebCore/platform/graphics/avfoundation/AudioSourceProviderAVFObjC.h
M
Source/WebCore/platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm
M
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
M Source/WebCore/platform/mediastream/cocoa/WebAudioSourceProviderCocoa.h
M Source/WebCore/platform/mediastream/cocoa/WebAudioSourceProviderCocoa.mm
M Source/WebKit/GPUProcess/media/RemoteAudioSourceProviderProxy.cpp
M Source/WebKit/GPUProcess/media/RemoteAudioSourceProviderProxy.h
M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp
M Source/WebKit/WebProcess/GPU/media/RemoteAudioSourceProviderManager.cpp
M Source/WebKit/WebProcess/GPU/media/RemoteAudioSourceProviderManager.h
M
Source/WebKit/WebProcess/GPU/media/RemoteAudioSourceProviderManager.messages.in
Log Message:
-----------
HTMLMediaElement volume=0.5 does not work when using AudioContext
https://bugs.webkit.org/show_bug.cgi?id=311691
<rdar://174278899>
Reviewed by Eric Carlson.
Plumb the volume property through from the MediaPlayerPrivate
(including MediaPlayerPrivateAVFoundationObjC and
RemoteAudioSourceProviderProxy) to the
MediaSourceProviders they create (including AudioSourceProviderAVFObjC and
WebAudioSourceProviderCocoa), and apply the volume as a gain to the output of
that provider during
provideInput().
Drive-by fix: handle read-size underruns in WebAudioSourceProviderCocoa, where
the read head
gets so far behind the write head that it stops advancing.
Test: webaudio/MediaElementAudioSource/mediaelementaudiosourcenode-volume.html
*
LayoutTests/webaudio/MediaElementAudioSource/mediaelementaudiosourcenode-volume-expected.txt:
Added.
*
LayoutTests/webaudio/MediaElementAudioSource/mediaelementaudiosourcenode-volume.html:
Added.
* Source/WebCore/platform/graphics/avfoundation/AudioSourceProviderAVFObjC.h:
* Source/WebCore/platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:
(WebCore::AudioSourceProviderAVFObjC::provideInput):
(WebCore::AudioSourceProviderAVFObjC::setVolume):
*
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVolume):
* Source/WebCore/platform/mediastream/cocoa/WebAudioSourceProviderCocoa.h:
(WebCore::WebAudioSourceProviderCocoa::volume const):
* Source/WebCore/platform/mediastream/cocoa/WebAudioSourceProviderCocoa.mm:
(WebCore::WebAudioSourceProviderCocoa::setVolume):
(WebCore::WebAudioSourceProviderCocoa::provideInput):
(WebCore::WebAudioSourceProviderCocoa::provideInputInternal):
* Source/WebKit/GPUProcess/media/RemoteAudioSourceProviderProxy.cpp:
(WebKit::RemoteAudioSourceProviderProxy::setVolume):
* Source/WebKit/GPUProcess/media/RemoteAudioSourceProviderProxy.h:
* Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::setVolume):
* Source/WebKit/WebProcess/GPU/media/RemoteAudioSourceProviderManager.cpp:
(WebKit::RemoteAudioSourceProviderManager::setVolume):
* Source/WebKit/WebProcess/GPU/media/RemoteAudioSourceProviderManager.h:
*
Source/WebKit/WebProcess/GPU/media/RemoteAudioSourceProviderManager.messages.in:
Canonical link: https://commits.webkit.org/310958@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications