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