diff options
author | hshi@chromium.org <hshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-07 01:09:42 +0000 |
---|---|---|
committer | hshi@chromium.org <hshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-07 01:09:42 +0000 |
commit | a32383a62ec66b892573fbef6c7434ad32fb2857 (patch) | |
tree | 8782790146237f2e48782c35866d58de99609733 /media/audio/pulse | |
parent | 73deb661416b1e9d72b4bf3b251deebd527e62ec (diff) | |
download | chromium_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.cc | 46 | ||||
-rw-r--r-- | media/audio/pulse/audio_manager_pulse.h | 11 |
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_; |