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

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

Issue 9566002: On windows, create PCMWaveInAudioInputStream instance with correct device ID. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use the solution suggested by Henrik. Created 8 years, 10 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
Index: media/audio/win/audio_manager_win.cc
diff --git a/media/audio/win/audio_manager_win.cc b/media/audio/win/audio_manager_win.cc
index 7ee2a769f169fe4545c3e3ca922852df50a12009..58d994898940aa55b116df729d291dc29608e8d4 100644
--- a/media/audio/win/audio_manager_win.cc
+++ b/media/audio/win/audio_manager_win.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -166,14 +166,12 @@ AudioInputStream* AudioManagerWin::MakeAudioInputStream(
if (params.format == AudioParameters::AUDIO_MOCK) {
return FakeAudioInputStream::MakeFakeStream(params);
} else if (params.format == AudioParameters::AUDIO_PCM_LINEAR) {
- return new PCMWaveInAudioInputStream(this, params, kNumInputBuffers,
- AudioManagerBase::kDefaultDeviceId);
+ return CreatePCMWaveInAudioInputStream(params, device_id);
} else if (params.format == AudioParameters::AUDIO_PCM_LOW_LATENCY) {
if (!media::IsWASAPISupported()) {
// Fall back to Windows Wave implementation on Windows XP or lower.
DLOG(INFO) << "Using WaveIn since WASAPI requires at least Vista.";
- return new PCMWaveInAudioInputStream(this, params, kNumInputBuffers,
- device_id);
+ return CreatePCMWaveInAudioInputStream(params, device_id);
} else {
return new WASAPIAudioInputStream(this, params, device_id);
}
@@ -305,6 +303,24 @@ void AudioManagerWin::GetAudioInputDeviceNames(
}
}
+AudioInputStream* AudioManagerWin::CreatePCMWaveInAudioInputStream(
+ const AudioParameters& params,
+ const std::string& device_id) {
+ if (device_id != AudioManagerBase::kDefaultDeviceId &&
+ enumeration_type_ == kMMDeviceEnumeration) {
+ std::string xp_device_id = ConvertToWinXPDeviceId(device_id);
+ if (!xp_device_id.empty()) {
+ return new PCMWaveInAudioInputStream(this, params, kNumInputBuffers,
+ xp_device_id);
+ } else {
+ return NULL;
no longer working on chromium 2012/03/05 09:58:39 It looks like an unexpected error to me, adding a
yzshen1 2012/03/13 21:09:23 Done.
+ }
+ }
+
+ return new PCMWaveInAudioInputStream(this, params, kNumInputBuffers,
+ device_id);
no longer working on chromium 2012/03/05 09:58:39 Just a personal preference, feel free to ignore if
yzshen1 2012/03/13 21:09:23 Done.
+}
+
/// static
AudioManager* CreateAudioManager() {
return new AudioManagerWin();

Powered by Google App Engine
This is Rietveld 408576698