audio_manager_cras.h revision a36e5920737c6adbddd3e43b760e5de8431db6e0
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_CRAS_AUDIO_MANAGER_CRAS_H_
6#define MEDIA_AUDIO_CRAS_AUDIO_MANAGER_CRAS_H_
7
8#include <string>
9
10#include "base/compiler_specific.h"
11#include "base/memory/ref_counted.h"
12#include "media/audio/audio_manager_base.h"
13
14namespace media {
15
16class MEDIA_EXPORT AudioManagerCras : public AudioManagerBase {
17 public:
18  // Unique ID of the "loopback" input device. This device captures post-mix,
19  // pre-DSP system audio.
20  static const char kLoopbackDeviceId[];
21
22  AudioManagerCras();
23
24  // AudioManager implementation.
25  virtual bool HasAudioOutputDevices() OVERRIDE;
26  virtual bool HasAudioInputDevices() OVERRIDE;
27  virtual void ShowAudioInputSettings() OVERRIDE;
28  virtual void GetAudioInputDeviceNames(media::AudioDeviceNames* device_names)
29      OVERRIDE;
30  virtual AudioParameters GetInputStreamParameters(
31      const std::string& device_id) OVERRIDE;
32
33  // AudioManagerBase implementation.
34  virtual AudioOutputStream* MakeLinearOutputStream(
35      const AudioParameters& params) OVERRIDE;
36  virtual AudioOutputStream* MakeLowLatencyOutputStream(
37      const AudioParameters& params,
38      const std::string& input_device_id) OVERRIDE;
39  virtual AudioInputStream* MakeLinearInputStream(
40      const AudioParameters& params, const std::string& device_id) OVERRIDE;
41  virtual AudioInputStream* MakeLowLatencyInputStream(
42      const AudioParameters& params, const std::string& device_id) OVERRIDE;
43
44 protected:
45  virtual ~AudioManagerCras();
46
47  virtual AudioParameters GetPreferredOutputStreamParameters(
48      const AudioParameters& input_params) OVERRIDE;
49
50 private:
51  // Gets a list of available cras input devices.
52  void GetCrasAudioInputDevices(media::AudioDeviceNames* device_names);
53
54  // Called by MakeLinearOutputStream and MakeLowLatencyOutputStream.
55  AudioOutputStream* MakeOutputStream(const AudioParameters& params);
56
57  // Called by MakeLinearInputStream and MakeLowLatencyInputStream.
58  AudioInputStream* MakeInputStream(const AudioParameters& params,
59                                    const std::string& device_id);
60
61  DISALLOW_COPY_AND_ASSIGN(AudioManagerCras);
62};
63
64}  // namespace media
65
66#endif  // MEDIA_AUDIO_CRAS_AUDIO_MANAGER_CRAS_H_
67