12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef MEDIA_AUDIO_CRAS_AUDIO_MANAGER_CRAS_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MEDIA_AUDIO_CRAS_AUDIO_MANAGER_CRAS_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <cras_types.h> 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/compiler_specific.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/ref_counted.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "media/audio/audio_manager_base.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace media { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class MEDIA_EXPORT AudioManagerCras : public AudioManagerBase { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) AudioManagerCras(AudioLogFactory* audio_log_factory); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // AudioManager implementation. 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool HasAudioOutputDevices() OVERRIDE; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool HasAudioInputDevices() OVERRIDE; 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ShowAudioInputSettings() OVERRIDE; 26d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual void GetAudioInputDeviceNames( 27d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) AudioDeviceNames* device_names) OVERRIDE; 28d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual void GetAudioOutputDeviceNames( 29d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) AudioDeviceNames* device_names) OVERRIDE; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual AudioParameters GetInputStreamParameters( 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& device_id) OVERRIDE; 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // AudioManagerBase implementation. 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual AudioOutputStream* MakeLinearOutputStream( 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const AudioParameters& params) OVERRIDE; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual AudioOutputStream* MakeLowLatencyOutputStream( 37868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const AudioParameters& params, 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& device_id) OVERRIDE; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual AudioInputStream* MakeLinearInputStream( 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const AudioParameters& params, const std::string& device_id) OVERRIDE; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual AudioInputStream* MakeLowLatencyInputStream( 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const AudioParameters& params, const std::string& device_id) OVERRIDE; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static snd_pcm_format_t BitsToFormat(int bits_per_sample); 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~AudioManagerCras(); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual AudioParameters GetPreferredOutputStreamParameters( 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& output_device_id, 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const AudioParameters& input_params) OVERRIDE; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Called by MakeLinearOutputStream and MakeLowLatencyOutputStream. 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AudioOutputStream* MakeOutputStream(const AudioParameters& params); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Called by MakeLinearInputStream and MakeLowLatencyInputStream. 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AudioInputStream* MakeInputStream(const AudioParameters& params, 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& device_id); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AudioManagerCras); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace media 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // MEDIA_AUDIO_CRAS_AUDIO_MANAGER_CRAS_H_ 67