Title: [257478] trunk/Source/WebKit
Revision
257478
Author
[email protected]
Date
2020-02-26 09:15:46 -0800 (Wed, 26 Feb 2020)

Log Message

GPUProcess should be made aware of device orientation for correct video capture frame rotation computation
https://bugs.webkit.org/show_bug.cgi?id=208242

Reviewed by Eric Carlson.

Pipe orientation information to GPUProcess whenever a page has a user media capture manager proxy.
This is used by AVVideoCaptureSource to compute the correct video sample rotation value.
Manually tested.

* GPUProcess/GPUConnectionToWebProcess.cpp:
(WebKit::GPUConnectionToWebProcess::setOrientationForMediaCapture):
* GPUProcess/GPUConnectionToWebProcess.h:
* GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::setMockCaptureDevicesEnabled):
(WebKit::GPUProcess::setOrientationForMediaCapture):
* GPUProcess/GPUProcess.h:
* GPUProcess/GPUProcess.messages.in:
* UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::setOrientationForMediaCapture):
* UIProcess/GPU/GPUProcessProxy.h:
* UIProcess/WebPageProxy.cpp:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (257477 => 257478)


--- trunk/Source/WebKit/ChangeLog	2020-02-26 17:13:51 UTC (rev 257477)
+++ trunk/Source/WebKit/ChangeLog	2020-02-26 17:15:46 UTC (rev 257478)
@@ -1,5 +1,29 @@
 2020-02-26  Youenn Fablet  <[email protected]>
 
+        GPUProcess should be made aware of device orientation for correct video capture frame rotation computation
+        https://bugs.webkit.org/show_bug.cgi?id=208242
+
+        Reviewed by Eric Carlson.
+
+        Pipe orientation information to GPUProcess whenever a page has a user media capture manager proxy.
+        This is used by AVVideoCaptureSource to compute the correct video sample rotation value.
+        Manually tested.
+
+        * GPUProcess/GPUConnectionToWebProcess.cpp:
+        (WebKit::GPUConnectionToWebProcess::setOrientationForMediaCapture):
+        * GPUProcess/GPUConnectionToWebProcess.h:
+        * GPUProcess/GPUProcess.cpp:
+        (WebKit::GPUProcess::setMockCaptureDevicesEnabled):
+        (WebKit::GPUProcess::setOrientationForMediaCapture):
+        * GPUProcess/GPUProcess.h:
+        * GPUProcess/GPUProcess.messages.in:
+        * UIProcess/GPU/GPUProcessProxy.cpp:
+        (WebKit::GPUProcessProxy::setOrientationForMediaCapture):
+        * UIProcess/GPU/GPUProcessProxy.h:
+        * UIProcess/WebPageProxy.cpp:
+
+2020-02-26  Youenn Fablet  <[email protected]>
+
         Use WebPageProxy preferences for capture instead of WebProcessPool configuration parameters
         https://bugs.webkit.org/show_bug.cgi?id=208238
 

Modified: trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp (257477 => 257478)


--- trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp	2020-02-26 17:13:51 UTC (rev 257477)
+++ trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp	2020-02-26 17:15:46 UTC (rev 257478)
@@ -283,6 +283,13 @@
     return *m_sessionManager;
 }
 
+#if ENABLE(MEDIA_STREAM)
+void GPUConnectionToWebProcess::setOrientationForMediaCapture(uint64_t orientation)
+{
+    userMediaCaptureManagerProxy().setOrientation(orientation);
+}
+#endif
+
 } // namespace WebKit
 
 #endif // ENABLE(GPU_PROCESS)

Modified: trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h (257477 => 257478)


--- trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h	2020-02-26 17:13:51 UTC (rev 257477)
+++ trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h	2020-02-26 17:15:46 UTC (rev 257478)
@@ -74,6 +74,10 @@
     const String& mediaKeysStorageDirectory() const;
 #endif
 
+#if ENABLE(MEDIA_STREAM)
+    void setOrientationForMediaCapture(uint64_t orientation);
+#endif
+
     WebCore::PlatformMediaSessionManager& sessionManager();
 
 private:

Modified: trunk/Source/WebKit/GPUProcess/GPUProcess.cpp (257477 => 257478)


--- trunk/Source/WebKit/GPUProcess/GPUProcess.cpp	2020-02-26 17:13:51 UTC (rev 257477)
+++ trunk/Source/WebKit/GPUProcess/GPUProcess.cpp	2020-02-26 17:15:46 UTC (rev 257478)
@@ -156,13 +156,19 @@
     return m_webProcessConnections.get(identifier);
 }
 
+#if ENABLE(MEDIA_STREAM)
 void GPUProcess::setMockCaptureDevicesEnabled(bool isEnabled)
 {
-#if ENABLE(MEDIA_STREAM)
     MockRealtimeMediaSourceCenter::setMockRealtimeMediaSourceCenterEnabled(isEnabled);
-#endif
 }
 
+void GPUProcess::setOrientationForMediaCapture(uint64_t orientation)
+{
+    for (auto& connection : m_webProcessConnections.values())
+        connection->setOrientationForMediaCapture(orientation);
+}
+#endif
+
 void GPUProcess::addSession(PAL::SessionID sessionID, GPUProcessSessionParameters&& parameters)
 {
     ASSERT(!m_sessions.contains(sessionID));

Modified: trunk/Source/WebKit/GPUProcess/GPUProcess.h (257477 => 257478)


--- trunk/Source/WebKit/GPUProcess/GPUProcess.h	2020-02-26 17:13:51 UTC (rev 257477)
+++ trunk/Source/WebKit/GPUProcess/GPUProcess.h	2020-02-26 17:15:46 UTC (rev 257478)
@@ -83,7 +83,10 @@
 
     void processDidTransitionToForeground();
     void processDidTransitionToBackground();
+#if ENABLE(MEDIA_STREAM)
     void setMockCaptureDevicesEnabled(bool);
+    void setOrientationForMediaCapture(uint64_t orientation);
+#endif
 
     // Connections to WebProcesses.
     HashMap<WebCore::ProcessIdentifier, Ref<GPUConnectionToWebProcess>> m_webProcessConnections;

Modified: trunk/Source/WebKit/GPUProcess/GPUProcess.messages.in (257477 => 257478)


--- trunk/Source/WebKit/GPUProcess/GPUProcess.messages.in	2020-02-26 17:13:51 UTC (rev 257477)
+++ trunk/Source/WebKit/GPUProcess/GPUProcess.messages.in	2020-02-26 17:15:46 UTC (rev 257478)
@@ -37,6 +37,7 @@
 
 #if ENABLE(MEDIA_STREAM)
     SetMockCaptureDevicesEnabled(bool isEnabled)
+    SetOrientationForMediaCapture(uint64_t orientation);
 #endif
 }
 

Modified: trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp (257477 => 257478)


--- trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp	2020-02-26 17:13:51 UTC (rev 257477)
+++ trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp	2020-02-26 17:15:46 UTC (rev 257478)
@@ -146,6 +146,14 @@
     m_useMockCaptureDevices = value;
     send(Messages::GPUProcess::SetMockCaptureDevicesEnabled { m_useMockCaptureDevices }, 0);
 }
+
+void GPUProcessProxy::setOrientationForMediaCapture(uint64_t orientation)
+{
+    if (m_orientation == orientation)
+        return;
+    m_orientation = orientation;
+    send(Messages::GPUProcess::SetOrientationForMediaCapture { orientation }, 0);
+}
 #endif
 
 void GPUProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& launchOptions)

Modified: trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h (257477 => 257478)


--- trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h	2020-02-26 17:13:51 UTC (rev 257477)
+++ trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h	2020-02-26 17:15:46 UTC (rev 257478)
@@ -61,6 +61,7 @@
 
 #if ENABLE(MEDIA_STREAM)
     void setUseMockCaptureDevices(bool);
+    void setOrientationForMediaCapture(uint64_t orientation);
 #endif
 
     void removeSession(PAL::SessionID);
@@ -107,6 +108,7 @@
     ProcessThrottler::ActivityVariant m_activityFromWebProcesses;
 #if ENABLE(MEDIA_STREAM)
     bool m_useMockCaptureDevices { false };
+    uint64_t m_orientation { 0 };
 #endif
     HashSet<PAL::SessionID> m_sessionIDs;
 };

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (257477 => 257478)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2020-02-26 17:13:51 UTC (rev 257477)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2020-02-26 17:15:46 UTC (rev 257478)
@@ -9922,6 +9922,9 @@
 #if PLATFORM(COCOA) && ENABLE(MEDIA_STREAM)
     if (auto* proxy = m_process->userMediaCaptureManagerProxy())
         proxy->setOrientation(orientation);
+
+    if (preferences().captureVideoInGPUProcessEnabled())
+        GPUProcessProxy::singleton().setOrientationForMediaCapture(orientation);
 #endif
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to