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

Reply via email to