| // 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_ALSA_UTIL_H_ |
| #define MEDIA_AUDIO_ALSA_ALSA_UTIL_H_ |
| |
| #include <alsa/asoundlib.h> |
| #include <string> |
| |
| #include "media/base/media_export.h" |
| |
| namespace media { |
| class AlsaWrapper; |
| } |
| |
| namespace alsa_util { |
| |
| // When opening ALSA devices, |period_us| is the size of a packet and |
| // |buffer_us| is the size of the ring buffer, which consists of multiple |
| // packets. In capture devices, the latency relies more on |period_us|, and thus |
| // one may require more details upon the value implicitly set by ALSA. |
| MEDIA_EXPORT snd_pcm_t* OpenCaptureDevice(media::AlsaWrapper* wrapper, |
| const char* device_name, |
| int channels, |
| int sample_rate, |
| snd_pcm_format_t pcm_format, |
| int buffer_us, |
| int period_us); |
| |
| snd_pcm_t* OpenPlaybackDevice(media::AlsaWrapper* wrapper, |
| const char* device_name, |
| int channels, |
| int sample_rate, |
| snd_pcm_format_t pcm_format, |
| int buffer_us); |
| |
| int CloseDevice(media::AlsaWrapper* wrapper, snd_pcm_t* handle); |
| |
| snd_mixer_t* OpenMixer(media::AlsaWrapper* wrapper, |
| const std::string& device_name); |
| |
| void CloseMixer(media::AlsaWrapper* wrapper, |
| snd_mixer_t* mixer, |
| const std::string& device_name); |
| |
| snd_mixer_elem_t* LoadCaptureMixerElement(media::AlsaWrapper* wrapper, |
| snd_mixer_t* mixer); |
| |
| } // namespace alsa_util |
| |
| #endif // MEDIA_AUDIO_ALSA_ALSA_UTIL_H_ |