Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 19888c4fb22381309ac240707969b138b6210b77 https://github.com/WebKit/WebKit/commit/19888c4fb22381309ac240707969b138b6210b77 Author: Youenn Fablet <you...@apple.com> Date: 2024-12-18 (Wed, 18 Dec 2024)
Changed paths: M Source/WebCore/platform/audio/ios/AudioSessionIOS.h M Source/WebCore/platform/audio/ios/AudioSessionIOS.mm M Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.h M Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp M Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h M Source/WebCore/platform/mediastream/cocoa/IncomingAudioMediaStreamTrackRendererUnit.cpp M Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h M Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm M Source/WebCore/platform/mediastream/mac/BaseAudioSharedUnit.h M Source/WebCore/platform/mediastream/mac/CoreAudioSharedUnit.cpp M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h M Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp M Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp M Source/WebKit/GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp M Source/WebKit/GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.h M Source/WebKit/GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.messages.in M Source/WebKit/WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererInternalUnitManager.cpp Log Message: ----------- Prepare AVAudioSessionCaptureDeviceManager for speaker selection rdar://141435061 https://bugs.webkit.org/show_bug.cgi?id=284629 Reviewed by Eric Carlson. Update AudioMediaStreamTrackRendererUnit so that we store the last used speaker of a page. We then use that speaker on iOS for all audio of that page. We add special support for the receiver speaker since this is handled by category option. In addition, AVAudioSessionCaptureDeviceManager will be the place to set the preferred speaker. In GPU process, the various players will all go to the AudioSessionProxy to give their preferred speaker. The speaker will be used when the AudioSessionProxy gets activated. This allows several pages to use different speakers without interferring with each other as long as they are not playing audio at the same time. * Source/WebCore/platform/audio/ios/AudioSessionIOS.h: * Source/WebCore/platform/audio/ios/AudioSessionIOS.mm: (WebCore::AudioSessionIOS::setCategory): * Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.h: (WebCore::AudioMediaStreamTrackRendererInternalUnit::setLastDeviceUsed): * Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp: (WebCore::AudioMediaStreamTrackRendererUnit::supportsPerDeviceRendering): (WebCore::AudioMediaStreamTrackRendererUnit::setLastDeviceUsed): (WebCore::AudioMediaStreamTrackRendererUnit::ensureDeviceUnit): (WebCore::AudioMediaStreamTrackRendererUnit::getDeviceUnit): (WebCore::AudioMediaStreamTrackRendererUnit::addSource): (WebCore::AudioMediaStreamTrackRendererUnit::removeSource): (WebCore::AudioMediaStreamTrackRendererUnit::addResetObserver): (WebCore::AudioMediaStreamTrackRendererUnit::retrieveFormatDescription): (WebCore::AudioMediaStreamTrackRendererUnit::Unit::setLastDeviceUsed): * Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h: * Source/WebCore/platform/mediastream/cocoa/IncomingAudioMediaStreamTrackRendererUnit.cpp: (WebCore::IncomingAudioMediaStreamTrackRendererUnit::addSource): (WebCore::IncomingAudioMediaStreamTrackRendererUnit::removeSource): * Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h: * Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm: (WebCore::AVAudioSessionCaptureDeviceManager::setPreferredMicrophoneID): (WebCore::AVAudioSessionCaptureDeviceManager::configurePreferredMicrophone): (WebCore::AVAudioSessionCaptureDeviceManager::setPreferredSpeakerID): (WebCore::AVAudioSessionCaptureDeviceManager::setPreferredAudioSessionDeviceIDs): (WebCore::AVAudioSessionCaptureDeviceManager::setPreferredAudioSessionDeviceUID): Deleted. (WebCore::AVAudioSessionCaptureDeviceManager::configurePreferredAudioCaptureDevice): Deleted. (WebCore::AVAudioSessionCaptureDeviceManager::setPreferredAudioSessionDeviceUIDInternal): Deleted. * Source/WebCore/platform/mediastream/mac/BaseAudioSharedUnit.h: * Source/WebCore/platform/mediastream/mac/CoreAudioSharedUnit.cpp: (WebCore::CoreAudioSharedUnit::captureDeviceChanged): * Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h: * Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp: (WebKit::RemoteAudioSessionProxy::RemoteAudioSessionProxy): (WebKit::RemoteAudioSessionProxy::setCategory): (WebKit::RemoteAudioSessionProxy::tryToSetActive): (WebKit::RemoteAudioSessionProxy::sharedPreferencesForWebProcess const): (WebKit::RemoteAudioSessionProxy::setPreferredSpeakerID): * Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h: * Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp: (WebKit::RemoteMediaPlayerProxy::audioOutputDeviceChanged): * Source/WebKit/GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp: (WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::setLastDeviceUsed): * Source/WebKit/GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.h: * Source/WebKit/GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.messages.in: * Source/WebKit/WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererInternalUnitManager.cpp: (WebKit::AudioMediaStreamTrackRendererInternalUnitManagerProxy::setLastDeviceUsed): Canonical link: https://commits.webkit.org/288010@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