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 16 matching lines...) Expand all Loading... |
27 | 27 |
28 namespace webrtc { | 28 namespace webrtc { |
29 | 29 |
30 // AudioManager::JavaAudioManager implementation | 30 // AudioManager::JavaAudioManager implementation |
31 AudioManager::JavaAudioManager::JavaAudioManager( | 31 AudioManager::JavaAudioManager::JavaAudioManager( |
32 NativeRegistration* native_reg, rtc::scoped_ptr<GlobalRef> audio_manager) | 32 NativeRegistration* native_reg, rtc::scoped_ptr<GlobalRef> audio_manager) |
33 : audio_manager_(audio_manager.Pass()), | 33 : audio_manager_(audio_manager.Pass()), |
34 init_(native_reg->GetMethodId("init", "()Z")), | 34 init_(native_reg->GetMethodId("init", "()Z")), |
35 dispose_(native_reg->GetMethodId("dispose", "()V")), | 35 dispose_(native_reg->GetMethodId("dispose", "()V")), |
36 is_communication_mode_enabled_( | 36 is_communication_mode_enabled_( |
37 native_reg->GetMethodId("isCommunicationModeEnabled", "()Z")) { | 37 native_reg->GetMethodId("isCommunicationModeEnabled", "()Z")), |
| 38 is_device_blacklisted_for_open_sles_usage_( |
| 39 native_reg->GetMethodId( |
| 40 "isDeviceBlacklistedForOpenSLESUsage", "()Z")) { |
38 ALOGD("JavaAudioManager::ctor%s", GetThreadInfo().c_str()); | 41 ALOGD("JavaAudioManager::ctor%s", GetThreadInfo().c_str()); |
39 } | 42 } |
40 | 43 |
41 AudioManager::JavaAudioManager::~JavaAudioManager() { | 44 AudioManager::JavaAudioManager::~JavaAudioManager() { |
42 ALOGD("JavaAudioManager::dtor%s", GetThreadInfo().c_str()); | 45 ALOGD("JavaAudioManager::dtor%s", GetThreadInfo().c_str()); |
43 } | 46 } |
44 | 47 |
45 bool AudioManager::JavaAudioManager::Init() { | 48 bool AudioManager::JavaAudioManager::Init() { |
46 return audio_manager_->CallBooleanMethod(init_); | 49 return audio_manager_->CallBooleanMethod(init_); |
47 } | 50 } |
48 | 51 |
49 void AudioManager::JavaAudioManager::Close() { | 52 void AudioManager::JavaAudioManager::Close() { |
50 audio_manager_->CallVoidMethod(dispose_); | 53 audio_manager_->CallVoidMethod(dispose_); |
51 } | 54 } |
52 | 55 |
53 bool AudioManager::JavaAudioManager::IsCommunicationModeEnabled() { | 56 bool AudioManager::JavaAudioManager::IsCommunicationModeEnabled() { |
54 return audio_manager_->CallBooleanMethod(is_communication_mode_enabled_); | 57 return audio_manager_->CallBooleanMethod(is_communication_mode_enabled_); |
55 } | 58 } |
56 | 59 |
| 60 bool AudioManager::JavaAudioManager::IsDeviceBlacklistedForOpenSLESUsage() { |
| 61 return audio_manager_->CallBooleanMethod( |
| 62 is_device_blacklisted_for_open_sles_usage_); |
| 63 } |
| 64 |
57 // AudioManager implementation | 65 // AudioManager implementation |
58 AudioManager::AudioManager() | 66 AudioManager::AudioManager() |
59 : j_environment_(JVM::GetInstance()->environment()), | 67 : j_environment_(JVM::GetInstance()->environment()), |
60 audio_layer_(AudioDeviceModule::kPlatformDefaultAudio), | 68 audio_layer_(AudioDeviceModule::kPlatformDefaultAudio), |
61 initialized_(false), | 69 initialized_(false), |
62 hardware_aec_(false), | 70 hardware_aec_(false), |
63 low_latency_playout_(false), | 71 low_latency_playout_(false), |
64 delay_estimate_in_milliseconds_(0) { | 72 delay_estimate_in_milliseconds_(0) { |
65 ALOGD("ctor%s", GetThreadInfo().c_str()); | 73 ALOGD("ctor%s", GetThreadInfo().c_str()); |
66 CHECK(j_environment_); | 74 CHECK(j_environment_); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 } | 140 } |
133 | 141 |
134 bool AudioManager::IsAcousticEchoCancelerSupported() const { | 142 bool AudioManager::IsAcousticEchoCancelerSupported() const { |
135 DCHECK(thread_checker_.CalledOnValidThread()); | 143 DCHECK(thread_checker_.CalledOnValidThread()); |
136 return hardware_aec_; | 144 return hardware_aec_; |
137 } | 145 } |
138 | 146 |
139 bool AudioManager::IsLowLatencyPlayoutSupported() const { | 147 bool AudioManager::IsLowLatencyPlayoutSupported() const { |
140 DCHECK(thread_checker_.CalledOnValidThread()); | 148 DCHECK(thread_checker_.CalledOnValidThread()); |
141 ALOGD("IsLowLatencyPlayoutSupported()"); | 149 ALOGD("IsLowLatencyPlayoutSupported()"); |
142 // TODO(henrika): enable again once issue in b/21485703 has been sorted out. | 150 // Some devices are blacklisted for usage of OpenSL ES even if they report |
143 // This is just a temporary fix. | 151 // that low-latency playout is supported. See b/21485703 for details. |
144 ALOGW("NOTE: OpenSL ES output is currently disabled!"); | 152 return j_audio_manager_->IsDeviceBlacklistedForOpenSLESUsage() ? |
145 return false; | 153 false : low_latency_playout_; |
146 } | 154 } |
147 | 155 |
148 int AudioManager::GetDelayEstimateInMilliseconds() const { | 156 int AudioManager::GetDelayEstimateInMilliseconds() const { |
149 return delay_estimate_in_milliseconds_; | 157 return delay_estimate_in_milliseconds_; |
150 } | 158 } |
151 | 159 |
152 void JNICALL AudioManager::CacheAudioParameters(JNIEnv* env, | 160 void JNICALL AudioManager::CacheAudioParameters(JNIEnv* env, |
153 jobject obj, | 161 jobject obj, |
154 jint sample_rate, | 162 jint sample_rate, |
155 jint channels, | 163 jint channels, |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 return playout_parameters_; | 201 return playout_parameters_; |
194 } | 202 } |
195 | 203 |
196 const AudioParameters& AudioManager::GetRecordAudioParameters() { | 204 const AudioParameters& AudioManager::GetRecordAudioParameters() { |
197 CHECK(record_parameters_.is_valid()); | 205 CHECK(record_parameters_.is_valid()); |
198 DCHECK(thread_checker_.CalledOnValidThread()); | 206 DCHECK(thread_checker_.CalledOnValidThread()); |
199 return record_parameters_; | 207 return record_parameters_; |
200 } | 208 } |
201 | 209 |
202 } // namespace webrtc | 210 } // namespace webrtc |
OLD | NEW |