| Index: media/audio/linux/audio_manager_linux.cc
|
| diff --git a/media/audio/linux/audio_manager_linux.cc b/media/audio/linux/audio_manager_linux.cc
|
| index 40a878341335d81736af0056302521f161085398..b22ec44e7dfc6ac516160f210e0ae6fa16d731de 100644
|
| --- a/media/audio/linux/audio_manager_linux.cc
|
| +++ b/media/audio/linux/audio_manager_linux.cc
|
| @@ -8,10 +8,19 @@
|
| #include "base/logging.h"
|
| #include "media/audio/fake_audio_input_stream.h"
|
| #include "media/audio/fake_audio_output_stream.h"
|
| +#include "media/audio/linux/alsa_input.h"
|
| #include "media/audio/linux/alsa_output.h"
|
| #include "media/audio/linux/alsa_wrapper.h"
|
| +#include "media/base/limits.h"
|
| #include "media/base/media_switches.h"
|
|
|
| +namespace {
|
| +
|
| +const int kMaxInputChannels = 2;
|
| +const int kMaxSamplesPerPacket = media::Limits::kMaxSampleRate;
|
| +
|
| +} // namespace
|
| +
|
| // Implementation of AudioManager.
|
| bool AudioManagerLinux::HasAudioOutputDevices() {
|
| // TODO(ajwong): Make this actually query audio devices.
|
| @@ -19,8 +28,8 @@ bool AudioManagerLinux::HasAudioOutputDevices() {
|
| }
|
|
|
| bool AudioManagerLinux::HasAudioInputDevices() {
|
| - // TODO(satish): implement.
|
| - return false;
|
| + // TODO(satish): Make this actually query audio devices.
|
| + return true;
|
| }
|
|
|
| AudioOutputStream* AudioManagerLinux::MakeAudioOutputStream(
|
| @@ -36,9 +45,10 @@ AudioOutputStream* AudioManagerLinux::MakeAudioOutputStream(
|
| }
|
|
|
| std::string device_name = AlsaPcmOutputStream::kAutoSelectDevice;
|
| - if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAlsaDevice)) {
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kAlsaOutputDevice)) {
|
| device_name = CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
| - switches::kAlsaDevice);
|
| + switches::kAlsaOutputDevice);
|
| }
|
| AlsaPcmOutputStream* stream =
|
| new AlsaPcmOutputStream(device_name, params, wrapper_.get(), this,
|
| @@ -51,11 +61,29 @@ AudioOutputStream* AudioManagerLinux::MakeAudioOutputStream(
|
|
|
| AudioInputStream* AudioManagerLinux::MakeAudioInputStream(
|
| AudioParameters params, int samples_per_packet) {
|
| + if (!params.IsValid() || params.channels > kMaxInputChannels ||
|
| + samples_per_packet < 0 || samples_per_packet > kMaxSamplesPerPacket)
|
| + return NULL;
|
| +
|
| if (params.format == AudioParameters::AUDIO_MOCK) {
|
| return FakeAudioInputStream::MakeFakeStream(params, samples_per_packet);
|
| + } else if (params.format != AudioParameters::AUDIO_PCM_LINEAR) {
|
| + return NULL;
|
| + }
|
| +
|
| + if (!initialized())
|
| + return NULL;
|
| +
|
| + std::string device_name = AlsaPcmOutputStream::kAutoSelectDevice;
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAlsaInputDevice)) {
|
| + device_name = CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
| + switches::kAlsaInputDevice);
|
| }
|
| - // TODO(satish): implement.
|
| - return NULL;
|
| +
|
| + AlsaPcmInputStream* stream = new AlsaPcmInputStream(
|
| + device_name, params, samples_per_packet, wrapper_.get());
|
| +
|
| + return stream;
|
| }
|
|
|
| AudioManagerLinux::AudioManagerLinux() {
|
|
|