diff options
Diffstat (limited to 'chromium/media/audio/alsa/audio_manager_alsa.h')
-rw-r--r-- | chromium/media/audio/alsa/audio_manager_alsa.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/chromium/media/audio/alsa/audio_manager_alsa.h b/chromium/media/audio/alsa/audio_manager_alsa.h new file mode 100644 index 00000000000..155089f06bc --- /dev/null +++ b/chromium/media/audio/alsa/audio_manager_alsa.h @@ -0,0 +1,94 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef MEDIA_AUDIO_ALSA_AUDIO_MANAGER_ALSA_H_ +#define MEDIA_AUDIO_ALSA_AUDIO_MANAGER_ALSA_H_ + +#include <string> +#include "base/compiler_specific.h" +#include "base/memory/ref_counted.h" +#include "base/threading/thread.h" +#include "media/audio/audio_manager_base.h" + +namespace media { + +class AlsaWrapper; + +class MEDIA_EXPORT AudioManagerAlsa : public AudioManagerBase { + public: + AudioManagerAlsa(AudioLogFactory* audio_log_factory); + + static void ShowLinuxAudioInputSettings(); + + // Implementation of AudioManager. + virtual bool HasAudioOutputDevices() OVERRIDE; + virtual bool HasAudioInputDevices() OVERRIDE; + virtual void ShowAudioInputSettings() OVERRIDE; + virtual void GetAudioInputDeviceNames( + AudioDeviceNames* device_names) OVERRIDE; + virtual void GetAudioOutputDeviceNames( + AudioDeviceNames* device_names) OVERRIDE; + virtual AudioParameters GetInputStreamParameters( + const std::string& device_id) OVERRIDE; + + // Implementation of AudioManagerBase. + virtual AudioOutputStream* MakeLinearOutputStream( + const AudioParameters& params) OVERRIDE; + virtual AudioOutputStream* MakeLowLatencyOutputStream( + const AudioParameters& params, + const std::string& device_id, + const std::string& input_device_id) OVERRIDE; + virtual AudioInputStream* MakeLinearInputStream( + const AudioParameters& params, const std::string& device_id) OVERRIDE; + virtual AudioInputStream* MakeLowLatencyInputStream( + const AudioParameters& params, const std::string& device_id) OVERRIDE; + + protected: + virtual ~AudioManagerAlsa(); + + virtual AudioParameters GetPreferredOutputStreamParameters( + const std::string& output_device_id, + const AudioParameters& input_params) OVERRIDE; + + private: + enum StreamType { + kStreamPlayback = 0, + kStreamCapture, + }; + + // Gets a list of available ALSA devices. + void GetAlsaAudioDevices(StreamType type, + media::AudioDeviceNames* device_names); + + // Gets the ALSA devices' names and ids that support streams of the + // given type. + void GetAlsaDevicesInfo(StreamType type, + void** hint, + media::AudioDeviceNames* device_names); + + // Checks if the specific ALSA device is available. + static bool IsAlsaDeviceAvailable(StreamType type, + const char* device_name); + + static const char* UnwantedDeviceTypeWhenEnumerating( + StreamType wanted_type); + + // Returns true if a device is present for the given stream type. + bool HasAnyAlsaAudioDevice(StreamType stream); + + // Called by MakeLinearOutputStream and MakeLowLatencyOutputStream. + AudioOutputStream* MakeOutputStream(const AudioParameters& params); + + // Called by MakeLinearInputStream and MakeLowLatencyInputStream. + AudioInputStream* MakeInputStream(const AudioParameters& params, + const std::string& device_id); + + scoped_ptr<AlsaWrapper> wrapper_; + + DISALLOW_COPY_AND_ASSIGN(AudioManagerAlsa); +}; + +} // namespace media + +#endif // MEDIA_AUDIO_ALSA_AUDIO_MANAGER_ALSA_H_ |