alsa_util.h revision f2477e01787aa58f445919b809d89e252beef54f
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef MEDIA_AUDIO_ALSA_ALSA_UTIL_H_
6#define MEDIA_AUDIO_ALSA_ALSA_UTIL_H_
7
8#include <alsa/asoundlib.h>
9#include <string>
10
11namespace media {
12class AlsaWrapper;
13}
14
15namespace alsa_util {
16
17snd_pcm_format_t BitsToFormat(int bits_per_sample);
18
19snd_pcm_t* OpenCaptureDevice(media::AlsaWrapper* wrapper,
20                             const char* device_name,
21                             int channels,
22                             int sample_rate,
23                             snd_pcm_format_t pcm_format,
24                             int latency_us);
25
26snd_pcm_t* OpenPlaybackDevice(media::AlsaWrapper* wrapper,
27                              const char* device_name,
28                              int channels,
29                              int sample_rate,
30                              snd_pcm_format_t pcm_format,
31                              int latency_us);
32
33int CloseDevice(media::AlsaWrapper* wrapper, snd_pcm_t* handle);
34
35snd_mixer_t* OpenMixer(media::AlsaWrapper* wrapper,
36                       const std::string& device_name);
37
38void CloseMixer(media::AlsaWrapper* wrapper,
39                snd_mixer_t* mixer,
40                const std::string& device_name);
41
42snd_mixer_elem_t* LoadCaptureMixerElement(media::AlsaWrapper* wrapper,
43                                          snd_mixer_t* mixer);
44
45}  // namespace alsa_util
46
47#endif  // MEDIA_AUDIO_ALSA_ALSA_UTIL_H_
48