summaryrefslogtreecommitdiffstats
path: root/media/audio/openbsd
diff options
context:
space:
mode:
authorxians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-05 15:31:42 +0000
committerxians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-05 15:31:42 +0000
commiteb6d6d7568809e586010e88b3313e2380ade18c3 (patch)
tree8721f4300ce3f59a8d112d754d999bfeafbad46e /media/audio/openbsd
parentf1b2c6a7568646e47c3856b15001796316169dc6 (diff)
downloadchromium_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.cc38
-rw-r--r--media/audio/openbsd/audio_manager_openbsd.h5
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);