Chromium Code Reviews| Index: media/audio/mac/audio_manager_mac.cc |
| diff --git a/media/audio/mac/audio_manager_mac.cc b/media/audio/mac/audio_manager_mac.cc |
| index edf59930d155f57bda6be85a2a139c4fa3314ad6..d6c10374563ad9c15fd7bdd72f93e57e77cef81a 100644 |
| --- a/media/audio/mac/audio_manager_mac.cc |
| +++ b/media/audio/mac/audio_manager_mac.cc |
| @@ -10,6 +10,7 @@ |
| #include "base/mac/mac_logging.h" |
| #include "base/mac/scoped_cftyperef.h" |
| #include "base/sys_string_conversions.h" |
| +#include "media/audio/audio_util.h" |
| #include "media/audio/mac/audio_input_mac.h" |
| #include "media/audio/mac/audio_low_latency_input_mac.h" |
| #include "media/audio/mac/audio_low_latency_output_mac.h" |
| @@ -25,6 +26,9 @@ namespace media { |
| // Maximum number of output streams that can be open simultaneously. |
| static const int kMaxOutputStreams = 50; |
| +// Maximum buffer size CoreAudio can support. |
| +static const int kMaxBufferSize = 2047; |
|
DaleCurtis
2012/10/01 17:37:36
Add some comment about low latency specifically. M
no longer working on chromium
2012/10/02 08:06:22
Done.
|
| + |
| static bool HasAudioHardware(AudioObjectPropertySelector selector) { |
| AudioDeviceID output_device_id = kAudioObjectUnknown; |
| const AudioObjectPropertyAddress property_address = { |
| @@ -333,4 +337,22 @@ AudioManager* CreateAudioManager() { |
| return new AudioManagerMac(); |
| } |
| +AudioParameters AudioManagerMac::GetPreferredLowLatencyOutputStreamParameters( |
| + const AudioParameters& params) { |
| + // Applications should use their own preferred buffer size when no resampler |
| + // is needed, and Apple CoreAudio can accept any buffer size up to 2047. |
| + int native_sample_rate = GetAudioHardwareSampleRate(); |
| + int buffer_size = GetAudioHardwareBufferSize(); |
| + if (native_sample_rate == params.sample_rate() && |
| + params.frames_per_buffer() <= kMaxBufferSize) { |
| + buffer_size = params.frames_per_buffer(); |
| + } |
| + |
| + return AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY, |
| + params.channel_layout(), |
| + native_sample_rate, |
| + 16, |
| + buffer_size); |
| +} |
| + |
| } // namespace media |