Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: deeb1ee538190aa721c9c3abae1de84a9d8c4328
https://github.com/WebKit/WebKit/commit/deeb1ee538190aa721c9c3abae1de84a9d8c4328
Author: Youenn Fablet <[email protected]>
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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes