Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fafc27995052a8103c0d999576767b746e27722c
      
https://github.com/WebKit/WebKit/commit/fafc27995052a8103c0d999576767b746e27722c
  Author: Youenn Fablet <[email protected]>
  Date:   2025-01-28 (Tue, 28 Jan 2025)

  Changed paths:
    M Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h
    M Source/WebCore/platform/mediastream/mac/CoreAudioSharedInternalUnit.h
    M Source/WebCore/platform/mediastream/mac/CoreAudioSharedUnit.cpp
    M 
Source/WebKit/GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp

  Log Message:
  -----------
  MediaStreamTrack audio rendering may be broken in case page is capturing with 
and without echo cancellation
https://bugs.webkit.org/show_bug.cgi?id=286572
rdar://143691994

Reviewed by Eric Carlson.

Audio rendering through the capture unit is only supported for VPIO.
We need to reevaluate whether using the capture unit for audio rendering 
everytime a new audio unit is stored.

We add a method to CoreAudioSpeakerSamplesProducer to handle this and we update 
CoreAudioSharedUnit and 
RemoteAudioMediaStreamTrackRendererInternalUnitManagerUnit to deal with it.
We implement 
RemoteAudioMediaStreamTrackRendererInternalUnitManagerUnit::canRenderAudioChanged
 by asynchronoulsy updating the audio rendering unit to prevent a deadlock.
We do a small refactoring in 
RemoteAudioMediaStreamTrackRendererInternalUnitManagerUnit so that there is a 
single routine that computes whther audio rendering should go through the 
capture unit.
We fix CoreAudioSharedInternalUnit::canRenderAudio to properly handle this as 
well.

* Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h:
* Source/WebCore/platform/mediastream/mac/CoreAudioSharedInternalUnit.h:
* Source/WebCore/platform/mediastream/mac/CoreAudioSharedUnit.cpp:
(WebCore::CoreAudioSharedUnit::setupAudioUnit):
* 
Source/WebKit/GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp:
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManagerUnit::RemoteAudioMediaStreamTrackRendererInternalUnitManagerUnit):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManagerUnit::computeShouldRegisterAsSpeakerSamplesProducer
 const):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManagerUnit::setShouldRegisterAsSpeakerSamplesProducer):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManagerUnit::start):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManagerUnit::updateShouldRegisterAsSpeakerSamplesProducer):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManagerUnit::canRenderAudioChanged):

Canonical link: https://commits.webkit.org/289449@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to