| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/audio/audio_io.h" | 5 #include "media/audio/audio_io.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 #include <objbase.h> // This has to be before initguid.h | 8 #include <objbase.h> // This has to be before initguid.h |
| 9 #include <initguid.h> | 9 #include <initguid.h> |
| 10 #include <mmsystem.h> | 10 #include <mmsystem.h> |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 else | 276 else |
| 277 GetOutputDeviceNamesWinXP(device_names); | 277 GetOutputDeviceNamesWinXP(device_names); |
| 278 } else { | 278 } else { |
| 279 // Utilize the MMDevice API (part of Core Audio) for Vista and higher. | 279 // Utilize the MMDevice API (part of Core Audio) for Vista and higher. |
| 280 if (input) | 280 if (input) |
| 281 GetInputDeviceNamesWin(device_names); | 281 GetInputDeviceNamesWin(device_names); |
| 282 else | 282 else |
| 283 GetOutputDeviceNamesWin(device_names); | 283 GetOutputDeviceNamesWin(device_names); |
| 284 } | 284 } |
| 285 | 285 |
| 286 // Always add default device parameters as first element. | |
| 287 if (!device_names->empty()) { | 286 if (!device_names->empty()) { |
| 288 AudioDeviceName name; | 287 AudioDeviceName name; |
| 288 if (enumeration_type() == kMMDeviceEnumeration) { |
| 289 name.device_name = AudioManagerBase::kCommunicationsDeviceName; |
| 290 name.unique_id = AudioManagerBase::kCommunicationsDeviceId; |
| 291 device_names->push_front(name); |
| 292 } |
| 293 // Always add default device parameters as first element. |
| 289 name.device_name = AudioManagerBase::kDefaultDeviceName; | 294 name.device_name = AudioManagerBase::kDefaultDeviceName; |
| 290 name.unique_id = AudioManagerBase::kDefaultDeviceId; | 295 name.unique_id = AudioManagerBase::kDefaultDeviceId; |
| 291 device_names->push_front(name); | 296 device_names->push_front(name); |
| 292 } | 297 } |
| 293 } | 298 } |
| 294 | 299 |
| 295 void AudioManagerWin::GetAudioInputDeviceNames(AudioDeviceNames* device_names) { | 300 void AudioManagerWin::GetAudioInputDeviceNames(AudioDeviceNames* device_names) { |
| 296 GetAudioDeviceNamesImpl(true, device_names); | 301 GetAudioDeviceNamesImpl(true, device_names); |
| 297 } | 302 } |
| 298 | 303 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 370 device_id != AudioManagerBase::kDefaultDeviceId) | 375 device_id != AudioManagerBase::kDefaultDeviceId) |
| 371 << "Opening by device id not supported by PCMWaveOutAudioOutputStream"; | 376 << "Opening by device id not supported by PCMWaveOutAudioOutputStream"; |
| 372 DVLOG(1) << "Using WaveOut since WASAPI requires at least Vista."; | 377 DVLOG(1) << "Using WaveOut since WASAPI requires at least Vista."; |
| 373 return new PCMWaveOutAudioOutputStream( | 378 return new PCMWaveOutAudioOutputStream( |
| 374 this, params, NumberOfWaveOutBuffers(), WAVE_MAPPER); | 379 this, params, NumberOfWaveOutBuffers(), WAVE_MAPPER); |
| 375 } | 380 } |
| 376 | 381 |
| 377 // Pass an empty string to indicate that we want the default device | 382 // Pass an empty string to indicate that we want the default device |
| 378 // since we consistently only check for an empty string in | 383 // since we consistently only check for an empty string in |
| 379 // WASAPIAudioOutputStream. | 384 // WASAPIAudioOutputStream. |
| 385 bool communications = device_id == AudioManagerBase::kCommunicationsDeviceId; |
| 380 return new WASAPIAudioOutputStream(this, | 386 return new WASAPIAudioOutputStream(this, |
| 381 device_id == AudioManagerBase::kDefaultDeviceId ? | 387 communications || device_id == AudioManagerBase::kDefaultDeviceId ? |
| 382 std::string() : device_id, | 388 std::string() : device_id, |
| 383 params, | 389 params, |
| 384 params.effects() & AudioParameters::DUCKING ? eCommunications : eConsole); | 390 communications ? eCommunications : eConsole); |
| 385 } | 391 } |
| 386 | 392 |
| 387 // Factory for the implementations of AudioInputStream for AUDIO_PCM_LINEAR | 393 // Factory for the implementations of AudioInputStream for AUDIO_PCM_LINEAR |
| 388 // mode. | 394 // mode. |
| 389 AudioInputStream* AudioManagerWin::MakeLinearInputStream( | 395 AudioInputStream* AudioManagerWin::MakeLinearInputStream( |
| 390 const AudioParameters& params, const std::string& device_id) { | 396 const AudioParameters& params, const std::string& device_id) { |
| 391 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); | 397 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); |
| 392 return CreatePCMWaveInAudioInputStream(params, device_id); | 398 return CreatePCMWaveInAudioInputStream(params, device_id); |
| 393 } | 399 } |
| 394 | 400 |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 return new PCMWaveInAudioInputStream(this, params, kNumInputBuffers, | 539 return new PCMWaveInAudioInputStream(this, params, kNumInputBuffers, |
| 534 xp_device_id); | 540 xp_device_id); |
| 535 } | 541 } |
| 536 | 542 |
| 537 /// static | 543 /// static |
| 538 AudioManager* CreateAudioManager(AudioLogFactory* audio_log_factory) { | 544 AudioManager* CreateAudioManager(AudioLogFactory* audio_log_factory) { |
| 539 return new AudioManagerWin(audio_log_factory); | 545 return new AudioManagerWin(audio_log_factory); |
| 540 } | 546 } |
| 541 | 547 |
| 542 } // namespace media | 548 } // namespace media |
| OLD | NEW |