Index: media/audio/mac/audio_manager_mac.cc |
=================================================================== |
--- media/audio/mac/audio_manager_mac.cc (revision 189875) |
+++ media/audio/mac/audio_manager_mac.cc (working copy) |
@@ -264,97 +264,6 @@ |
return HasAudioHardware(kAudioHardwarePropertyDefaultInputDevice); |
} |
-// TODO(crogers): There are several places on the OSX specific code which |
-// could benefit from this helper function. |
-bool AudioManagerMac::GetDefaultOutputDevice( |
- AudioDeviceID* device) { |
- CHECK(device); |
- |
- // Obtain the current output device selected by the user. |
- static const AudioObjectPropertyAddress kAddress = { |
- kAudioHardwarePropertyDefaultOutputDevice, |
- kAudioObjectPropertyScopeGlobal, |
- kAudioObjectPropertyElementMaster |
- }; |
- |
- UInt32 size = sizeof(*device); |
- |
- OSStatus result = AudioObjectGetPropertyData( |
- kAudioObjectSystemObject, |
- &kAddress, |
- 0, |
- 0, |
- &size, |
- device); |
- |
- if ((result != kAudioHardwareNoError) || (*device == kAudioDeviceUnknown)) { |
- DLOG(ERROR) << "Error getting default output AudioDevice."; |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool AudioManagerMac::GetDefaultOutputChannels( |
- int* channels, int* channels_per_frame) { |
- AudioDeviceID device; |
- if (!GetDefaultOutputDevice(&device)) |
- return false; |
- |
- return GetDeviceChannels(device, |
- kAudioDevicePropertyScopeOutput, |
- channels, |
- channels_per_frame); |
-} |
- |
-bool AudioManagerMac::GetDeviceChannels( |
- AudioDeviceID device, |
- AudioObjectPropertyScope scope, |
- int* channels, |
- int* channels_per_frame) { |
- CHECK(channels); |
- CHECK(channels_per_frame); |
- |
- // Get stream configuration. |
- AudioObjectPropertyAddress pa; |
- pa.mSelector = kAudioDevicePropertyStreamConfiguration; |
- pa.mScope = scope; |
- pa.mElement = kAudioObjectPropertyElementMaster; |
- |
- UInt32 size; |
- OSStatus result = AudioObjectGetPropertyDataSize(device, &pa, 0, 0, &size); |
- if (result != noErr || !size) |
- return false; |
- |
- // Allocate storage. |
- scoped_array<uint8> list_storage(new uint8[size]); |
- AudioBufferList& buffer_list = |
- *reinterpret_cast<AudioBufferList*>(list_storage.get()); |
- |
- result = AudioObjectGetPropertyData( |
- device, |
- &pa, |
- 0, |
- 0, |
- &size, |
- &buffer_list); |
- if (result != noErr) |
- return false; |
- |
- // Determine number of input channels. |
- *channels_per_frame = buffer_list.mNumberBuffers > 0 ? |
- buffer_list.mBuffers[0].mNumberChannels : 0; |
- if (*channels_per_frame == 1 && buffer_list.mNumberBuffers > 1) { |
- // Non-interleaved. |
- *channels = buffer_list.mNumberBuffers; |
- } else { |
- // Interleaved. |
- *channels = *channels_per_frame; |
- } |
- |
- return true; |
-} |
- |
void AudioManagerMac::GetAudioInputDeviceNames( |
media::AudioDeviceNames* device_names) { |
GetAudioDeviceInfo(true, device_names); |
@@ -424,23 +333,11 @@ |
AudioParameters AudioManagerMac::GetPreferredOutputStreamParameters( |
const AudioParameters& input_params) { |
- int hardware_channels = 2; |
- int hardware_channels_per_frame = 1; |
- if (!GetDefaultOutputChannels(&hardware_channels, |
- &hardware_channels_per_frame)) { |
- // Fallback to stereo. |
- hardware_channels = 2; |
- } |
- |
- ChannelLayout channel_layout = GuessChannelLayout(hardware_channels); |
- |
+ ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
int buffer_size = kDefaultLowLatencyBufferSize; |
- int user_buffer_size = GetUserBufferSize(); |
- if (user_buffer_size) |
- buffer_size = user_buffer_size; |
- |
int input_channels = 0; |
if (input_params.IsValid()) { |
+ channel_layout = input_params.channel_layout(); |
input_channels = input_params.input_channels(); |
if (input_channels > 0) { |
@@ -452,18 +349,13 @@ |
} |
} |
- AudioParameters params( |
- AudioParameters::AUDIO_PCM_LOW_LATENCY, |
- channel_layout, |
- input_channels, |
- AUAudioOutputStream::HardwareSampleRate(), |
- 16, |
- buffer_size); |
+ int user_buffer_size = GetUserBufferSize(); |
+ if (user_buffer_size) |
+ buffer_size = user_buffer_size; |
- if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) |
- params.SetDiscreteChannels(hardware_channels); |
- |
- return params; |
+ return AudioParameters( |
+ AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, input_channels, |
+ AUAudioOutputStream::HardwareSampleRate(), 16, buffer_size); |
} |
void AudioManagerMac::CreateDeviceListener() { |