summaryrefslogtreecommitdiffstats
path: root/media/audio/pulse
diff options
context:
space:
mode:
authorhshi@chromium.org <hshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-07 01:09:42 +0000
committerhshi@chromium.org <hshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-07 01:09:42 +0000
commita32383a62ec66b892573fbef6c7434ad32fb2857 (patch)
tree8782790146237f2e48782c35866d58de99609733 /media/audio/pulse
parent73deb661416b1e9d72b4bf3b251deebd527e62ec (diff)
downloadchromium_src-a32383a62ec66b892573fbef6c7434ad32fb2857.zip
chromium_src-a32383a62ec66b892573fbef6c7434ad32fb2857.tar.gz
chromium_src-a32383a62ec66b892573fbef6c7434ad32fb2857.tar.bz2
Revert 186180 "Moved AudioUtil static functions:"
> 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 BUG=180682 TBR=xians@chromium.org TBR=dalecurtis@chromium.org Review URL: https://codereview.chromium.org/12440008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@186566 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/audio/pulse')
-rw-r--r--media/audio/pulse/audio_manager_pulse.cc46
-rw-r--r--media/audio/pulse/audio_manager_pulse.h11
2 files changed, 18 insertions, 39 deletions
diff --git a/media/audio/pulse/audio_manager_pulse.cc b/media/audio/pulse/audio_manager_pulse.cc
index 9787c9e..e7513705 100644
--- a/media/audio/pulse/audio_manager_pulse.cc
+++ b/media/audio/pulse/audio_manager_pulse.cc
@@ -11,13 +11,12 @@
#include "base/nix/xdg_util.h"
#include "base/process_util.h"
#include "base/stl_util.h"
-#include "media/audio/audio_parameters.h"
+#include "media/audio/audio_util.h"
#include "media/audio/linux/audio_manager_linux.h"
#include "media/audio/pulse/pulse_input.h"
#include "media/audio/pulse/pulse_output.h"
#include "media/audio/pulse/pulse_stubs.h"
#include "media/audio/pulse/pulse_util.h"
-#include "media/base/channel_layout.h"
using media_audio_pulse::kModulePulse;
using media_audio_pulse::InitializeStubs;
@@ -94,16 +93,6 @@ void AudioManagerPulse::GetAudioInputDeviceNames(
}
}
-AudioParameters AudioManagerPulse::GetInputStreamParameters(
- const std::string& device_id) {
- static const int kDefaultInputBufferSize = 1024;
-
- // TODO(xians): add support for querying native channel layout for pulse.
- return AudioParameters(
- AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
- GetNativeSampleRate(), 16, kDefaultInputBufferSize);
-}
-
AudioOutputStream* AudioManagerPulse::MakeLinearOutputStream(
const AudioParameters& params) {
DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format());
@@ -128,25 +117,6 @@ AudioInputStream* AudioManagerPulse::MakeLowLatencyInputStream(
return MakeInputStream(params, device_id);
}
-AudioParameters AudioManagerPulse::GetPreferredOutputStreamParameters(
- const AudioParameters& input_params) {
- static const int kDefaultOutputBufferSize = 512;
-
- ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO;
- int buffer_size = kDefaultOutputBufferSize;
- int bits_per_sample = 16;
- int input_channels = 0;
- if (input_params.IsValid()) {
- 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,
- GetNativeSampleRate(), bits_per_sample, buffer_size);
-}
-
AudioOutputStream* AudioManagerPulse::MakeOutputStream(
const AudioParameters& params) {
return new PulseAudioOutputStream(params, this);
@@ -158,6 +128,20 @@ AudioInputStream* AudioManagerPulse::MakeInputStream(
input_mainloop_, input_context_);
}
+AudioParameters AudioManagerPulse::GetPreferredLowLatencyOutputStreamParameters(
+ const AudioParameters& input_params) {
+ // TODO(xians): figure out the optimized buffer size for the Pulse IO.
+ int buffer_size = GetAudioHardwareBufferSize();
+ if (input_params.frames_per_buffer() < buffer_size)
+ buffer_size = input_params.frames_per_buffer();
+
+ // TODO(dalecurtis): This should include bits per channel and channel layout
+ // eventually.
+ return AudioParameters(
+ AudioParameters::AUDIO_PCM_LOW_LATENCY, input_params.channel_layout(),
+ input_params.sample_rate(), 16, buffer_size);
+}
+
int AudioManagerPulse::GetNativeSampleRate() {
DCHECK(input_mainloop_);
DCHECK(input_context_);
diff --git a/media/audio/pulse/audio_manager_pulse.h b/media/audio/pulse/audio_manager_pulse.h
index 9dacb9c..cff2903 100644
--- a/media/audio/pulse/audio_manager_pulse.h
+++ b/media/audio/pulse/audio_manager_pulse.h
@@ -27,8 +27,6 @@ class MEDIA_EXPORT AudioManagerPulse : public AudioManagerBase {
virtual void ShowAudioInputSettings() OVERRIDE;
virtual void GetAudioInputDeviceNames(media::AudioDeviceNames* device_names)
OVERRIDE;
- virtual AudioParameters GetInputStreamParameters(
- const std::string& device_id) OVERRIDE;
// Implementation of AudioManagerBase.
virtual AudioOutputStream* MakeLinearOutputStream(
@@ -39,11 +37,11 @@ class MEDIA_EXPORT AudioManagerPulse : public AudioManagerBase {
const AudioParameters& params, const std::string& device_id) OVERRIDE;
virtual AudioInputStream* MakeLowLatencyInputStream(
const AudioParameters& params, const std::string& device_id) OVERRIDE;
-
- protected:
- virtual AudioParameters GetPreferredOutputStreamParameters(
+ virtual AudioParameters GetPreferredLowLatencyOutputStreamParameters(
const AudioParameters& input_params) OVERRIDE;
+ int GetNativeSampleRate();
+
private:
bool Init();
void DestroyPulse();
@@ -66,9 +64,6 @@ class MEDIA_EXPORT AudioManagerPulse : public AudioManagerBase {
AudioInputStream* MakeInputStream(const AudioParameters& params,
const std::string& device_id);
- // Gets the native sample rate of Pulse.
- int GetNativeSampleRate();
-
pa_threaded_mainloop* input_mainloop_;
pa_context* input_context_;
AudioDeviceNames* devices_;