Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e69c00275149ab466509f9d5cb8a8634bc80e7a5 https://github.com/WebKit/WebKit/commit/e69c00275149ab466509f9d5cb8a8634bc80e7a5 Author: Jer Noble <jer.no...@apple.com> Date: 2025-02-28 (Fri, 28 Feb 2025)
Changed paths: M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml M Source/WebCore/Modules/webaudio/AudioContext.cpp M Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/html/HTMLMediaElement.cpp M Source/WebCore/platform/MediaStrategy.h M Source/WebCore/platform/audio/AudioDestination.h M Source/WebCore/platform/audio/AudioDestinationResampler.cpp M Source/WebCore/platform/audio/AudioDestinationResampler.h M Source/WebCore/platform/audio/SharedAudioDestination.cpp M Source/WebCore/platform/audio/SharedAudioDestination.h M Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.cpp M Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.h M Source/WebCore/platform/audio/cocoa/AudioOutputUnitAdaptor.cpp M Source/WebCore/platform/audio/cocoa/AudioOutputUnitAdaptor.h M Source/WebCore/platform/audio/cocoa/SpatialAudioExperienceHelper.mm M Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp M Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.h M Source/WebCore/platform/mock/MockAudioDestinationCocoa.cpp M Source/WebCore/platform/mock/MockAudioDestinationCocoa.h M Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp M Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.h M Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.messages.in M Source/WebKit/WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp M Source/WebKit/WebProcess/GPU/media/RemoteAudioDestinationProxy.h M Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.cpp M Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.h M Source/WebKitLegacy/mac/WebCoreSupport/WebPlatformStrategies.mm Log Message: ----------- [Cocoa] Adopt CASpatialAudioExperience for WebAudio https://bugs.webkit.org/show_bug.cgi?id=288249 rdar://145326961 Reviewed by Andy Estes. Add support for creating a CASpatialAudioExperience and attaching that experience to the CoreAudio AudioOutputUnit used by WebAudio. The number of parameters taken by various AudioDestination subclasses and strategies has become burdensome, so rather than add an additional parameter needed for creating a CASpatialAudioExperience, add a new AudioDestinationCreationOptions struct and use that struct for the same purposes. This new AudioDestinationCreationOptions struct will also contain a sceneIdentifier used to anchor audio generation to a particular screen location. However, most audio on Cocoa ports flows through SharedAudioDestination, which muxes that audio together into a single AudioUnit. Add the spatialIdentifier as a key in the SharedAudioDestination's internal hash map, and re-create the destinations adaptor when that destination's sceneIdentifier changes. The sceneIdentifier and preference must be passed through to the GPU process so that it can be accessed by RemoteAudioDestinationManager. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: * Source/WebCore/Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::sceneIdentifierDidChange): * Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp: (WebCore::DefaultAudioDestinationNode::createDestination): * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::sceneIdentifierDidChange): * Source/WebCore/platform/MediaStrategy.h: * Source/WebCore/platform/audio/AudioDestination.h: (WebCore::AudioDestination::inputDeviceId const): (WebCore::AudioDestination::numberOfInputChannels const): (WebCore::AudioDestination::numberOfOutputChannels const): (WebCore::AudioDestination::sceneIdentifier const): (WebCore::AudioDestination::setSceneIdentifier): (WebCore::AudioDestination::AudioDestination): * Source/WebCore/platform/audio/AudioDestinationResampler.cpp: (WebCore::AudioDestinationResampler::AudioDestinationResampler): * Source/WebCore/platform/audio/AudioDestinationResampler.h: * Source/WebCore/platform/audio/SharedAudioDestination.cpp: (WebCore::SharedAudioDestinationAdapter::sceneIdentifier const): (WebCore::SharedAudioDestinationAdapter::takeEnsureFunction): (WebCore::SharedAudioDestinationAdapter::ensureAdapter): (WebCore::SharedAudioDestinationAdapter::SharedAudioDestinationAdapter): (WebCore::SharedAudioDestinationAdapter::~SharedAudioDestinationAdapter): (WebCore::SharedAudioDestination::create): (WebCore::SharedAudioDestination::SharedAudioDestination): (WebCore::SharedAudioDestination::setSceneIdentifier): * Source/WebCore/platform/audio/SharedAudioDestination.h: * Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.cpp: (WebCore::AudioDestination::create): (WebCore::AudioDestinationCocoa::AudioDestinationCocoa): (WebCore::AudioDestinationCocoa::setSceneIdentifier): * Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.h: * Source/WebCore/platform/audio/cocoa/AudioOutputUnitAdaptor.cpp: (WebCore::AudioOutputUnitAdaptor::setSpatialAudioExperience): * Source/WebCore/platform/audio/cocoa/AudioOutputUnitAdaptor.h: * Source/WebCore/platform/audio/cocoa/SpatialAudioExperienceHelper.mm: (WebCore::createSpatialAudioExperienceWithOptions): * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::sceneIdentifierDidChange): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateSpatialTrackingLabel): * Source/WebCore/platform/mediastream/AudioMediaStreamTrackRenderer.h: * Source/WebCore/platform/mediastream/AudioTrackPrivateMediaStream.cpp: (WebCore::AudioTrackPrivateMediaStream::setSpatialAudioExperience): * Source/WebCore/platform/mediastream/AudioTrackPrivateMediaStream.h: * Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererCocoa.cpp: (WebCore::AudioMediaStreamTrackRendererCocoa::setSpatialAudioExperience): * Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererCocoa.h: * Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.cpp: (WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::setSpatialAudioExperience): * Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.h: (WebCore::AudioMediaStreamTrackRendererInternalUnit::setSpatialAudioExperience): * Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp: (WebCore::AudioMediaStreamTrackRendererUnit::setSpatialAudioExperience): (WebCore::AudioMediaStreamTrackRendererUnit::Unit::setSpatialAudioExperience): * Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h: * Source/WebCore/platform/mediastream/cocoa/BaseAudioMediaStreamTrackRendererUnit.h: (WebCore::BaseAudioMediaStreamTrackRendererUnit::setSpatialAudioExperience): * Source/WebCore/platform/mediastream/cocoa/IncomingAudioMediaStreamTrackRendererUnit.cpp: (WebCore::IncomingAudioMediaStreamTrackRendererUnit::setSpatialAudioExperience): * Source/WebCore/platform/mediastream/cocoa/IncomingAudioMediaStreamTrackRendererUnit.h: * Source/WebCore/platform/mock/MockAudioDestinationCocoa.cpp: (WebCore::MockAudioDestinationCocoa::MockAudioDestinationCocoa): * Source/WebCore/platform/mock/MockAudioDestinationCocoa.h: * Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp: (WebKit::RemoteAudioDestinationManager::createAudioDestination): (WebKit::RemoteAudioDestinationManager::setSceneIdentifier): * Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.h: * Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.messages.in: * Source/WebKit/WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp: (WebKit::RemoteAudioDestinationProxy::create): (WebKit::RemoteAudioDestinationProxy::RemoteAudioDestinationProxy): (WebKit::RemoteAudioDestinationProxy::connection): (WebKit::RemoteAudioDestinationProxy::setSceneIdentifier): * Source/WebKit/WebProcess/GPU/media/RemoteAudioDestinationProxy.h: * Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.cpp: (WebKit::WebMediaStrategy::createAudioDestination): * Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.h: * Source/WebKitLegacy/mac/WebCoreSupport/WebPlatformStrategies.mm: Canonical link: https://commits.webkit.org/291404@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes