audio_manager_android.h revision 868fa2fe829687343ffae624259930155e16dbd8
1// Copyright (c) 2012 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_ANDROID_AUDIO_MANAGER_ANDROID_H_ 6#define MEDIA_AUDIO_ANDROID_AUDIO_MANAGER_ANDROID_H_ 7 8#include "base/android/jni_android.h" 9#include "media/audio/audio_manager_base.h" 10 11namespace media { 12 13// Android implemention of AudioManager. 14class MEDIA_EXPORT AudioManagerAndroid : public AudioManagerBase { 15 public: 16 AudioManagerAndroid(); 17 18 // Implementation of AudioManager. 19 virtual bool HasAudioOutputDevices() OVERRIDE; 20 virtual bool HasAudioInputDevices() OVERRIDE; 21 virtual void GetAudioInputDeviceNames(media::AudioDeviceNames* device_names) 22 OVERRIDE; 23 virtual AudioParameters GetInputStreamParameters( 24 const std::string& device_id) OVERRIDE; 25 26 virtual AudioOutputStream* MakeAudioOutputStream( 27 const AudioParameters& params, 28 const std::string& input_device_id) OVERRIDE; 29 virtual AudioInputStream* MakeAudioInputStream( 30 const AudioParameters& params, const std::string& device_id) OVERRIDE; 31 virtual void ReleaseOutputStream(AudioOutputStream* stream) OVERRIDE; 32 virtual void ReleaseInputStream(AudioInputStream* stream) OVERRIDE; 33 34 // Implementation of AudioManagerBase. 35 virtual AudioOutputStream* MakeLinearOutputStream( 36 const AudioParameters& params) OVERRIDE; 37 virtual AudioOutputStream* MakeLowLatencyOutputStream( 38 const AudioParameters& params, 39 const std::string& input_device_id) OVERRIDE; 40 virtual AudioInputStream* MakeLinearInputStream( 41 const AudioParameters& params, const std::string& device_id) OVERRIDE; 42 virtual AudioInputStream* MakeLowLatencyInputStream( 43 const AudioParameters& params, const std::string& device_id) OVERRIDE; 44 45 static bool RegisterAudioManager(JNIEnv* env); 46 47 protected: 48 virtual ~AudioManagerAndroid(); 49 50 virtual AudioParameters GetPreferredOutputStreamParameters( 51 const AudioParameters& input_params) OVERRIDE; 52 53 private: 54 void SetAudioMode(int mode); 55 void RegisterHeadsetReceiver(); 56 void UnregisterHeadsetReceiver(); 57 int GetNativeOutputSampleRate(); 58 bool IsAudioLowLatencySupported(); 59 int GetAudioLowLatencyOutputFrameSize(); 60 int GetOptimalOutputFrameSize(int sample_rate, int channels); 61 62 // Java AudioManager instance. 63 base::android::ScopedJavaGlobalRef<jobject> j_audio_manager_; 64 65 DISALLOW_COPY_AND_ASSIGN(AudioManagerAndroid); 66}; 67 68} // namespace media 69 70#endif // MEDIA_AUDIO_ANDROID_AUDIO_MANAGER_ANDROID_H_ 71