[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