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

Reply via email to