[webkit-changes] [WebKit/WebKit] 6cee2a: Not audible AudioContext prevents the audio sessio...

youennf noreply at github.com
Tue Mar 21 00:40:35 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6cee2aec2971066e4cee5fe286a55dbe5af6ad7c
      https://github.com/WebKit/WebKit/commit/6cee2aec2971066e4cee5fe286a55dbe5af6ad7c
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2023-03-21 (Tue, 21 Mar 2023)

  Changed paths:
    A LayoutTests/fast/mediastream/audio-session-category-capture-audio-context-expected.txt
    A LayoutTests/fast/mediastream/audio-session-category-capture-audio-context.html
    M Source/WebCore/Modules/webaudio/AudioContext.cpp
    M Source/WebCore/Modules/webaudio/AudioContext.h
    M Source/WebCore/html/HTMLMediaElement.h
    M Source/WebCore/platform/audio/PlatformMediaSession.cpp
    M Source/WebCore/platform/audio/PlatformMediaSession.h
    M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm

  Log Message:
  -----------
  Not audible AudioContext prevents the audio session category to change from play-and-record after stopping capture
https://bugs.webkit.org/show_bug.cgi?id=253951
rdar://problem/106744687

Reviewed by Jer Noble.

We made PlayAndRecord audio session category sticky until audio playing ends.
This ensures that stopping microphone capture will not change the audio level on iOS.
This works well for HTMLMediaElement but not for AudioContext.
Some AudioContexts are used for analysis and are not producing any audio.
We should not delay changing the audio session category if those analytic AudioContexts are running.

For that reason, we introduce PlatformMediaSessionClient::isAudible() to introduce this.
It is somehow similar to canProduceAudio except it does not impact with interruptions.
We might want to merge both in a follow-up.

* LayoutTests/fast/mediastream/audio-session-category-capture-audio-context-expected.txt: Added.
* LayoutTests/fast/mediastream/audio-session-category-capture-audio-context.html: Added.
* Source/WebCore/Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::mediaState const):
(WebCore::AudioContext::isAudible const):
* Source/WebCore/Modules/webaudio/AudioContext.h:
* Source/WebCore/html/HTMLMediaElement.h:
* Source/WebCore/platform/audio/PlatformMediaSession.cpp:
(WebCore::PlatformMediaSession::isAudible const):
* Source/WebCore/platform/audio/PlatformMediaSession.h:
(WebCore::PlatformMediaSessionClient::isAudible const):
* Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(WebCore::MediaSessionManagerCocoa::updateSessionState):

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




More information about the webkit-changes mailing list