[pulseaudio-discuss] [PATCH v4 03/23] echo-cancel: Add support for the webrtc intelligibility enhancer
arun at accosted.net
arun at accosted.net
Wed Feb 17 14:16:55 UTC 2016
From: Arun Raghavan <git at arunraghavan.net>
Just exposing this, disabled by default. It's not used by Chromium at
the moment.
---
src/modules/echo-cancel/webrtc.cc | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/modules/echo-cancel/webrtc.cc b/src/modules/echo-cancel/webrtc.cc
index ee3075f..ec63e26 100644
--- a/src/modules/echo-cancel/webrtc.cc
+++ b/src/modules/echo-cancel/webrtc.cc
@@ -47,6 +47,7 @@ PA_C_DECL_END
#define DEFAULT_COMFORT_NOISE true
#define DEFAULT_DRIFT_COMPENSATION false
#define DEFAULT_EXTENDED_FILTER false
+#define DEFAULT_INTELLIGIBILITY_ENHANCER false
static const char* const valid_modargs[] = {
"high_pass_filter",
@@ -58,6 +59,7 @@ static const char* const valid_modargs[] = {
"comfort_noise",
"drift_compensation",
"extended_filter",
+ "intelligibility_enhancer",
NULL
};
@@ -84,7 +86,7 @@ bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
webrtc::AudioProcessing *apm = NULL;
webrtc::ProcessingConfig pconfig;
webrtc::Config config;
- bool hpf, ns, agc, dgc, mobile, cn, ext_filter;
+ bool hpf, ns, agc, dgc, mobile, cn, ext_filter, intelligibility;
int rm = -1;
pa_modargs *ma;
@@ -163,8 +165,16 @@ bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
goto fail;
}
+ intelligibility = DEFAULT_INTELLIGIBILITY_ENHANCER;
+ if (pa_modargs_get_value_boolean(ma, "intelligibility_enhancer", &intelligibility) < 0) {
+ pa_log("Failed to parse intelligibility_enhancer value");
+ goto fail;
+ }
+
if (ext_filter)
config.Set<webrtc::ExtendedFilter>(new webrtc::ExtendedFilter(true));
+ if (intelligibility)
+ config.Set<webrtc::Intelligibility>(new webrtc::Intelligibility(true));
apm = webrtc::AudioProcessing::Create(config);
@@ -253,7 +263,7 @@ void pa_webrtc_ec_play(pa_echo_canceller *ec, const uint8_t *play) {
pa_assert(play_frame.samples_per_channel_ <= webrtc::AudioFrame::kMaxDataSizeSamples);
memcpy(play_frame.data_, play, ec->params.priv.webrtc.blocksize);
- apm->AnalyzeReverseStream(&play_frame);
+ apm->ProcessReverseStream(&play_frame);
}
void pa_webrtc_ec_record(pa_echo_canceller *ec, const uint8_t *rec, uint8_t *out) {
--
2.5.0
More information about the pulseaudio-discuss
mailing list