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
}