[webkit-changes] [WebKit/WebKit] 2a1363: Constraints on the max width/height cause blurry g...
youennf
noreply at github.com
Tue Oct 17 05:54:12 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 2a1363e51a7cb864069914e8c28bfc1aae1e6d06
https://github.com/WebKit/WebKit/commit/2a1363e51a7cb864069914e8c28bfc1aae1e6d06
Author: Youenn Fablet <youennf at gmail.com>
Date: 2023-10-17 (Tue, 17 Oct 2023)
Changed paths:
A LayoutTests/fast/mediastream/getDisplayMedia-max-constraints4-expected.txt
A LayoutTests/fast/mediastream/getDisplayMedia-max-constraints4.html
M LayoutTests/fast/mediastream/mediastreamtrack-configurationchange.html
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp
M Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm
M Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp
M Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h
M Source/WebKit/GPUProcess/GPUProcess.cpp
M Source/WebKit/GPUProcess/GPUProcess.h
M Source/WebKit/GPUProcess/GPUProcess.messages.in
M Source/WebKit/UIProcess/API/C/WKPage.cpp
M Source/WebKit/UIProcess/API/C/WKPagePrivate.h
M Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
M Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
M Tools/WebKitTestRunner/TestController.cpp
M Tools/WebKitTestRunner/TestController.h
M Tools/WebKitTestRunner/TestInvocation.cpp
Log Message:
-----------
Constraints on the max width/height cause blurry getDisplayMedia video on Safari 17
https://bugs.webkit.org/show_bug.cgi?id=263015
rdar://116810370
Reviewed by Eric Carlson.
We were applying constraints at the time of starting the capture.
For getDisplayMedia, we do not know yet the size of window/screen, so we start with 640x480.
Later on, the size may increase, but we were not recomputing the constraints and our resizer was sticking to the old values.
Whenever there is a change of size, we are now calling configuration change.
Within UserMediaCaptureManagerProxy, in case of getDisplayMedia, we will reapply constraints.
This will trigger recomputation of the resizer based on any max constraint.
We add a test that is emulating the change of screen being captured.
We update an existing testRunner API for that purpose.
* LayoutTests/fast/mediastream/getDisplayMedia-max-constraints4-expected.txt: Added.
* LayoutTests/fast/mediastream/getDisplayMedia-max-constraints4.html: Added.
* LayoutTests/fast/mediastream/mediastreamtrack-configurationchange.html:
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::emitFrame):
* Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:
(WebCore::ScreenCaptureKitCaptureSource::streamDidOutputVideoSampleBuffer):
* Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:
(WebCore::MockDisplayCapturer::triggerMockCaptureConfigurationChange):
(WebCore::MockRealtimeDisplaySourceFactory::latestCapturer):
(WebCore::MockRealtimeMediaSourceCenter::triggerMockCaptureConfigurationChange):
(WebCore::MockRealtimeMediaSourceCenter::triggerMockMicrophoneConfigurationChange): Deleted.
* Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h:
* Source/WebKit/GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::triggerMockCaptureConfigurationChange):
(WebKit::GPUProcess::triggerMockMicrophoneConfigurationChange): Deleted.
* Source/WebKit/GPUProcess/GPUProcess.h:
* Source/WebKit/GPUProcess/GPUProcess.messages.in:
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPageTriggerMockCaptureConfigurationChange):
(WKPageTriggerMockMicrophoneConfigurationChange): Deleted.
* Source/WebKit/UIProcess/API/C/WKPagePrivate.h:
* Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::updateVideoConstraints):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::applyConstraints):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::triggerMockCaptureConfigurationChange):
(WebKit::GPUProcessProxy::triggerMockMicrophoneConfigurationChange): Deleted.
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::triggerMockCaptureConfigurationChange):
(WTR::TestRunner::triggerMockMicrophoneConfigurationChange): Deleted.
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::triggerMockCaptureConfigurationChange):
(WTR::TestController::triggerMockMicrophoneConfigurationChange): Deleted.
* Tools/WebKitTestRunner/TestController.h:
* Tools/WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
Canonical link: https://commits.webkit.org/269406@main
More information about the webkit-changes
mailing list