[webkit-changes] [WebKit/WebKit] deeb1e: Use AVCaptureDeviceRotationCoordinator for computi...
youennf
noreply at github.com
Mon Sep 23 09:58:38 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: deeb1ee538190aa721c9c3abae1de84a9d8c4328
https://github.com/WebKit/WebKit/commit/deeb1ee538190aa721c9c3abae1de84a9d8c4328
Author: Youenn Fablet <youenn at apple.com>
Date: 2024-09-23 (Mon, 23 Sep 2024)
Changed paths:
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WTF/wtf/PlatformHave.h
M Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.h
M Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.mm
M Source/WebCore/platform/OrientationNotifier.h
M Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h
M Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm
M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp
M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h
M Source/WebKit/GPUProcess/GPUProcess.cpp
M Source/WebKit/GPUProcess/GPUProcess.h
M Source/WebKit/GPUProcess/GPUProcess.messages.in
M Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp
M Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h
M Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.messages.in
M Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebProcessProxy.cpp
M Source/WebKit/UIProcess/WebProcessProxy.h
Log Message:
-----------
Use AVCaptureDeviceRotationCoordinator for computing camera rotation
rdar://105520083
https://bugs.webkit.org/show_bug.cgi?id=279818
Reviewed by Andy Estes and Eric Carlson.
We introduce a preference that switches on using the new AVCaptureDeviceRotationCoordinator API.
We use AVCaptureDeviceRotationCoordinator in UIProcess as we want to use it with the web view layer.
We then send the rotation notifications up to AVVideoCaptureSource via GPUProcess.
We start monitoring rotation changes when creating camera sources in GPUProcess and stop monitoring when the last camera source of a device type is deleted.
Manually tested on iOS.
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WTF/wtf/PlatformHave.h:
* Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.h:
* Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.mm:
* Source/WebCore/platform/OrientationNotifier.h:
(WebCore::OrientationNotifier::rotationAngleForCaptureDeviceChanged):
* Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h:
* Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::monitorOrientation):
(WebCore::AVVideoCaptureSource::rotationAngleForHorizonLevelDisplayChanged):
(WebCore::AVVideoCaptureSource::computeVideoFrameRotation):
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:
(WebKit::GPUConnectionToWebProcess::startMonitoringCaptureDeviceRotation):
(WebKit::GPUConnectionToWebProcess::stopMonitoringCaptureDeviceRotation):
(WebKit::GPUConnectionToWebProcess::rotationAngleForCaptureDeviceChanged):
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h:
* Source/WebKit/GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::rotationAngleForCaptureDeviceChanged):
* Source/WebKit/GPUProcess/GPUProcess.h:
* Source/WebKit/GPUProcess/GPUProcess.messages.in:
* Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createCameraSource):
(WebKit::UserMediaCaptureManagerProxy::removeSource):
(WebKit::UserMediaCaptureManagerProxy::rotationAngleForCaptureDeviceChanged):
* Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
(WebKit::UserMediaCaptureManagerProxy::ConnectionProxy::startMonitoringCaptureDeviceRotation):
(WebKit::UserMediaCaptureManagerProxy::ConnectionProxy::stopMonitoringCaptureDeviceRotation):
* Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:
(-[WKRotationCoordinatorObserver initWithRequestManagerProxy:]):
(computeVideoFrameRotation):
(-[WKRotationCoordinatorObserver observeValueForKeyPath:ofObject:change:context:]):
(-[WKRotationCoordinatorObserver start:layer:]):
(-[WKRotationCoordinatorObserver stop:]):
(WebKit::UserMediaPermissionRequestManagerProxy::startMonitoringCaptureDeviceRotation):
(WebKit::UserMediaPermissionRequestManagerProxy::stopMonitoringCaptureDeviceRotation):
(WebKit::UserMediaPermissionRequestManagerProxy::rotationAngleForCaptureDeviceChanged):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::startMonitoringCaptureDeviceRotation):
(WebKit::GPUProcessProxy::stopMonitoringCaptureDeviceRotation):
(WebKit::GPUProcessProxy::rotationAngleForCaptureDeviceChanged):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.messages.in:
* Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::startMonitoringCaptureDeviceRotation):
(WebKit::WebPageProxy::stopMonitoringCaptureDeviceRotation):
(WebKit::WebPageProxy::rotationAngleForCaptureDeviceChanged):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::webPage):
* Source/WebKit/UIProcess/WebProcessProxy.h:
Canonical link: https://commits.webkit.org/284083@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list