From 684b401016d6ef40e95a99153512923925ea43d2 Mon Sep 17 00:00:00 2001 From: Alex Loiko Date: Mon, 16 Jul 2018 13:38:32 +0200 Subject: [PATCH] Division by zero in RNN-VAD. Bug: webrtc:9450, chromium:861557 Change-Id: I00ddda1fe0e088b983707420acf1b9a6763a3535 Reviewed-on: https://webrtc-review.googlesource.com/87841 Reviewed-by: Alessio Bazzica Commit-Queue: Alex Loiko Cr-Commit-Position: refs/heads/master@{#23999} --- modules/audio_processing/agc2/rnn_vad/lp_residual.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/audio_processing/agc2/rnn_vad/lp_residual.cc b/modules/audio_processing/agc2/rnn_vad/lp_residual.cc index f3c9040289..1a124a3493 100644 --- a/modules/audio_processing/agc2/rnn_vad/lp_residual.cc +++ b/modules/audio_processing/agc2/rnn_vad/lp_residual.cc @@ -12,6 +12,7 @@ #include #include +#include #include #include "rtc_base/checks.h" @@ -61,6 +62,13 @@ void ComputeInitialInverseFilterCoefficients( reflection_coeff += lpc_coeffs[j] * auto_corr[i - j]; } reflection_coeff += auto_corr[i + 1]; + + // Avoid division by numbers close to zero. + constexpr float kMinErrorMagnitude = 1e-6f; + if (std::fabs(error) < kMinErrorMagnitude) { + error = std::copysign(kMinErrorMagnitude, error); + } + reflection_coeff /= -error; // Update LPC coefficients and total error. lpc_coeffs[i] = reflection_coeff;