[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