| Index: webrtc/modules/audio_processing/audio_processing_impl.cc
|
| diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| index fd6b2581413138bd5080f874be9df0cf35e6fb1c..87b82a6a3509131adae9ed698cc0f896fd01d4c0 100644
|
| --- a/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| @@ -177,6 +177,8 @@ AudioProcessingImpl::AudioProcessingImpl(const Config& config,
|
| was_stream_delay_set_(false),
|
| last_stream_delay_ms_(0),
|
| last_aec_system_delay_ms_(0),
|
| + stream_delay_jumps_(-1),
|
| + aec_system_delay_jumps_(-1),
|
| output_will_be_muted_(false),
|
| key_pressed_(false),
|
| #if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
|
| @@ -1003,11 +1005,25 @@ void AudioProcessingImpl::MaybeUpdateHistograms() {
|
| static const int kMinDiffDelayMs = 60;
|
|
|
| if (echo_cancellation()->is_enabled()) {
|
| + // Activate delay_jumps_ counters if we know echo_cancellation is runnning.
|
| + // If a stream has echo we know that the echo_cancellation is in process.
|
| + if (stream_delay_jumps_ == -1 && echo_cancellation()->stream_has_echo()) {
|
| + stream_delay_jumps_ = 0;
|
| + }
|
| + if (aec_system_delay_jumps_ == -1 &&
|
| + echo_cancellation()->stream_has_echo()) {
|
| + aec_system_delay_jumps_ = 0;
|
| + }
|
| +
|
| // Detect a jump in platform reported system delay and log the difference.
|
| const int diff_stream_delay_ms = stream_delay_ms_ - last_stream_delay_ms_;
|
| if (diff_stream_delay_ms > kMinDiffDelayMs && last_stream_delay_ms_ != 0) {
|
| RTC_HISTOGRAM_COUNTS("WebRTC.Audio.PlatformReportedStreamDelayJump",
|
| diff_stream_delay_ms, kMinDiffDelayMs, 1000, 100);
|
| + if (stream_delay_jumps_ == -1) {
|
| + stream_delay_jumps_ = 0; // Activate counter if needed.
|
| + }
|
| + stream_delay_jumps_++;
|
| }
|
| last_stream_delay_ms_ = stream_delay_ms_;
|
|
|
| @@ -1022,13 +1038,33 @@ void AudioProcessingImpl::MaybeUpdateHistograms() {
|
| RTC_HISTOGRAM_COUNTS("WebRTC.Audio.AecSystemDelayJump",
|
| diff_aec_system_delay_ms, kMinDiffDelayMs, 1000,
|
| 100);
|
| + if (aec_system_delay_jumps_ == -1) {
|
| + aec_system_delay_jumps_ = 0; // Activate counter if needed.
|
| + }
|
| + aec_system_delay_jumps_++;
|
| }
|
| last_aec_system_delay_ms_ = aec_system_delay_ms;
|
| - // TODO(bjornv): Consider also logging amount of jumps. This gives a better
|
| - // indication of how frequent jumps are.
|
| }
|
| }
|
|
|
| +void AudioProcessingImpl::UpdateHistogramsOnCallEnd() {
|
| + CriticalSectionScoped crit_scoped(crit_);
|
| + if (stream_delay_jumps_ > -1) {
|
| + RTC_HISTOGRAM_ENUMERATION(
|
| + "WebRTC.Audio.NumOfPlatformReportedStreamDelayJumps",
|
| + stream_delay_jumps_, 51);
|
| + }
|
| + stream_delay_jumps_ = -1;
|
| + last_stream_delay_ms_ = 0;
|
| +
|
| + if (aec_system_delay_jumps_ > -1) {
|
| + RTC_HISTOGRAM_ENUMERATION("WebRTC.Audio.NumOfAecSystemDelayJumps",
|
| + aec_system_delay_jumps_, 51);
|
| + }
|
| + aec_system_delay_jumps_ = -1;
|
| + last_aec_system_delay_ms_ = 0;
|
| +}
|
| +
|
| #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP
|
| int AudioProcessingImpl::WriteMessageToDebugFile() {
|
| int32_t size = event_msg_->ByteSize();
|
|
|