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/openbsd | |
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/openbsd')
-rw-r--r-- | media/audio/openbsd/audio_manager_openbsd.cc | 38 | ||||
-rw-r--r-- | media/audio/openbsd/audio_manager_openbsd.h | 5 |
2 files changed, 43 insertions, 0 deletions
diff --git a/media/audio/openbsd/audio_manager_openbsd.cc b/media/audio/openbsd/audio_manager_openbsd.cc index 84304a5..67fba91 100644 --- a/media/audio/openbsd/audio_manager_openbsd.cc +++ b/media/audio/openbsd/audio_manager_openbsd.cc @@ -7,9 +7,11 @@ #include "base/command_line.h" #include "base/stl_util.h" #include "media/audio/audio_output_dispatcher.h" +#include "media/audio/audio_parameters.h" #if defined(USE_PULSEAUDIO) #include "media/audio/pulse/pulse_output.h" #endif +#include "media/base/channel_layout.h" #include "media/base/limits.h" #include "media/base/media_switches.h" @@ -20,6 +22,9 @@ namespace media { // Maximum number of output streams that can be open simultaneously. static const int kMaxOutputStreams = 50; +// Default sample rate for input and output streams. +static const int kDefaultSampleRate = 48000; + // Implementation of AudioManager. static bool HasAudioHardware() { int fd; @@ -43,6 +48,15 @@ bool AudioManagerOpenBSD::HasAudioInputDevices() { return HasAudioHardware(); } +AudioParameters AudioManagerOpenBSD::GetInputStreamParameters( + const std::string& device_id) { + static const int kDefaultInputBufferSize = 1024; + + return AudioParameters( + AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, + kDefaultSampleRate, 16, kDefaultInputBufferSize); +} + AudioManagerOpenBSD::AudioManagerOpenBSD() { SetMaxOutputStreamsAllowed(kMaxOutputStreams); } @@ -77,6 +91,29 @@ AudioInputStream* AudioManagerOpenBSD::MakeLowLatencyInputStream( return NULL; } +AudioParameters AudioManagerOpenBSD::GetPreferredOutputStreamParameters( + const AudioParameters& input_params) { + static const int kDefaultOutputBufferSize = 512; + + ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; + int sample_rate = kDefaultSampleRate; + int buffer_size = kDefaultOutputBufferSize; + int bits_per_sample = 16; + int input_channels = 0; + if (input_params.IsValid()) { + sample_rate = input_params.sample_rate(); + bits_per_sample = input_params.bits_per_sample(); + channel_layout = input_params.channel_layout(); + input_channels = input_params.input_channels(); + buffer_size = std::min(buffer_size, input_params.frames_per_buffer()); + } + + return AudioParameters( + AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, input_channels, + sample_rate, bits_per_sample, buffer_size); +} + + AudioOutputStream* AudioManagerOpenBSD::MakeOutputStream( const AudioParameters& params) { #if defined(USE_PULSEAUDIO) @@ -89,6 +126,7 @@ AudioOutputStream* AudioManagerOpenBSD::MakeOutputStream( return NULL; } +// TODO(xians): Merge AudioManagerOpenBSD with AudioManagerPulse; // static AudioManager* CreateAudioManager() { return new AudioManagerOpenBSD(); diff --git a/media/audio/openbsd/audio_manager_openbsd.h b/media/audio/openbsd/audio_manager_openbsd.h index aeba43e..14c5636 100644 --- a/media/audio/openbsd/audio_manager_openbsd.h +++ b/media/audio/openbsd/audio_manager_openbsd.h @@ -19,6 +19,8 @@ class MEDIA_EXPORT AudioManagerOpenBSD : public AudioManagerBase { // Implementation of AudioManager. virtual bool HasAudioOutputDevices() OVERRIDE; virtual bool HasAudioInputDevices() OVERRIDE; + virtual AudioParameters GetInputStreamParameters( + const std::string& device_id) OVERRIDE; // Implementation of AudioManagerBase. virtual AudioOutputStream* MakeLinearOutputStream( @@ -33,6 +35,9 @@ class MEDIA_EXPORT AudioManagerOpenBSD : public AudioManagerBase { protected: virtual ~AudioManagerOpenBSD(); + virtual AudioParameters GetPreferredOutputStreamParameters( + const AudioParameters& input_params) OVERRIDE; + private: // Called by MakeLinearOutputStream and MakeLowLatencyOutputStream. AudioOutputStream* MakeOutputStream(const AudioParameters& params); |