Enable Echo Control at injection.
Echo Control is enabled in capture_nonlocked_ when injected. Renamed echo_canceller3_enabled to echo_controller_enabled. Bug: webrtc:8346 Change-Id: Icf441f07ce64719358841544da7579feeb7cfdbb Reviewed-on: https://webrtc-review.googlesource.com/10808 Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org> Reviewed-by: Per Åhgren <peah@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20311}
This commit is contained in:
parent
31fbb5425e
commit
ce045acd94
@ -186,7 +186,7 @@ bool AudioProcessingImpl::ApmSubmoduleStates::Update(
|
|||||||
bool adaptive_gain_controller_enabled,
|
bool adaptive_gain_controller_enabled,
|
||||||
bool gain_controller2_enabled,
|
bool gain_controller2_enabled,
|
||||||
bool level_controller_enabled,
|
bool level_controller_enabled,
|
||||||
bool echo_canceller3_enabled,
|
bool echo_controller_enabled,
|
||||||
bool voice_activity_detector_enabled,
|
bool voice_activity_detector_enabled,
|
||||||
bool level_estimator_enabled,
|
bool level_estimator_enabled,
|
||||||
bool transient_suppressor_enabled) {
|
bool transient_suppressor_enabled) {
|
||||||
@ -206,7 +206,7 @@ bool AudioProcessingImpl::ApmSubmoduleStates::Update(
|
|||||||
changed |=
|
changed |=
|
||||||
(gain_controller2_enabled != gain_controller2_enabled_);
|
(gain_controller2_enabled != gain_controller2_enabled_);
|
||||||
changed |= (level_controller_enabled != level_controller_enabled_);
|
changed |= (level_controller_enabled != level_controller_enabled_);
|
||||||
changed |= (echo_canceller3_enabled != echo_canceller3_enabled_);
|
changed |= (echo_controller_enabled != echo_controller_enabled_);
|
||||||
changed |= (level_estimator_enabled != level_estimator_enabled_);
|
changed |= (level_estimator_enabled != level_estimator_enabled_);
|
||||||
changed |=
|
changed |=
|
||||||
(voice_activity_detector_enabled != voice_activity_detector_enabled_);
|
(voice_activity_detector_enabled != voice_activity_detector_enabled_);
|
||||||
@ -222,7 +222,7 @@ bool AudioProcessingImpl::ApmSubmoduleStates::Update(
|
|||||||
adaptive_gain_controller_enabled_ = adaptive_gain_controller_enabled;
|
adaptive_gain_controller_enabled_ = adaptive_gain_controller_enabled;
|
||||||
gain_controller2_enabled_ = gain_controller2_enabled;
|
gain_controller2_enabled_ = gain_controller2_enabled;
|
||||||
level_controller_enabled_ = level_controller_enabled;
|
level_controller_enabled_ = level_controller_enabled;
|
||||||
echo_canceller3_enabled_ = echo_canceller3_enabled;
|
echo_controller_enabled_ = echo_controller_enabled;
|
||||||
level_estimator_enabled_ = level_estimator_enabled;
|
level_estimator_enabled_ = level_estimator_enabled;
|
||||||
voice_activity_detector_enabled_ = voice_activity_detector_enabled;
|
voice_activity_detector_enabled_ = voice_activity_detector_enabled;
|
||||||
transient_suppressor_enabled_ = transient_suppressor_enabled;
|
transient_suppressor_enabled_ = transient_suppressor_enabled;
|
||||||
@ -248,7 +248,7 @@ bool AudioProcessingImpl::ApmSubmoduleStates::CaptureMultiBandProcessingActive()
|
|||||||
return low_cut_filter_enabled_ || echo_canceller_enabled_ ||
|
return low_cut_filter_enabled_ || echo_canceller_enabled_ ||
|
||||||
mobile_echo_controller_enabled_ || noise_suppressor_enabled_ ||
|
mobile_echo_controller_enabled_ || noise_suppressor_enabled_ ||
|
||||||
beamformer_enabled_ || adaptive_gain_controller_enabled_ ||
|
beamformer_enabled_ || adaptive_gain_controller_enabled_ ||
|
||||||
echo_canceller3_enabled_;
|
echo_controller_enabled_;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AudioProcessingImpl::ApmSubmoduleStates::CaptureFullBandProcessingActive()
|
bool AudioProcessingImpl::ApmSubmoduleStates::CaptureFullBandProcessingActive()
|
||||||
@ -261,7 +261,7 @@ bool AudioProcessingImpl::ApmSubmoduleStates::RenderMultiBandSubModulesActive()
|
|||||||
const {
|
const {
|
||||||
return RenderMultiBandProcessingActive() || echo_canceller_enabled_ ||
|
return RenderMultiBandProcessingActive() || echo_canceller_enabled_ ||
|
||||||
mobile_echo_controller_enabled_ || adaptive_gain_controller_enabled_ ||
|
mobile_echo_controller_enabled_ || adaptive_gain_controller_enabled_ ||
|
||||||
echo_canceller3_enabled_;
|
echo_controller_enabled_;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AudioProcessingImpl::ApmSubmoduleStates::RenderMultiBandProcessingActive()
|
bool AudioProcessingImpl::ApmSubmoduleStates::RenderMultiBandProcessingActive()
|
||||||
@ -373,6 +373,10 @@ AudioProcessingImpl::AudioProcessingImpl(
|
|||||||
rtc::CritScope cs_render(&crit_render_);
|
rtc::CritScope cs_render(&crit_render_);
|
||||||
rtc::CritScope cs_capture(&crit_capture_);
|
rtc::CritScope cs_capture(&crit_capture_);
|
||||||
|
|
||||||
|
// Mark Echo Controller enabled if a factory is injected.
|
||||||
|
capture_nonlocked_.echo_controller_enabled =
|
||||||
|
static_cast<bool>(echo_control_factory_);
|
||||||
|
|
||||||
public_submodules_->echo_cancellation.reset(
|
public_submodules_->echo_cancellation.reset(
|
||||||
new EchoCancellationImpl(&crit_render_, &crit_capture_));
|
new EchoCancellationImpl(&crit_render_, &crit_capture_));
|
||||||
public_submodules_->echo_control_mobile.reset(
|
public_submodules_->echo_control_mobile.reset(
|
||||||
@ -690,13 +694,13 @@ void AudioProcessingImpl::ApplyConfig(const AudioProcessing::Config& config) {
|
|||||||
|
|
||||||
// Inject EchoCanceller3 if requested.
|
// Inject EchoCanceller3 if requested.
|
||||||
if (config.echo_canceller3.enabled && !echo_control_factory_) {
|
if (config.echo_canceller3.enabled && !echo_control_factory_) {
|
||||||
capture_nonlocked_.echo_canceller3_enabled =
|
capture_nonlocked_.echo_controller_enabled =
|
||||||
config_.echo_canceller3.enabled;
|
config_.echo_canceller3.enabled;
|
||||||
echo_control_factory_ = std::unique_ptr<EchoControlFactory>(
|
echo_control_factory_ = std::unique_ptr<EchoControlFactory>(
|
||||||
new EchoCanceller3Factory(config.echo_canceller3));
|
new EchoCanceller3Factory(config.echo_canceller3));
|
||||||
InitializeEchoController();
|
InitializeEchoController();
|
||||||
LOG(LS_INFO) << "Echo canceller 3 activated: "
|
LOG(LS_INFO) << "Echo canceller 3 activated: "
|
||||||
<< capture_nonlocked_.echo_canceller3_enabled;
|
<< capture_nonlocked_.echo_controller_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
config_ok = GainController2::Validate(config_.gain_controller2);
|
config_ok = GainController2::Validate(config_.gain_controller2);
|
||||||
@ -773,7 +777,7 @@ size_t AudioProcessingImpl::num_input_channels() const {
|
|||||||
size_t AudioProcessingImpl::num_proc_channels() const {
|
size_t AudioProcessingImpl::num_proc_channels() const {
|
||||||
// Used as callback from submodules, hence locking is not allowed.
|
// Used as callback from submodules, hence locking is not allowed.
|
||||||
return (capture_nonlocked_.beamformer_enabled ||
|
return (capture_nonlocked_.beamformer_enabled ||
|
||||||
capture_nonlocked_.echo_canceller3_enabled)
|
capture_nonlocked_.echo_controller_enabled)
|
||||||
? 1
|
? 1
|
||||||
: num_output_channels();
|
: num_output_channels();
|
||||||
}
|
}
|
||||||
@ -1642,7 +1646,7 @@ bool AudioProcessingImpl::UpdateActiveSubmoduleStates() {
|
|||||||
public_submodules_->gain_control->is_enabled(),
|
public_submodules_->gain_control->is_enabled(),
|
||||||
config_.gain_controller2.enabled,
|
config_.gain_controller2.enabled,
|
||||||
capture_nonlocked_.level_controller_enabled,
|
capture_nonlocked_.level_controller_enabled,
|
||||||
capture_nonlocked_.echo_canceller3_enabled,
|
capture_nonlocked_.echo_controller_enabled,
|
||||||
public_submodules_->voice_detection->is_enabled(),
|
public_submodules_->voice_detection->is_enabled(),
|
||||||
public_submodules_->level_estimator->is_enabled(),
|
public_submodules_->level_estimator->is_enabled(),
|
||||||
capture_.transient_suppressor_enabled);
|
capture_.transient_suppressor_enabled);
|
||||||
@ -1809,8 +1813,8 @@ void AudioProcessingImpl::WriteAecDumpConfigMessage(bool forced) {
|
|||||||
if (constants_.agc_clipped_level_min != kClippedLevelMin) {
|
if (constants_.agc_clipped_level_min != kClippedLevelMin) {
|
||||||
experiments_description += "AgcClippingLevelExperiment;";
|
experiments_description += "AgcClippingLevelExperiment;";
|
||||||
}
|
}
|
||||||
if (capture_nonlocked_.echo_canceller3_enabled) {
|
if (capture_nonlocked_.echo_controller_enabled) {
|
||||||
experiments_description += "EchoCanceller3;";
|
experiments_description += "EchoController;";
|
||||||
}
|
}
|
||||||
if (config_.gain_controller2.enabled) {
|
if (config_.gain_controller2.enabled) {
|
||||||
experiments_description += "GainController2;";
|
experiments_description += "GainController2;";
|
||||||
|
|||||||
@ -159,7 +159,7 @@ class AudioProcessingImpl : public AudioProcessing {
|
|||||||
bool adaptive_gain_controller_enabled,
|
bool adaptive_gain_controller_enabled,
|
||||||
bool gain_controller2_enabled,
|
bool gain_controller2_enabled,
|
||||||
bool level_controller_enabled,
|
bool level_controller_enabled,
|
||||||
bool echo_canceller3_enabled,
|
bool echo_controller_enabled,
|
||||||
bool voice_activity_detector_enabled,
|
bool voice_activity_detector_enabled,
|
||||||
bool level_estimator_enabled,
|
bool level_estimator_enabled,
|
||||||
bool transient_suppressor_enabled);
|
bool transient_suppressor_enabled);
|
||||||
@ -181,7 +181,7 @@ class AudioProcessingImpl : public AudioProcessing {
|
|||||||
bool adaptive_gain_controller_enabled_ = false;
|
bool adaptive_gain_controller_enabled_ = false;
|
||||||
bool gain_controller2_enabled_ = false;
|
bool gain_controller2_enabled_ = false;
|
||||||
bool level_controller_enabled_ = false;
|
bool level_controller_enabled_ = false;
|
||||||
bool echo_canceller3_enabled_ = false;
|
bool echo_controller_enabled_ = false;
|
||||||
bool level_estimator_enabled_ = false;
|
bool level_estimator_enabled_ = false;
|
||||||
bool voice_activity_detector_enabled_ = false;
|
bool voice_activity_detector_enabled_ = false;
|
||||||
bool transient_suppressor_enabled_ = false;
|
bool transient_suppressor_enabled_ = false;
|
||||||
@ -373,7 +373,7 @@ class AudioProcessingImpl : public AudioProcessing {
|
|||||||
bool beamformer_enabled;
|
bool beamformer_enabled;
|
||||||
bool intelligibility_enabled;
|
bool intelligibility_enabled;
|
||||||
bool level_controller_enabled = false;
|
bool level_controller_enabled = false;
|
||||||
bool echo_canceller3_enabled = false;
|
bool echo_controller_enabled = false;
|
||||||
} capture_nonlocked_;
|
} capture_nonlocked_;
|
||||||
|
|
||||||
struct ApmRenderState {
|
struct ApmRenderState {
|
||||||
|
|||||||
@ -402,7 +402,7 @@ TEST_F(DebugDumpTest, VerifyCombinedExperimentalStringInclusive) {
|
|||||||
ASSERT_TRUE(msg->has_experiments_description());
|
ASSERT_TRUE(msg->has_experiments_description());
|
||||||
EXPECT_PRED_FORMAT2(testing::IsSubstring, "RefinedAdaptiveFilter",
|
EXPECT_PRED_FORMAT2(testing::IsSubstring, "RefinedAdaptiveFilter",
|
||||||
msg->experiments_description().c_str());
|
msg->experiments_description().c_str());
|
||||||
EXPECT_PRED_FORMAT2(testing::IsSubstring, "EchoCanceller3",
|
EXPECT_PRED_FORMAT2(testing::IsSubstring, "EchoController",
|
||||||
msg->experiments_description().c_str());
|
msg->experiments_description().c_str());
|
||||||
EXPECT_PRED_FORMAT2(testing::IsSubstring, "AgcClippingLevelExperiment",
|
EXPECT_PRED_FORMAT2(testing::IsSubstring, "AgcClippingLevelExperiment",
|
||||||
msg->experiments_description().c_str());
|
msg->experiments_description().c_str());
|
||||||
@ -457,7 +457,7 @@ TEST_F(DebugDumpTest, VerifyAec3ExperimentalString) {
|
|||||||
if (event->type() == audioproc::Event::CONFIG) {
|
if (event->type() == audioproc::Event::CONFIG) {
|
||||||
const audioproc::Config* msg = &event->config();
|
const audioproc::Config* msg = &event->config();
|
||||||
ASSERT_TRUE(msg->has_experiments_description());
|
ASSERT_TRUE(msg->has_experiments_description());
|
||||||
EXPECT_PRED_FORMAT2(testing::IsSubstring, "EchoCanceller3",
|
EXPECT_PRED_FORMAT2(testing::IsSubstring, "EchoController",
|
||||||
msg->experiments_description().c_str());
|
msg->experiments_description().c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user