Revert r9378 "Rename APM Config DelayCorrection to ExtendedFilter"
This reverts commit 5f4b7e2873864c61e2ad6d88679dcd5d321bfd16, since it broke some of the build bots. BUG=4696 TBR=bjornv@webrtc.org Review URL: https://codereview.webrtc.org/1166463006 Cr-Commit-Position: refs/heads/master@{#9380}
This commit is contained in:
parent
bdd185faab
commit
3fbf3f8841
@ -58,8 +58,8 @@ void FromConstraints(const MediaConstraintsInterface::Constraints& constraints,
|
|||||||
if (iter->key == MediaConstraintsInterface::kEchoCancellation)
|
if (iter->key == MediaConstraintsInterface::kEchoCancellation)
|
||||||
options->echo_cancellation.Set(value);
|
options->echo_cancellation.Set(value);
|
||||||
else if (iter->key ==
|
else if (iter->key ==
|
||||||
MediaConstraintsInterface::kExtendedFilterEchoCancellation)
|
MediaConstraintsInterface::kExperimentalEchoCancellation)
|
||||||
options->extended_filter_aec.Set(value);
|
options->experimental_aec.Set(value);
|
||||||
else if (iter->key == MediaConstraintsInterface::kDAEchoCancellation)
|
else if (iter->key == MediaConstraintsInterface::kDAEchoCancellation)
|
||||||
options->delay_agnostic_aec.Set(value);
|
options->delay_agnostic_aec.Set(value);
|
||||||
else if (iter->key == MediaConstraintsInterface::kAutoGainControl)
|
else if (iter->key == MediaConstraintsInterface::kAutoGainControl)
|
||||||
|
@ -45,7 +45,7 @@ TEST(LocalAudioSourceTest, SetValidOptions) {
|
|||||||
webrtc::FakeConstraints constraints;
|
webrtc::FakeConstraints constraints;
|
||||||
constraints.AddMandatory(MediaConstraintsInterface::kEchoCancellation, false);
|
constraints.AddMandatory(MediaConstraintsInterface::kEchoCancellation, false);
|
||||||
constraints.AddOptional(
|
constraints.AddOptional(
|
||||||
MediaConstraintsInterface::kExtendedFilterEchoCancellation, true);
|
MediaConstraintsInterface::kExperimentalEchoCancellation, true);
|
||||||
constraints.AddOptional(MediaConstraintsInterface::kDAEchoCancellation, true);
|
constraints.AddOptional(MediaConstraintsInterface::kDAEchoCancellation, true);
|
||||||
constraints.AddOptional(MediaConstraintsInterface::kAutoGainControl, true);
|
constraints.AddOptional(MediaConstraintsInterface::kAutoGainControl, true);
|
||||||
constraints.AddOptional(
|
constraints.AddOptional(
|
||||||
@ -61,7 +61,7 @@ TEST(LocalAudioSourceTest, SetValidOptions) {
|
|||||||
bool value;
|
bool value;
|
||||||
EXPECT_TRUE(source->options().echo_cancellation.Get(&value));
|
EXPECT_TRUE(source->options().echo_cancellation.Get(&value));
|
||||||
EXPECT_FALSE(value);
|
EXPECT_FALSE(value);
|
||||||
EXPECT_TRUE(source->options().extended_filter_aec.Get(&value));
|
EXPECT_TRUE(source->options().experimental_aec.Get(&value));
|
||||||
EXPECT_TRUE(value);
|
EXPECT_TRUE(value);
|
||||||
EXPECT_TRUE(source->options().delay_agnostic_aec.Get(&value));
|
EXPECT_TRUE(source->options().delay_agnostic_aec.Get(&value));
|
||||||
EXPECT_TRUE(value);
|
EXPECT_TRUE(value);
|
||||||
|
@ -48,7 +48,7 @@ const char MediaConstraintsInterface::kMinFrameRate[] = "minFrameRate";
|
|||||||
// Audio constraints.
|
// Audio constraints.
|
||||||
const char MediaConstraintsInterface::kEchoCancellation[] =
|
const char MediaConstraintsInterface::kEchoCancellation[] =
|
||||||
"googEchoCancellation";
|
"googEchoCancellation";
|
||||||
const char MediaConstraintsInterface::kExtendedFilterEchoCancellation[] =
|
const char MediaConstraintsInterface::kExperimentalEchoCancellation[] =
|
||||||
"googEchoCancellation2";
|
"googEchoCancellation2";
|
||||||
const char MediaConstraintsInterface::kDAEchoCancellation[] =
|
const char MediaConstraintsInterface::kDAEchoCancellation[] =
|
||||||
"googDAEchoCancellation";
|
"googDAEchoCancellation";
|
||||||
|
@ -74,7 +74,7 @@ class MediaConstraintsInterface {
|
|||||||
// Constraint keys used by a local audio source.
|
// Constraint keys used by a local audio source.
|
||||||
// These keys are google specific.
|
// These keys are google specific.
|
||||||
static const char kEchoCancellation[]; // googEchoCancellation
|
static const char kEchoCancellation[]; // googEchoCancellation
|
||||||
static const char kExtendedFilterEchoCancellation[]; // googEchoCancellation2
|
static const char kExperimentalEchoCancellation[]; // googEchoCancellation2
|
||||||
static const char kDAEchoCancellation[]; // googDAEchoCancellation
|
static const char kDAEchoCancellation[]; // googDAEchoCancellation
|
||||||
static const char kAutoGainControl[]; // googAutoGainControl
|
static const char kAutoGainControl[]; // googAutoGainControl
|
||||||
static const char kExperimentalAutoGainControl[]; // googAutoGainControl2
|
static const char kExperimentalAutoGainControl[]; // googAutoGainControl2
|
||||||
|
@ -159,7 +159,7 @@ struct AudioOptions {
|
|||||||
conference_mode.SetFrom(change.conference_mode);
|
conference_mode.SetFrom(change.conference_mode);
|
||||||
adjust_agc_delta.SetFrom(change.adjust_agc_delta);
|
adjust_agc_delta.SetFrom(change.adjust_agc_delta);
|
||||||
experimental_agc.SetFrom(change.experimental_agc);
|
experimental_agc.SetFrom(change.experimental_agc);
|
||||||
extended_filter_aec.SetFrom(change.extended_filter_aec);
|
experimental_aec.SetFrom(change.experimental_aec);
|
||||||
delay_agnostic_aec.SetFrom(change.delay_agnostic_aec);
|
delay_agnostic_aec.SetFrom(change.delay_agnostic_aec);
|
||||||
experimental_ns.SetFrom(change.experimental_ns);
|
experimental_ns.SetFrom(change.experimental_ns);
|
||||||
aec_dump.SetFrom(change.aec_dump);
|
aec_dump.SetFrom(change.aec_dump);
|
||||||
@ -191,7 +191,7 @@ struct AudioOptions {
|
|||||||
aecm_generate_comfort_noise == o.aecm_generate_comfort_noise &&
|
aecm_generate_comfort_noise == o.aecm_generate_comfort_noise &&
|
||||||
conference_mode == o.conference_mode &&
|
conference_mode == o.conference_mode &&
|
||||||
experimental_agc == o.experimental_agc &&
|
experimental_agc == o.experimental_agc &&
|
||||||
extended_filter_aec == o.extended_filter_aec &&
|
experimental_aec == o.experimental_aec &&
|
||||||
delay_agnostic_aec == o.delay_agnostic_aec &&
|
delay_agnostic_aec == o.delay_agnostic_aec &&
|
||||||
experimental_ns == o.experimental_ns &&
|
experimental_ns == o.experimental_ns &&
|
||||||
adjust_agc_delta == o.adjust_agc_delta &&
|
adjust_agc_delta == o.adjust_agc_delta &&
|
||||||
@ -226,7 +226,7 @@ struct AudioOptions {
|
|||||||
ost << ToStringIfSet("conference", conference_mode);
|
ost << ToStringIfSet("conference", conference_mode);
|
||||||
ost << ToStringIfSet("agc_delta", adjust_agc_delta);
|
ost << ToStringIfSet("agc_delta", adjust_agc_delta);
|
||||||
ost << ToStringIfSet("experimental_agc", experimental_agc);
|
ost << ToStringIfSet("experimental_agc", experimental_agc);
|
||||||
ost << ToStringIfSet("extended_filter_aec", extended_filter_aec);
|
ost << ToStringIfSet("experimental_aec", experimental_aec);
|
||||||
ost << ToStringIfSet("delay_agnostic_aec", delay_agnostic_aec);
|
ost << ToStringIfSet("delay_agnostic_aec", delay_agnostic_aec);
|
||||||
ost << ToStringIfSet("experimental_ns", experimental_ns);
|
ost << ToStringIfSet("experimental_ns", experimental_ns);
|
||||||
ost << ToStringIfSet("aec_dump", aec_dump);
|
ost << ToStringIfSet("aec_dump", aec_dump);
|
||||||
@ -269,7 +269,7 @@ struct AudioOptions {
|
|||||||
Settable<bool> conference_mode;
|
Settable<bool> conference_mode;
|
||||||
Settable<int> adjust_agc_delta;
|
Settable<int> adjust_agc_delta;
|
||||||
Settable<bool> experimental_agc;
|
Settable<bool> experimental_agc;
|
||||||
Settable<bool> extended_filter_aec;
|
Settable<bool> experimental_aec;
|
||||||
Settable<bool> delay_agnostic_aec;
|
Settable<bool> delay_agnostic_aec;
|
||||||
Settable<bool> experimental_ns;
|
Settable<bool> experimental_ns;
|
||||||
Settable<bool> aec_dump;
|
Settable<bool> aec_dump;
|
||||||
|
@ -357,7 +357,7 @@ static AudioOptions GetDefaultEngineOptions() {
|
|||||||
options.conference_mode.Set(false);
|
options.conference_mode.Set(false);
|
||||||
options.adjust_agc_delta.Set(0);
|
options.adjust_agc_delta.Set(0);
|
||||||
options.experimental_agc.Set(false);
|
options.experimental_agc.Set(false);
|
||||||
options.extended_filter_aec.Set(false);
|
options.experimental_aec.Set(false);
|
||||||
options.delay_agnostic_aec.Set(false);
|
options.delay_agnostic_aec.Set(false);
|
||||||
options.experimental_ns.Set(false);
|
options.experimental_ns.Set(false);
|
||||||
options.aec_dump.Set(false);
|
options.aec_dump.Set(false);
|
||||||
@ -661,7 +661,7 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
|
|||||||
agc_mode = webrtc::kAgcFixedDigital;
|
agc_mode = webrtc::kAgcFixedDigital;
|
||||||
options.typing_detection.Set(false);
|
options.typing_detection.Set(false);
|
||||||
options.experimental_agc.Set(false);
|
options.experimental_agc.Set(false);
|
||||||
options.extended_filter_aec.Set(false);
|
options.experimental_aec.Set(false);
|
||||||
options.experimental_ns.Set(false);
|
options.experimental_ns.Set(false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -672,7 +672,7 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
|
|||||||
if (options.delay_agnostic_aec.Get(&use_delay_agnostic_aec)) {
|
if (options.delay_agnostic_aec.Get(&use_delay_agnostic_aec)) {
|
||||||
if (use_delay_agnostic_aec) {
|
if (use_delay_agnostic_aec) {
|
||||||
options.echo_cancellation.Set(true);
|
options.echo_cancellation.Set(true);
|
||||||
options.extended_filter_aec.Set(true);
|
options.experimental_aec.Set(true);
|
||||||
ec_mode = webrtc::kEcConference;
|
ec_mode = webrtc::kEcConference;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -848,12 +848,12 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
|
|||||||
new webrtc::ReportedDelay(!delay_agnostic_aec));
|
new webrtc::ReportedDelay(!delay_agnostic_aec));
|
||||||
}
|
}
|
||||||
|
|
||||||
extended_filter_aec_.SetFrom(options.extended_filter_aec);
|
experimental_aec_.SetFrom(options.experimental_aec);
|
||||||
bool extended_filter;
|
bool experimental_aec;
|
||||||
if (extended_filter_aec_.Get(&extended_filter)) {
|
if (experimental_aec_.Get(&experimental_aec)) {
|
||||||
LOG(LS_INFO) << "Extended filter aec is enabled? " << extended_filter;
|
LOG(LS_INFO) << "Experimental aec is enabled? " << experimental_aec;
|
||||||
config.Set<webrtc::ExtendedFilter>(
|
config.Set<webrtc::DelayCorrection>(
|
||||||
new webrtc::ExtendedFilter(extended_filter));
|
new webrtc::DelayCorrection(experimental_aec));
|
||||||
}
|
}
|
||||||
|
|
||||||
experimental_ns_.SetFrom(options.experimental_ns);
|
experimental_ns_.SetFrom(options.experimental_ns);
|
||||||
|
@ -266,11 +266,11 @@ class WebRtcVoiceEngine
|
|||||||
|
|
||||||
rtc::CriticalSection signal_media_critical_;
|
rtc::CriticalSection signal_media_critical_;
|
||||||
|
|
||||||
// Cache received extended_filter_aec, delay_agnostic_aec and experimental_ns
|
// Cache received experimental_aec, delay_agnostic_aec and experimental_ns
|
||||||
// values, and apply them in case they are missing in the audio options. We
|
// values, and apply them in case they are missing in the audio options. We
|
||||||
// need to do this because SetExtraOptions() will revert to defaults for
|
// need to do this because SetExtraOptions() will revert to defaults for
|
||||||
// options which are not provided.
|
// options which are not provided.
|
||||||
Settable<bool> extended_filter_aec_;
|
Settable<bool> experimental_aec_;
|
||||||
Settable<bool> delay_agnostic_aec_;
|
Settable<bool> delay_agnostic_aec_;
|
||||||
Settable<bool> experimental_ns_;
|
Settable<bool> experimental_ns_;
|
||||||
};
|
};
|
||||||
|
@ -2895,7 +2895,7 @@ TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) {
|
|||||||
|
|
||||||
// Turn off echo cancellation and delay agnostic aec.
|
// Turn off echo cancellation and delay agnostic aec.
|
||||||
options.delay_agnostic_aec.Set(false);
|
options.delay_agnostic_aec.Set(false);
|
||||||
options.extended_filter_aec.Set(false);
|
options.experimental_aec.Set(false);
|
||||||
options.echo_cancellation.Set(false);
|
options.echo_cancellation.Set(false);
|
||||||
ASSERT_TRUE(engine_.SetOptions(options));
|
ASSERT_TRUE(engine_.SetOptions(options));
|
||||||
voe_.GetEcStatus(ec_enabled, ec_mode);
|
voe_.GetEcStatus(ec_enabled, ec_mode);
|
||||||
|
@ -1934,14 +1934,14 @@ int WebRtcAec_reported_delay_enabled(AecCore* self) {
|
|||||||
return self->reported_delay_enabled;
|
return self->reported_delay_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebRtcAec_enable_extended_filter(AecCore* self, int enable) {
|
void WebRtcAec_enable_delay_correction(AecCore* self, int enable) {
|
||||||
self->extended_filter_enabled = enable;
|
self->extended_filter_enabled = enable;
|
||||||
self->num_partitions = enable ? kExtendedNumPartitions : kNormalNumPartitions;
|
self->num_partitions = enable ? kExtendedNumPartitions : kNormalNumPartitions;
|
||||||
// Update the delay estimator with filter length. See InitAEC() for details.
|
// Update the delay estimator with filter length. See InitAEC() for details.
|
||||||
WebRtc_set_allowed_offset(self->delay_estimator, self->num_partitions / 2);
|
WebRtc_set_allowed_offset(self->delay_estimator, self->num_partitions / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
int WebRtcAec_extended_filter_enabled(AecCore* self) {
|
int WebRtcAec_delay_correction_enabled(AecCore* self) {
|
||||||
return self->extended_filter_enabled;
|
return self->extended_filter_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,11 +108,14 @@ void WebRtcAec_enable_reported_delay(AecCore* self, int enable);
|
|||||||
// Returns non-zero if reported delay is enabled and zero if disabled.
|
// Returns non-zero if reported delay is enabled and zero if disabled.
|
||||||
int WebRtcAec_reported_delay_enabled(AecCore* self);
|
int WebRtcAec_reported_delay_enabled(AecCore* self);
|
||||||
|
|
||||||
// Enables or disables extended filter mode. Non-zero enables, zero disables.
|
// We now interpret delay correction to mean an extended filter length feature.
|
||||||
void WebRtcAec_enable_extended_filter(AecCore* self, int enable);
|
// We reuse the delay correction infrastructure to avoid changes through to
|
||||||
|
// libjingle. See details along with |DelayCorrection| in
|
||||||
|
// echo_cancellation_impl.h. Non-zero enables, zero disables.
|
||||||
|
void WebRtcAec_enable_delay_correction(AecCore* self, int enable);
|
||||||
|
|
||||||
// Returns non-zero if extended filter mode is enabled and zero if disabled.
|
// Returns non-zero if delay correction is enabled and zero if disabled.
|
||||||
int WebRtcAec_extended_filter_enabled(AecCore* self);
|
int WebRtcAec_delay_correction_enabled(AecCore* self);
|
||||||
|
|
||||||
// Returns the current |system_delay|, i.e., the buffered difference between
|
// Returns the current |system_delay|, i.e., the buffered difference between
|
||||||
// far-end and near-end.
|
// far-end and near-end.
|
||||||
|
@ -373,7 +373,7 @@ int32_t WebRtcAec_Process(void* aecInst,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// This returns the value of aec->extended_filter_enabled.
|
// This returns the value of aec->extended_filter_enabled.
|
||||||
if (WebRtcAec_extended_filter_enabled(aecpc->aec)) {
|
if (WebRtcAec_delay_correction_enabled(aecpc->aec)) {
|
||||||
ProcessExtended(aecpc,
|
ProcessExtended(aecpc,
|
||||||
nearend,
|
nearend,
|
||||||
num_bands,
|
num_bands,
|
||||||
|
@ -57,19 +57,18 @@ AudioProcessing::Error MapError(int err) {
|
|||||||
|
|
||||||
EchoCancellationImpl::EchoCancellationImpl(const AudioProcessing* apm,
|
EchoCancellationImpl::EchoCancellationImpl(const AudioProcessing* apm,
|
||||||
CriticalSectionWrapper* crit)
|
CriticalSectionWrapper* crit)
|
||||||
: ProcessingComponent(),
|
: ProcessingComponent(),
|
||||||
apm_(apm),
|
apm_(apm),
|
||||||
crit_(crit),
|
crit_(crit),
|
||||||
drift_compensation_enabled_(false),
|
drift_compensation_enabled_(false),
|
||||||
metrics_enabled_(false),
|
metrics_enabled_(false),
|
||||||
suppression_level_(kModerateSuppression),
|
suppression_level_(kModerateSuppression),
|
||||||
stream_drift_samples_(0),
|
stream_drift_samples_(0),
|
||||||
was_stream_drift_set_(false),
|
was_stream_drift_set_(false),
|
||||||
stream_has_echo_(false),
|
stream_has_echo_(false),
|
||||||
delay_logging_enabled_(false),
|
delay_logging_enabled_(false),
|
||||||
extended_filter_enabled_(false),
|
delay_correction_enabled_(false),
|
||||||
reported_delay_enabled_(true) {
|
reported_delay_enabled_(true) {}
|
||||||
}
|
|
||||||
|
|
||||||
EchoCancellationImpl::~EchoCancellationImpl() {}
|
EchoCancellationImpl::~EchoCancellationImpl() {}
|
||||||
|
|
||||||
@ -328,10 +327,7 @@ int EchoCancellationImpl::Initialize() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EchoCancellationImpl::SetExtraOptions(const Config& config) {
|
void EchoCancellationImpl::SetExtraOptions(const Config& config) {
|
||||||
// Both ExtendedFilter and DelayCorrection are diabled by default. If any one
|
delay_correction_enabled_ = config.Get<DelayCorrection>().enabled;
|
||||||
// of them is true, then the extended filter mode is enabled.
|
|
||||||
extended_filter_enabled_ = config.Get<ExtendedFilter>().enabled ||
|
|
||||||
config.Get<DelayCorrection>().enabled;
|
|
||||||
reported_delay_enabled_ = config.Get<ReportedDelay>().enabled;
|
reported_delay_enabled_ = config.Get<ReportedDelay>().enabled;
|
||||||
Configure();
|
Configure();
|
||||||
}
|
}
|
||||||
@ -370,9 +366,8 @@ int EchoCancellationImpl::ConfigureHandle(void* handle) const {
|
|||||||
config.skewMode = drift_compensation_enabled_;
|
config.skewMode = drift_compensation_enabled_;
|
||||||
config.delay_logging = delay_logging_enabled_;
|
config.delay_logging = delay_logging_enabled_;
|
||||||
|
|
||||||
WebRtcAec_enable_extended_filter(
|
WebRtcAec_enable_delay_correction(WebRtcAec_aec_core(
|
||||||
WebRtcAec_aec_core(static_cast<Handle*>(handle)),
|
static_cast<Handle*>(handle)), delay_correction_enabled_ ? 1 : 0);
|
||||||
extended_filter_enabled_ ? 1 : 0);
|
|
||||||
WebRtcAec_enable_reported_delay(WebRtcAec_aec_core(
|
WebRtcAec_enable_reported_delay(WebRtcAec_aec_core(
|
||||||
static_cast<Handle*>(handle)), reported_delay_enabled_ ? 1 : 0);
|
static_cast<Handle*>(handle)), reported_delay_enabled_ ? 1 : 0);
|
||||||
return WebRtcAec_set_config(static_cast<Handle*>(handle), config);
|
return WebRtcAec_set_config(static_cast<Handle*>(handle), config);
|
||||||
|
@ -74,7 +74,7 @@ class EchoCancellationImpl : public EchoCancellation,
|
|||||||
bool was_stream_drift_set_;
|
bool was_stream_drift_set_;
|
||||||
bool stream_has_echo_;
|
bool stream_has_echo_;
|
||||||
bool delay_logging_enabled_;
|
bool delay_logging_enabled_;
|
||||||
bool extended_filter_enabled_;
|
bool delay_correction_enabled_;
|
||||||
bool reported_delay_enabled_;
|
bool reported_delay_enabled_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ extern "C" {
|
|||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
TEST(EchoCancellationInternalTest, ExtendedFilter) {
|
TEST(EchoCancellationInternalTest, DelayCorrection) {
|
||||||
rtc::scoped_ptr<AudioProcessing> ap(AudioProcessing::Create());
|
rtc::scoped_ptr<AudioProcessing> ap(AudioProcessing::Create());
|
||||||
EXPECT_TRUE(ap->echo_cancellation()->aec_core() == NULL);
|
EXPECT_TRUE(ap->echo_cancellation()->aec_core() == NULL);
|
||||||
|
|
||||||
@ -28,24 +28,24 @@ TEST(EchoCancellationInternalTest, ExtendedFilter) {
|
|||||||
AecCore* aec_core = ap->echo_cancellation()->aec_core();
|
AecCore* aec_core = ap->echo_cancellation()->aec_core();
|
||||||
ASSERT_TRUE(aec_core != NULL);
|
ASSERT_TRUE(aec_core != NULL);
|
||||||
// Disabled by default.
|
// Disabled by default.
|
||||||
EXPECT_EQ(0, WebRtcAec_extended_filter_enabled(aec_core));
|
EXPECT_EQ(0, WebRtcAec_delay_correction_enabled(aec_core));
|
||||||
|
|
||||||
Config config;
|
Config config;
|
||||||
config.Set<ExtendedFilter>(new ExtendedFilter(true));
|
config.Set<DelayCorrection>(new DelayCorrection(true));
|
||||||
ap->SetExtraOptions(config);
|
ap->SetExtraOptions(config);
|
||||||
EXPECT_EQ(1, WebRtcAec_extended_filter_enabled(aec_core));
|
EXPECT_EQ(1, WebRtcAec_delay_correction_enabled(aec_core));
|
||||||
|
|
||||||
// Retains setting after initialization.
|
// Retains setting after initialization.
|
||||||
EXPECT_EQ(ap->kNoError, ap->Initialize());
|
EXPECT_EQ(ap->kNoError, ap->Initialize());
|
||||||
EXPECT_EQ(1, WebRtcAec_extended_filter_enabled(aec_core));
|
EXPECT_EQ(1, WebRtcAec_delay_correction_enabled(aec_core));
|
||||||
|
|
||||||
config.Set<ExtendedFilter>(new ExtendedFilter(false));
|
config.Set<DelayCorrection>(new DelayCorrection(false));
|
||||||
ap->SetExtraOptions(config);
|
ap->SetExtraOptions(config);
|
||||||
EXPECT_EQ(0, WebRtcAec_extended_filter_enabled(aec_core));
|
EXPECT_EQ(0, WebRtcAec_delay_correction_enabled(aec_core));
|
||||||
|
|
||||||
// Retains setting after initialization.
|
// Retains setting after initialization.
|
||||||
EXPECT_EQ(ap->kNoError, ap->Initialize());
|
EXPECT_EQ(ap->kNoError, ap->Initialize());
|
||||||
EXPECT_EQ(0, WebRtcAec_extended_filter_enabled(aec_core));
|
EXPECT_EQ(0, WebRtcAec_delay_correction_enabled(aec_core));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(EchoCancellationInternalTest, ReportedDelay) {
|
TEST(EchoCancellationInternalTest, ReportedDelay) {
|
||||||
|
@ -37,10 +37,10 @@ class LevelEstimator;
|
|||||||
class NoiseSuppression;
|
class NoiseSuppression;
|
||||||
class VoiceDetection;
|
class VoiceDetection;
|
||||||
|
|
||||||
// Use to enable the extended filter mode in the AEC, along with robustness
|
// Use to enable the delay correction feature. This now engages an extended
|
||||||
// measures around the reported system delays. It comes with a significant
|
// filter mode in the AEC, along with robustness measures around the reported
|
||||||
// increase in AEC complexity, but is much more robust to unreliable reported
|
// system delays. It comes with a significant increase in AEC complexity, but is
|
||||||
// delays.
|
// much more robust to unreliable reported delays.
|
||||||
//
|
//
|
||||||
// Detailed changes to the algorithm:
|
// Detailed changes to the algorithm:
|
||||||
// - The filter length is changed from 48 to 128 ms. This comes with tuning of
|
// - The filter length is changed from 48 to 128 ms. This comes with tuning of
|
||||||
@ -54,19 +54,11 @@ class VoiceDetection;
|
|||||||
// the delay difference more heavily, and back off from the difference more.
|
// the delay difference more heavily, and back off from the difference more.
|
||||||
// Adjustments force a readaptation of the filter, so they should be avoided
|
// Adjustments force a readaptation of the filter, so they should be avoided
|
||||||
// except when really necessary.
|
// except when really necessary.
|
||||||
// TODO(henrik.lundin): Remove DelayCorrection once ExtendedFilter has
|
|
||||||
// propagated through to all channels
|
|
||||||
// (https://code.google.com/p/webrtc/issues/detail?id=4696).
|
|
||||||
struct DelayCorrection {
|
struct DelayCorrection {
|
||||||
DelayCorrection() : enabled(false) {}
|
DelayCorrection() : enabled(false) {}
|
||||||
explicit DelayCorrection(bool enabled) : enabled(enabled) {}
|
explicit DelayCorrection(bool enabled) : enabled(enabled) {}
|
||||||
bool enabled;
|
bool enabled;
|
||||||
};
|
};
|
||||||
struct ExtendedFilter {
|
|
||||||
ExtendedFilter() : enabled(false) {}
|
|
||||||
explicit ExtendedFilter(bool enabled) : enabled(enabled) {}
|
|
||||||
bool enabled;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Use to disable the reported system delays. By disabling the reported system
|
// Use to disable the reported system delays. By disabling the reported system
|
||||||
// delays the echo cancellation algorithm assumes the process and reverse
|
// delays the echo cancellation algorithm assumes the process and reverse
|
||||||
|
@ -1587,7 +1587,7 @@ TEST_F(ApmTest, SplittingFilter) {
|
|||||||
// Make sure we have extended filter enabled. This makes sure nothing is
|
// Make sure we have extended filter enabled. This makes sure nothing is
|
||||||
// touched until we have a farend frame.
|
// touched until we have a farend frame.
|
||||||
Config config;
|
Config config;
|
||||||
config.Set<ExtendedFilter>(new ExtendedFilter(true));
|
config.Set<DelayCorrection>(new DelayCorrection(true));
|
||||||
apm_->SetExtraOptions(config);
|
apm_->SetExtraOptions(config);
|
||||||
SetFrameTo(frame_, 1000);
|
SetFrameTo(frame_, 1000);
|
||||||
frame_copy.CopyFrom(*frame_);
|
frame_copy.CopyFrom(*frame_);
|
||||||
@ -1969,8 +1969,8 @@ TEST_F(ApmTest, Process) {
|
|||||||
|
|
||||||
Config config;
|
Config config;
|
||||||
config.Set<ExperimentalAgc>(new ExperimentalAgc(false));
|
config.Set<ExperimentalAgc>(new ExperimentalAgc(false));
|
||||||
config.Set<ExtendedFilter>(
|
config.Set<DelayCorrection>(
|
||||||
new ExtendedFilter(test->use_aec_extended_filter()));
|
new DelayCorrection(test->use_aec_extended_filter()));
|
||||||
apm_.reset(AudioProcessing::Create(config));
|
apm_.reset(AudioProcessing::Create(config));
|
||||||
|
|
||||||
EnableAllComponents();
|
EnableAllComponents();
|
||||||
|
@ -258,7 +258,7 @@ void void_main(int argc, char* argv[]) {
|
|||||||
suppression_level)));
|
suppression_level)));
|
||||||
|
|
||||||
} else if (strcmp(argv[i], "--extended_filter") == 0) {
|
} else if (strcmp(argv[i], "--extended_filter") == 0) {
|
||||||
config.Set<ExtendedFilter>(new ExtendedFilter(true));
|
config.Set<DelayCorrection>(new DelayCorrection(true));
|
||||||
|
|
||||||
} else if (strcmp(argv[i], "--no_reported_delay") == 0) {
|
} else if (strcmp(argv[i], "--no_reported_delay") == 0) {
|
||||||
config.Set<ReportedDelay>(new ReportedDelay(false));
|
config.Set<ReportedDelay>(new ReportedDelay(false));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user