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

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: Add test. Created 8 years, 9 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_manager_win.h ('k') | media/audio/win/device_enumeration_win.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 2827d11360e9b362a34f2caf69e057d705000cfd..f82fcc90e689e02bc508342c4906c1f8035fffba 100644
--- a/media/audio/win/audio_manager_win.cc
+++ b/media/audio/win/audio_manager_win.cc
@@ -217,10 +217,10 @@ void AudioManagerWin::GetAudioInputDeviceNames(
// Enumerate all active audio-endpoint capture devices.
if (enumeration_type() == kWaveEnumeration) {
// Utilize the Wave API for Windows XP.
- GetInputDeviceNamesWinXP(device_names);
+ media::GetInputDeviceNamesWinXP(device_names);
} else {
// Utilize the MMDevice API (part of Core Audio) for Vista and higher.
- GetInputDeviceNamesWin(device_names);
+ media::GetInputDeviceNamesWin(device_names);
}
// Always add default device parameters as first element.
@@ -274,8 +274,7 @@ AudioOutputStream* AudioManagerWin::MakeLowLatencyOutputStream(
AudioInputStream* AudioManagerWin::MakeLinearInputStream(
const AudioParameters& params, const std::string& device_id) {
DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format);
- return new PCMWaveInAudioInputStream(this, params, kNumInputBuffers,
- AudioManagerBase::kDefaultDeviceId);
+ return CreatePCMWaveInAudioInputStream(params, device_id);
}
// Factory for the implementations of AudioInputStream for
@@ -287,8 +286,7 @@ AudioInputStream* AudioManagerWin::MakeLowLatencyInputStream(
if (!media::IsWASAPISupported()) {
// Fall back to Windows Wave implementation on Windows XP or lower.
DVLOG(1) << "Using WaveIn since WASAPI requires at least Vista.";
- stream = new PCMWaveInAudioInputStream(this, params, kNumInputBuffers,
- device_id);
+ stream = CreatePCMWaveInAudioInputStream(params, device_id);
} else {
stream = new WASAPIAudioInputStream(this, params, device_id);
}
@@ -296,6 +294,24 @@ AudioInputStream* AudioManagerWin::MakeLowLatencyInputStream(
return stream;
}
+AudioInputStream* AudioManagerWin::CreatePCMWaveInAudioInputStream(
+ const AudioParameters& params,
+ const std::string& device_id) {
+ std::string xp_device_id = device_id;
+ if (device_id != AudioManagerBase::kDefaultDeviceId &&
+ enumeration_type_ == kMMDeviceEnumeration) {
+ xp_device_id = media::ConvertToWinXPDeviceId(device_id);
+ if (xp_device_id.empty()) {
+ DLOG(ERROR) << "Cannot find a waveIn device which matches the device ID "
+ << device_id;
+ return NULL;
+ }
+ }
+
+ return new PCMWaveInAudioInputStream(this, params, kNumInputBuffers,
+ xp_device_id);
+}
+
/// static
AudioManager* CreateAudioManager() {
return new AudioManagerWin();
« no previous file with comments | « media/audio/win/audio_manager_win.h ('k') | media/audio/win/device_enumeration_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698