AEC3: Gain limiter: Improving the behavior of the gain limiter.

In this work, we change the behavior of the gain limiter so it also looks at the energy
 on farend around the default delay for deciding the suppression gain
that should be applied at the initial portion of the call.

Bug: webrtc:9311,chromium:846724
Change-Id: I0b777cedbbd7fd689e72070f72237296ce120d3c
Reviewed-on: https://webrtc-review.googlesource.com/78960
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23400}
This commit is contained in:
Jesús de Vicente Peña
2018-05-25 16:55:11 +02:00
committed by Commit Bot
parent d7a076cc8e
commit dd09287514
10 changed files with 92 additions and 21 deletions

View File

@ -17,4 +17,8 @@ EchoCanceller3Config::EchoCanceller3Config(const EchoCanceller3Config& e) =
EchoCanceller3Config::Mask::Mask() = default;
EchoCanceller3Config::Mask::Mask(const EchoCanceller3Config::Mask& m) = default;
EchoCanceller3Config::EchoModel::EchoModel() = default;
EchoCanceller3Config::EchoModel::EchoModel(
const EchoCanceller3Config::EchoModel& e) = default;
} // namespace webrtc

View File

@ -128,15 +128,17 @@ struct EchoCanceller3Config {
struct EchoRemovalControl {
struct GainRampup {
float initial_gain = 0.0f;
float first_non_zero_gain = 0.001f;
int non_zero_gain_blocks = 187;
int full_gain_blocks = 312;
} gain_rampup;
bool has_clock_drift = false;
} echo_removal_control;
struct EchoModel {
EchoModel();
EchoModel(const EchoModel& e);
size_t noise_floor_hold = 50;
float min_noise_floor_power = 1638400.f;
float stationary_gate_slope = 10.f;
@ -144,6 +146,8 @@ struct EchoCanceller3Config {
float noise_gate_slope = 0.3f;
size_t render_pre_window_size = 1;
size_t render_post_window_size = 1;
size_t render_pre_window_size_init = 10;
size_t render_post_window_size_init = 10;
float nonlinear_hold = 1;
float nonlinear_release = 0.001f;
} echo_model;