OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 if (!recording_ && | 238 if (!recording_ && |
239 audio_unit_->GetState() == VoiceProcessingAudioUnit::kInitialized) { | 239 audio_unit_->GetState() == VoiceProcessingAudioUnit::kInitialized) { |
240 if (!audio_unit_->Start()) { | 240 if (!audio_unit_->Start()) { |
241 RTCLogError(@"StartPlayout failed to start audio unit."); | 241 RTCLogError(@"StartPlayout failed to start audio unit."); |
242 return -1; | 242 return -1; |
243 } | 243 } |
244 LOG(LS_INFO) << "Voice-Processing I/O audio unit is now started"; | 244 LOG(LS_INFO) << "Voice-Processing I/O audio unit is now started"; |
245 } | 245 } |
246 rtc::AtomicOps::ReleaseStore(&playing_, 1); | 246 rtc::AtomicOps::ReleaseStore(&playing_, 1); |
247 num_playout_callbacks_ = 0; | 247 num_playout_callbacks_ = 0; |
| 248 num_detected_playout_glitches_ = 0; |
248 return 0; | 249 return 0; |
249 } | 250 } |
250 | 251 |
251 int32_t AudioDeviceIOS::StopPlayout() { | 252 int32_t AudioDeviceIOS::StopPlayout() { |
252 LOGI() << "StopPlayout"; | 253 LOGI() << "StopPlayout"; |
253 RTC_DCHECK_RUN_ON(&thread_checker_); | 254 RTC_DCHECK_RUN_ON(&thread_checker_); |
254 if (!audio_is_initialized_ || !playing_) { | 255 if (!audio_is_initialized_ || !playing_) { |
255 return 0; | 256 return 0; |
256 } | 257 } |
257 if (!recording_) { | 258 if (!recording_) { |
258 ShutdownPlayOrRecord(); | 259 ShutdownPlayOrRecord(); |
259 audio_is_initialized_ = false; | 260 audio_is_initialized_ = false; |
260 } | 261 } |
261 rtc::AtomicOps::ReleaseStore(&playing_, 0); | 262 rtc::AtomicOps::ReleaseStore(&playing_, 0); |
262 | 263 |
263 // Derive average number of calls to OnGetPlayoutData() between detected | 264 // Derive average number of calls to OnGetPlayoutData() between detected |
264 // audio glitches and add the result to a histogram. | 265 // audio glitches and add the result to a histogram. |
265 int average_number_of_playout_callbacks_between_glitches = 100000; | 266 int average_number_of_playout_callbacks_between_glitches = 100000; |
| 267 RTC_DCHECK_GE(num_playout_callbacks_, num_detected_playout_glitches_); |
266 if (num_detected_playout_glitches_ > 0) { | 268 if (num_detected_playout_glitches_ > 0) { |
267 average_number_of_playout_callbacks_between_glitches = | 269 average_number_of_playout_callbacks_between_glitches = |
268 num_playout_callbacks_ / num_detected_playout_glitches_; | 270 num_playout_callbacks_ / num_detected_playout_glitches_; |
269 } | 271 } |
270 RTC_HISTOGRAM_COUNTS_100000( | 272 RTC_HISTOGRAM_COUNTS_100000( |
271 "WebRTC.Audio.AveragePlayoutCallbacksBetweenGlitches", | 273 "WebRTC.Audio.AveragePlayoutCallbacksBetweenGlitches", |
272 average_number_of_playout_callbacks_between_glitches); | 274 average_number_of_playout_callbacks_between_glitches); |
273 RTCLog(@"Average number of playout callbacks between glitches: %d", | 275 RTCLog(@"Average number of playout callbacks between glitches: %d", |
274 average_number_of_playout_callbacks_between_glitches); | 276 average_number_of_playout_callbacks_between_glitches); |
275 return 0; | 277 return 0; |
(...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
938 | 940 |
939 // All I/O should be stopped or paused prior to deactivating the audio | 941 // All I/O should be stopped or paused prior to deactivating the audio |
940 // session, hence we deactivate as last action. | 942 // session, hence we deactivate as last action. |
941 [session lockForConfiguration]; | 943 [session lockForConfiguration]; |
942 UnconfigureAudioSession(); | 944 UnconfigureAudioSession(); |
943 [session endWebRTCSession:nil]; | 945 [session endWebRTCSession:nil]; |
944 [session unlockForConfiguration]; | 946 [session unlockForConfiguration]; |
945 } | 947 } |
946 | 948 |
947 } // namespace webrtc | 949 } // namespace webrtc |
OLD | NEW |