diff options
author | xians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-05 15:31:42 +0000 |
---|---|---|
committer | xians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-05 15:31:42 +0000 |
commit | eb6d6d7568809e586010e88b3313e2380ade18c3 (patch) | |
tree | 8721f4300ce3f59a8d112d754d999bfeafbad46e /media/audio/ios/audio_manager_ios.mm | |
parent | f1b2c6a7568646e47c3856b15001796316169dc6 (diff) | |
download | chromium_src-eb6d6d7568809e586010e88b3313e2380ade18c3.zip chromium_src-eb6d6d7568809e586010e88b3313e2380ade18c3.tar.gz chromium_src-eb6d6d7568809e586010e88b3313e2380ade18c3.tar.bz2 |
Moved AudioUtil static functions:
GetAudioHardwareSampleRate
GetAudioInputHardwareSampleRate
GetAudioHardwareBufferSize
GetAudioInputHardwareChannelLayout
to AudioManager interfaces:
GetDefaultOutputStreamParameters()
GetDefaultInputStreamParameters(const std::string& device_id)
By doing this, we remove the messy ifdef statements in AudioUtil, allow getting the native sample rate for Pulse, each AudioManager is responsible for providing the optimal audio params to achieve the best audio performance, for example, cras can raise the buffer size to reduce CPU consumption without affecting other Linux products.
BUG=178142,137326,120319
TEST=media_unittests, content_unittests
Review URL: https://chromiumcodereview.appspot.com/12316131
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@186180 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/audio/ios/audio_manager_ios.mm')
-rw-r--r-- | media/audio/ios/audio_manager_ios.mm | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/media/audio/ios/audio_manager_ios.mm b/media/audio/ios/audio_manager_ios.mm index 8949b1c..00b8d79 100644 --- a/media/audio/ios/audio_manager_ios.mm +++ b/media/audio/ios/audio_manager_ios.mm @@ -8,9 +8,11 @@ #import <AVFoundation/AVFoundation.h> #include "base/sys_info.h" +#include "media/audio/audio_parameters.h" #include "media/audio/fake_audio_input_stream.h" #include "media/audio/ios/audio_session_util_ios.h" #include "media/audio/mac/audio_input_mac.h" +#include "media/base/channel_layout.h" #include "media/base/limits.h" namespace media { @@ -47,6 +49,18 @@ bool AudioManagerIOS::HasAudioInputDevices() { return error == kAudioSessionNoError ? audio_input_is_available : false; } +AudioParameters AudioManagerIOS::GetInputStreamParameters( + const std::string& device_id) { + // TODO(xians): figure out the right input sample rate and buffer size to + // achieve the best audio performance for iOS devices. + // TODO(xians): query the native channel layout for the specific device. + static const int kDefaultSampleRate = 48000; + static const int kDefaultBufferSize = 2048; + return AudioParameters( + AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, + kDefaultSampleRate, 16, kDefaultBufferSize); +} + AudioOutputStream* AudioManagerIOS::MakeAudioOutputStream( const AudioParameters& params) { NOTIMPLEMENTED(); // Only input is supported on iOS. @@ -90,6 +104,22 @@ AudioInputStream* AudioManagerIOS::MakeLowLatencyInputStream( return MakeAudioInputStream(params, device_id); } + +AudioParameters AudioManagerIOS::GetPreferredOutputStreamParameters( + const AudioParameters& input_params) { + // TODO(xians): handle the case when input_params is valid. + // TODO(xians): figure out the right output sample rate and sample rate to + // achieve the best audio performance for iOS devices. + static const int kDefaultSampleRate = 48000; + static const int kDefaultBufferSize = 2048; + if (input_params.IsValid()) { + NOTREACHED(); + } + return AudioParameters( + AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, + kDefaultSampleRate, 16, kDefaultBufferSize); +} + // Called by the stream when it has been released by calling Close(). void AudioManagerIOS::ReleaseOutputStream(AudioOutputStream* stream) { NOTIMPLEMENTED(); // Only input is supported on iOS. |