Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 3c9fa32394331bf762d4f4047cff80336db5ab9d
https://github.com/WebKit/WebKit/commit/3c9fa32394331bf762d4f4047cff80336db5ab9d
Author: Youenn Fablet <[email protected]>
Date: 2026-07-29 (Wed, 29 Jul 2026)
Changed paths:
M Source/WebCore/platform/mediastream/MediaConstraints.cpp
M Source/WebCore/platform/mediastream/MediaConstraints.h
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/GPU/GPUProcessProxy.cpp
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
M Source/WebKit/UIProcess/UserMediaPermissionRequestProxy.cpp
M Source/WebKit/UIProcess/UserMediaPermissionRequestProxy.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
Log Message:
-----------
getUserMedia with echoCancellation:false still interrupts the microphone
device system-wide on every capture start (unconditional VPIO instantiation)
rdar://183517329
https://bugs.webkit.org/show_bug.cgi?id=320452
Reviewed by Eric Carlson.
To remove microphone interruption when echo cancellation is off, we should
disable VPIO prewarming in GPUProcess when not needed.
To do so, we compute in WebPageProxy whether we will use echo cancellation from
the gum request constraints.
We then pass that information via IPC to
GPUConnectionToWebProcess::updateCaptureAccess which will prewarm the VPIO unit
only if echo cancellation is on.
In case of GPU process crash, we lot the info whether echo cancellation is on
or off.
We do not prewarm the VPIO unit, as this is quite rare and minimising the work
on GPU process crash is probably best.
Manually tested.
*
Source/WebCore/platform/mediastream/MediaConstraints.cpp:
(WebCore::MediaConstraints::willUseEchoCancellation const):
* Source/WebCore/platform/mediastream/MediaConstraints.h:
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:
(WebKit::GPUConnectionToWebProcess::updateCaptureAccess):
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h:
* Source/WebKit/GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::createGPUConnectionToWebProcess):
(WebKit::GPUProcess::updateCaptureAccess):
* Source/WebKit/GPUProcess/GPUProcess.h:
* Source/WebKit/GPUProcess/GPUProcess.messages.in:
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::updateCaptureAccess):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:
* Source/WebKit/UIProcess/UserMediaPermissionRequestProxy.cpp:
(WebKit::UserMediaPermissionRequestProxy::willUseEchoCancellation const):
* Source/WebKit/UIProcess/UserMediaPermissionRequestProxy.h:
*
Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::willStartCapture):
(WebKit::WebPageProxy::gpuProcessExited):
Canonical link:
https://flagged.apple.com:443/proxy?t2=Dm8P9o7vC5&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzE4MTY0QG1haW4=&emid=67b5886a-7c66-43ab-a1ce-f2fc6f36eebc&c=11
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications