Chromium Code Reviews| Index: media/audio/cras/audio_manager_cras.cc |
| diff --git a/media/audio/cras/audio_manager_cras.cc b/media/audio/cras/audio_manager_cras.cc |
| index 7fdf07241aa2b5d2c97aad546af36562ffe20b62..e1f5bb9d6eefe51cab9bb3284a3dab5e46712b20 100644 |
| --- a/media/audio/cras/audio_manager_cras.cc |
| +++ b/media/audio/cras/audio_manager_cras.cc |
| @@ -15,6 +15,7 @@ |
| #include "base/metrics/histogram.h" |
| #include "base/nix/xdg_util.h" |
| #include "base/stl_util.h" |
| +#include "base/strings/string_number_conversions.h" |
| #include "chromeos/audio/audio_device.h" |
| #include "chromeos/audio/cras_audio_handler.h" |
| #include "media/audio/audio_device_description.h" |
| @@ -65,13 +66,6 @@ bool IsBeamformingDefaultEnabled() { |
| "Enabled"; |
| } |
| -void AddDefaultDevice(AudioDeviceNames* device_names) { |
| - DCHECK(device_names->empty()); |
| - |
| - // Cras will route audio from a proper physical device automatically. |
| - device_names->push_back(AudioDeviceName::CreateDefault()); |
| -} |
| - |
| // Returns a mic positions string if the machine has a beamforming capable |
| // internal mic and otherwise an empty string. |
| std::string MicPositions() { |
| @@ -155,23 +149,39 @@ void AudioManagerCras::ShowAudioInputSettings() { |
| NOTIMPLEMENTED(); |
| } |
| -void AudioManagerCras::GetAudioInputDeviceNames( |
| - AudioDeviceNames* device_names) { |
| +void AudioManagerCras::GetAudioDeviceNamesImpl(bool is_input, |
| + AudioDeviceNames* device_names) { |
| DCHECK(device_names->empty()); |
| - |
| - mic_positions_ = ParsePointsFromString(MicPositions()); |
| // At least two mic positions indicates we have a beamforming capable mic |
| // array. Add the virtual beamforming device to the list. When this device is |
| // queried through GetInputStreamParameters, provide the cached mic positions. |
| - if (mic_positions_.size() > 1) |
| + bool should_add_beamforming_devices = is_input && mic_positions_.size() > 1; |
| + if (should_add_beamforming_devices) |
| AddBeamformingDevices(device_names); |
| - else |
| - AddDefaultDevice(device_names); |
| + chromeos::AudioDeviceList devices; |
| + chromeos::CrasAudioHandler::Get()->GetAudioDevices(&devices); |
| + for (const auto& device : devices) { |
| + if (device.is_input == is_input && device.is_for_simple_usage()) { |
| + media::AudioDeviceName device_name; |
| + device_name.device_name = device.device_name; |
| + device_name.unique_id = base::Uint64ToString(device.id); |
| + device_names->push_back(device_name); |
|
DaleCurtis
2016/07/06 18:58:52
Does emplace_back(device.device_name, base::Uint64
Qiang(Joe) Xu
2016/07/07 00:32:45
done. tks.
|
| + } |
| + } |
| + if (!device_names->empty() && !should_add_beamforming_devices) { |
| + device_names->push_front(media::AudioDeviceName::CreateDefault()); |
|
DaleCurtis
2016/07/06 18:58:53
Just do this first to avoid push_front?
Qiang(Joe) Xu
2016/07/07 00:32:45
done. tks.
|
| + } |
| +} |
| + |
| +void AudioManagerCras::GetAudioInputDeviceNames( |
| + AudioDeviceNames* device_names) { |
| + mic_positions_ = ParsePointsFromString(MicPositions()); |
| + GetAudioDeviceNamesImpl(true, device_names); |
| } |
| void AudioManagerCras::GetAudioOutputDeviceNames( |
| AudioDeviceNames* device_names) { |
| - AddDefaultDevice(device_names); |
| + GetAudioDeviceNamesImpl(false, device_names); |
| } |
| AudioParameters AudioManagerCras::GetInputStreamParameters( |