| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 // allows calls like JavaAudioManager::Close() while hiding the Java/JNI | 40 // allows calls like JavaAudioManager::Close() while hiding the Java/JNI |
| 41 // parts that are associated with this call. | 41 // parts that are associated with this call. |
| 42 class JavaAudioManager { | 42 class JavaAudioManager { |
| 43 public: | 43 public: |
| 44 JavaAudioManager(NativeRegistration* native_registration, | 44 JavaAudioManager(NativeRegistration* native_registration, |
| 45 std::unique_ptr<GlobalRef> audio_manager); | 45 std::unique_ptr<GlobalRef> audio_manager); |
| 46 ~JavaAudioManager(); | 46 ~JavaAudioManager(); |
| 47 | 47 |
| 48 bool Init(); | 48 bool Init(); |
| 49 void Close(); | 49 void Close(); |
| 50 void SetCommunicationMode(bool enable); | |
| 51 bool IsCommunicationModeEnabled(); | 50 bool IsCommunicationModeEnabled(); |
| 52 bool IsDeviceBlacklistedForOpenSLESUsage(); | 51 bool IsDeviceBlacklistedForOpenSLESUsage(); |
| 53 | 52 |
| 54 private: | 53 private: |
| 55 std::unique_ptr<GlobalRef> audio_manager_; | 54 std::unique_ptr<GlobalRef> audio_manager_; |
| 56 jmethodID init_; | 55 jmethodID init_; |
| 57 jmethodID dispose_; | 56 jmethodID dispose_; |
| 58 jmethodID set_communication_mode_; | |
| 59 jmethodID is_communication_mode_enabled_; | 57 jmethodID is_communication_mode_enabled_; |
| 60 jmethodID is_device_blacklisted_for_open_sles_usage_; | 58 jmethodID is_device_blacklisted_for_open_sles_usage_; |
| 61 }; | 59 }; |
| 62 | 60 |
| 63 AudioManager(); | 61 AudioManager(); |
| 64 ~AudioManager(); | 62 ~AudioManager(); |
| 65 | 63 |
| 66 // Sets the currently active audio layer combination. Must be called before | 64 // Sets the currently active audio layer combination. Must be called before |
| 67 // Init(). | 65 // Init(). |
| 68 void SetActiveAudioLayer(AudioDeviceModule::AudioLayer audio_layer); | 66 void SetActiveAudioLayer(AudioDeviceModule::AudioLayer audio_layer); |
| 69 | 67 |
| 70 // Creates and realizes the main (global) Open SL engine object and returns | 68 // Creates and realizes the main (global) Open SL engine object and returns |
| 71 // a reference to it. The engine object is only created at the first call | 69 // a reference to it. The engine object is only created at the first call |
| 72 // since OpenSL ES for Android only supports a single engine per application. | 70 // since OpenSL ES for Android only supports a single engine per application. |
| 73 // Subsequent calls returns the already created engine. The SL engine object | 71 // Subsequent calls returns the already created engine. The SL engine object |
| 74 // is destroyed when the AudioManager object is deleted. It means that the | 72 // is destroyed when the AudioManager object is deleted. It means that the |
| 75 // engine object will be the first OpenSL ES object to be created and last | 73 // engine object will be the first OpenSL ES object to be created and last |
| 76 // object to be destroyed. | 74 // object to be destroyed. |
| 77 // Note that NULL will be returned unless the audio layer is specified as | 75 // Note that NULL will be returned unless the audio layer is specified as |
| 78 // AudioDeviceModule::kAndroidOpenSLESAudio or | 76 // AudioDeviceModule::kAndroidOpenSLESAudio or |
| 79 // AudioDeviceModule::kAndroidJavaInputAndOpenSLESOutputAudio. | 77 // AudioDeviceModule::kAndroidJavaInputAndOpenSLESOutputAudio. |
| 80 SLObjectItf GetOpenSLEngine(); | 78 SLObjectItf GetOpenSLEngine(); |
| 81 | 79 |
| 82 // Initializes the audio manager and stores the current audio mode. | 80 // Initializes the audio manager and stores the current audio mode. |
| 83 bool Init(); | 81 bool Init(); |
| 84 // Revert any setting done by Init(). | 82 // Revert any setting done by Init(). |
| 85 bool Close(); | 83 bool Close(); |
| 86 | 84 |
| 87 // Set audio mode to AudioManager.MODE_IN_COMMUNICATION if |enable| is true | |
| 88 // and AudioManager.MODE_NORMAL otherwise. | |
| 89 void SetCommunicationMode(bool enable); | |
| 90 // Returns true if current audio mode is AudioManager.MODE_IN_COMMUNICATION. | 85 // Returns true if current audio mode is AudioManager.MODE_IN_COMMUNICATION. |
| 91 bool IsCommunicationModeEnabled() const; | 86 bool IsCommunicationModeEnabled() const; |
| 92 | 87 |
| 93 // Native audio parameters stored during construction. | 88 // Native audio parameters stored during construction. |
| 94 const AudioParameters& GetPlayoutAudioParameters(); | 89 const AudioParameters& GetPlayoutAudioParameters(); |
| 95 const AudioParameters& GetRecordAudioParameters(); | 90 const AudioParameters& GetRecordAudioParameters(); |
| 96 | 91 |
| 97 // Returns true if the device supports built-in audio effects for AEC, AGC | 92 // Returns true if the device supports built-in audio effects for AEC, AGC |
| 98 // and NS. Some devices can also be blacklisted for use in combination with | 93 // and NS. Some devices can also be blacklisted for use in combination with |
| 99 // platform effects and these devices will return false. | 94 // platform effects and these devices will return false. |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 // Contains native parameters (e.g. sample rate, channel configuration). | 197 // Contains native parameters (e.g. sample rate, channel configuration). |
| 203 // Set at construction in OnCacheAudioParameters() which is called from | 198 // Set at construction in OnCacheAudioParameters() which is called from |
| 204 // Java on the same thread as this object is created on. | 199 // Java on the same thread as this object is created on. |
| 205 AudioParameters playout_parameters_; | 200 AudioParameters playout_parameters_; |
| 206 AudioParameters record_parameters_; | 201 AudioParameters record_parameters_; |
| 207 }; | 202 }; |
| 208 | 203 |
| 209 } // namespace webrtc | 204 } // namespace webrtc |
| 210 | 205 |
| 211 #endif // WEBRTC_MODULES_AUDIO_DEVICE_ANDROID_AUDIO_MANAGER_H_ | 206 #endif // WEBRTC_MODULES_AUDIO_DEVICE_ANDROID_AUDIO_MANAGER_H_ |
| OLD | NEW |