Reactivate audio ducking when restarting the shared unit
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 12 Jul 2017 19:08:06 +0000 (19:08 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 12 Jul 2017 19:08:06 +0000 (19:08 +0000)
https://bugs.webkit.org/show_bug.cgi?id=174428

Patch by Youenn Fablet <youenn@apple.com> on 2017-07-12
Reviewed by Eric Carlson.

Currently, when another application ducks WebKit, there is no other way than to quit the UIProcess and restart it.
By again audio ducking when starting the audio unit, reloading the page will be enough.
Testing by launching a tab with audio capture and audio playing.
Then make a FaceTime call and hear the tab volume go down.
End the call to FaceTime and the tab volume remains low.
Reload the tab and the volume has a normal level.

* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioSharedUnit::setupAudioUnit):
(WebCore::CoreAudioSharedUnit::startInternal):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@219417 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp

index 35b3cac..df88dbc 100644 (file)
@@ -1,3 +1,21 @@
+2017-07-12  Youenn Fablet  <youenn@apple.com>
+
+        Reactivate audio ducking when restarting the shared unit
+        https://bugs.webkit.org/show_bug.cgi?id=174428
+
+        Reviewed by Eric Carlson.
+
+        Currently, when another application ducks WebKit, there is no other way than to quit the UIProcess and restart it.
+        By again audio ducking when starting the audio unit, reloading the page will be enough.
+        Testing by launching a tab with audio capture and audio playing.
+        Then make a FaceTime call and hear the tab volume go down.
+        End the call to FaceTime and the tab volume remains low.
+        Reload the tab and the volume has a normal level.
+
+        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
+        (WebCore::CoreAudioSharedUnit::setupAudioUnit):
+        (WebCore::CoreAudioSharedUnit::startInternal):
+
 2017-07-12  Antoine Quint  <graouts@apple.com>
 
         Playback controls should not hide while AirPlay is active
index 8f160a6..a2894f9 100644 (file)
@@ -306,10 +306,6 @@ OSStatus CoreAudioSharedUnit::setupAudioUnit()
     m_ioUnitInitialized = true;
     m_suspended = false;
 
-    uint32_t outputDevice;
-    if (!defaultOutputDevice(&outputDevice))
-        AudioDeviceDuck(outputDevice, 1.0, nullptr, 0);
-
     return err;
 }
 
@@ -579,6 +575,10 @@ void CoreAudioSharedUnit::startInternal()
         ASSERT(m_ioUnit);
     }
 
+    uint32_t outputDevice;
+    if (!defaultOutputDevice(&outputDevice))
+        AudioDeviceDuck(outputDevice, 1.0, nullptr, 0);
+
     err = AudioOutputUnitStart(m_ioUnit);
     if (err) {
         LOG(Media, "CoreAudioSharedUnit::start(%p) AudioOutputUnitStart failed with error %d (%.4s)", this, (int)err, (char*)&err);