Commit afc1d76e authored by joi@chromium.org's avatar joi@chromium.org

Implement GetAudioOutputDeviceNames for Mac OS X.

BUG=276894
R=tommi@chromium.org

Review URL: https://codereview.chromium.org/24072002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@222217 0039d316-1c4b-4281-b951-d872f2087c98
parent f3617171
...@@ -32,6 +32,8 @@ void GetAudioOutputDeviceNamesImpl(AudioManager* audio_manager) { ...@@ -32,6 +32,8 @@ void GetAudioOutputDeviceNamesImpl(AudioManager* audio_manager) {
} }
TEST(AudioManagerTest, GetAudioOutputDeviceNames) { TEST(AudioManagerTest, GetAudioOutputDeviceNames) {
// On Linux, we may be able to test both the Alsa and Pulseaudio
// versions of the audio manager.
#if defined(USE_PULSEAUDIO) #if defined(USE_PULSEAUDIO)
{ {
VLOG(2) << "Testing AudioManagerPulse."; VLOG(2) << "Testing AudioManagerPulse.";
...@@ -49,6 +51,12 @@ TEST(AudioManagerTest, GetAudioOutputDeviceNames) { ...@@ -49,6 +51,12 @@ TEST(AudioManagerTest, GetAudioOutputDeviceNames) {
GetAudioOutputDeviceNamesImpl(alsa_audio_manager.get()); GetAudioOutputDeviceNamesImpl(alsa_audio_manager.get());
} }
#endif // defined(USE_ALSA) #endif // defined(USE_ALSA)
#if defined(OS_MACOSX)
VLOG(2) << "Testing platform-default AudioManager.";
scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
GetAudioOutputDeviceNamesImpl(audio_manager.get());
#endif // defined(OS_MACOSX)
} }
} // namespace media } // namespace media
...@@ -81,6 +81,8 @@ bool AudioManagerMac::HasUnifiedDefaultIO() { ...@@ -81,6 +81,8 @@ bool AudioManagerMac::HasUnifiedDefaultIO() {
return input_id == output_id; return input_id == output_id;
} }
// Retrieves information on audio devices, and prepends the default
// device to the list if the list is non-empty.
static void GetAudioDeviceInfo(bool is_input, static void GetAudioDeviceInfo(bool is_input,
media::AudioDeviceNames* device_names) { media::AudioDeviceNames* device_names) {
// Query the number of total devices. // Query the number of total devices.
...@@ -173,6 +175,16 @@ static void GetAudioDeviceInfo(bool is_input, ...@@ -173,6 +175,16 @@ static void GetAudioDeviceInfo(bool is_input,
if (name) if (name)
CFRelease(name); CFRelease(name);
} }
if (!device_names->empty()) {
// Prepend the default device to the list since we always want it to be
// on the top of the list for all platforms. There is no duplicate
// counting here since the default device has been abstracted out before.
media::AudioDeviceName name;
name.device_name = AudioManagerBase::kDefaultDeviceName;
name.unique_id = AudioManagerBase::kDefaultDeviceId;
device_names->push_front(name);
}
} }
static AudioDeviceID GetAudioDeviceIdByUId(bool is_input, static AudioDeviceID GetAudioDeviceIdByUId(bool is_input,
...@@ -396,15 +408,12 @@ void AudioManagerMac::GetAudioInputDeviceNames( ...@@ -396,15 +408,12 @@ void AudioManagerMac::GetAudioInputDeviceNames(
media::AudioDeviceNames* device_names) { media::AudioDeviceNames* device_names) {
DCHECK(device_names->empty()); DCHECK(device_names->empty());
GetAudioDeviceInfo(true, device_names); GetAudioDeviceInfo(true, device_names);
if (!device_names->empty()) { }
// Prepend the default device to the list since we always want it to be
// on the top of the list for all platforms. There is no duplicate void AudioManagerMac::GetAudioOutputDeviceNames(
// counting here since the default device has been abstracted out before. media::AudioDeviceNames* device_names) {
media::AudioDeviceName name; DCHECK(device_names->empty());
name.device_name = AudioManagerBase::kDefaultDeviceName; GetAudioDeviceInfo(false, device_names);
name.unique_id = AudioManagerBase::kDefaultDeviceId;
device_names->push_front(name);
}
} }
AudioParameters AudioManagerMac::GetInputStreamParameters( AudioParameters AudioManagerMac::GetInputStreamParameters(
......
...@@ -29,6 +29,8 @@ class MEDIA_EXPORT AudioManagerMac : public AudioManagerBase { ...@@ -29,6 +29,8 @@ class MEDIA_EXPORT AudioManagerMac : public AudioManagerBase {
virtual bool HasAudioInputDevices() OVERRIDE; virtual bool HasAudioInputDevices() OVERRIDE;
virtual void GetAudioInputDeviceNames(media::AudioDeviceNames* device_names) virtual void GetAudioInputDeviceNames(media::AudioDeviceNames* device_names)
OVERRIDE; OVERRIDE;
virtual void GetAudioOutputDeviceNames(media::AudioDeviceNames* device_names)
OVERRIDE;
virtual AudioParameters GetInputStreamParameters( virtual AudioParameters GetInputStreamParameters(
const std::string& device_id) OVERRIDE; const std::string& device_id) OVERRIDE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment