| Index: media/audio/win/audio_low_latency_input_win.cc
|
| diff --git a/media/audio/win/audio_low_latency_input_win.cc b/media/audio/win/audio_low_latency_input_win.cc
|
| index c43ed22977c648af8e92245bd436a8cb5f58c0b0..d29d1b42c6a433e9aeee2a6e9ea787650918b723 100644
|
| --- a/media/audio/win/audio_low_latency_input_win.cc
|
| +++ b/media/audio/win/audio_low_latency_input_win.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "media/audio/win/audio_manager_win.h"
|
| #include "media/audio/win/avrt_wrapper_win.h"
|
| +#include "media/audio/win/core_audio_util_win.h"
|
| #include "media/base/audio_bus.h"
|
|
|
| using base::win::ScopedComPtr;
|
| @@ -97,7 +98,9 @@ WASAPIAudioInputStream::WASAPIAudioInputStream(AudioManagerWin* manager,
|
| }
|
| }
|
|
|
| -WASAPIAudioInputStream::~WASAPIAudioInputStream() {}
|
| +WASAPIAudioInputStream::~WASAPIAudioInputStream() {
|
| + DCHECK(CalledOnValidThread());
|
| +}
|
|
|
| bool WASAPIAudioInputStream::Open() {
|
| DCHECK(CalledOnValidThread());
|
| @@ -512,6 +515,11 @@ HRESULT WASAPIAudioInputStream::SetCaptureDevice() {
|
| base::WideToUTF8(static_cast<WCHAR*>(communications_id))) {
|
| DLOG(WARNING) << "Ducking has been requested for a non-default device."
|
| "Not supported.";
|
| + // We can't honor the requested effect flag, so turn it off and
|
| + // continue. We'll check this flag later to see if we've actually
|
| + // opened up the communications device, so it's important that it
|
| + // reflects the active state.
|
| + effects_ &= ~AudioParameters::DUCKING;
|
| endpoint_device_.Release(); // Fall back on code below.
|
| }
|
| }
|
| @@ -639,12 +647,14 @@ HRESULT WASAPIAudioInputStream::InitializeAudioEngine() {
|
| // buffer is never smaller than the minimum buffer size needed to ensure
|
| // that glitches do not occur between the periodic processing passes.
|
| // This setting should lead to lowest possible latency.
|
| - HRESULT hr = audio_client_->Initialize(AUDCLNT_SHAREMODE_SHARED,
|
| - flags,
|
| - 0, // hnsBufferDuration
|
| - 0,
|
| - &format_,
|
| - NULL);
|
| + HRESULT hr = audio_client_->Initialize(
|
| + AUDCLNT_SHAREMODE_SHARED,
|
| + flags,
|
| + 0, // hnsBufferDuration
|
| + 0,
|
| + &format_,
|
| + (effects_ & AudioParameters::DUCKING) ? &kCommunicationsSessionId : NULL);
|
| +
|
| if (FAILED(hr))
|
| return hr;
|
|
|
|
|