Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(573)

Unified Diff: media/audio/win/audio_low_latency_input_win.cc

Issue 1314803003: Include default communication devices in audio device enumerations. This removes heuristic that pic… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comment Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/audio/win/audio_low_latency_input_win.h ('k') | media/audio/win/audio_low_latency_output_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 66792fcd985082a1ac5ef7ec33a401d7234590b9..53f14629dee80bfc5ce8f0058df8229acc889fd4 100644
--- a/media/audio/win/audio_low_latency_input_win.cc
+++ b/media/audio/win/audio_low_latency_input_win.cc
@@ -28,7 +28,6 @@ WASAPIAudioInputStream::WASAPIAudioInputStream(AudioManagerWin* manager,
packet_size_frames_(0),
packet_size_bytes_(0),
endpoint_buffer_size_frames_(0),
- effects_(params.effects()),
device_id_(device_id),
perf_count_to_100ns_units_(0.0),
ms_to_frame_count_(0.0),
@@ -433,47 +432,22 @@ HRESULT WASAPIAudioInputStream::SetCaptureDevice() {
// Retrieve the IMMDevice by using the specified role or the specified
// unique endpoint device-identification string.
- if (effects_ & AudioParameters::DUCKING) {
- // Ducking has been requested and it is only supported for the default
- // communication device. So, let's open up the communication device and
- // see if the ID of that device matches the requested ID.
- // We consider a kDefaultDeviceId as well as an explicit device id match,
- // to be valid matches.
+ if (device_id_ == AudioManagerBase::kDefaultDeviceId) {
+ // Retrieve the default capture audio endpoint for the specified role.
+ // Note that, in Windows Vista, the MMDevice API supports device roles
+ // but the system-supplied user interface programs do not.
+ hr = enumerator->GetDefaultAudioEndpoint(eCapture, eConsole,
+ endpoint_device_.Receive());
+ } else if (device_id_ == AudioManagerBase::kCommunicationsDeviceId) {
hr = enumerator->GetDefaultAudioEndpoint(eCapture, eCommunications,
endpoint_device_.Receive());
- if (endpoint_device_.get() &&
- device_id_ != AudioManagerBase::kDefaultDeviceId) {
- base::win::ScopedCoMem<WCHAR> communications_id;
- endpoint_device_->GetId(&communications_id);
- if (device_id_ !=
- 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.
- }
- }
- }
-
- if (!endpoint_device_.get()) {
- if (device_id_ == AudioManagerBase::kDefaultDeviceId) {
- // Retrieve the default capture audio endpoint for the specified role.
- // Note that, in Windows Vista, the MMDevice API supports device roles
- // but the system-supplied user interface programs do not.
- hr = enumerator->GetDefaultAudioEndpoint(eCapture, eConsole,
- endpoint_device_.Receive());
- } else if (device_id_ == AudioManagerBase::kLoopbackInputDeviceId) {
- // Capture the default playback stream.
- hr = enumerator->GetDefaultAudioEndpoint(eRender, eConsole,
- endpoint_device_.Receive());
- } else {
- hr = enumerator->GetDevice(base::UTF8ToUTF16(device_id_).c_str(),
- endpoint_device_.Receive());
- }
+ } else if (device_id_ == AudioManagerBase::kLoopbackInputDeviceId) {
+ // Capture the default playback stream.
+ hr = enumerator->GetDefaultAudioEndpoint(eRender, eConsole,
+ endpoint_device_.Receive());
+ } else {
+ hr = enumerator->GetDevice(base::UTF8ToUTF16(device_id_).c_str(),
+ endpoint_device_.Receive());
}
if (FAILED(hr))
@@ -571,8 +545,7 @@ HRESULT WASAPIAudioInputStream::InitializeAudioEngine() {
if (device_id_ == AudioManagerBase::kLoopbackInputDeviceId) {
flags = AUDCLNT_STREAMFLAGS_LOOPBACK | AUDCLNT_STREAMFLAGS_NOPERSIST;
} else {
- flags =
- AUDCLNT_STREAMFLAGS_EVENTCALLBACK | AUDCLNT_STREAMFLAGS_NOPERSIST;
+ flags = AUDCLNT_STREAMFLAGS_EVENTCALLBACK | AUDCLNT_STREAMFLAGS_NOPERSIST;
}
// Initialize the audio stream between the client and the device.
@@ -587,7 +560,8 @@ HRESULT WASAPIAudioInputStream::InitializeAudioEngine() {
0, // hnsBufferDuration
0,
&format_,
- (effects_ & AudioParameters::DUCKING) ? &kCommunicationsSessionId : NULL);
+ device_id_ == AudioManagerBase::kCommunicationsDeviceId ?
+ &kCommunicationsSessionId : nullptr);
if (FAILED(hr))
return hr;
« no previous file with comments | « media/audio/win/audio_low_latency_input_win.h ('k') | media/audio/win/audio_low_latency_output_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698