[pulseaudio-discuss] Cleanup of Adrian AEC implementation

Peter Meerwald pmeerw at pmeerw.net
Fri Feb 8 07:41:52 PST 2013


Hello Arun,

> > fix some obvious bugs discovered by valgrind
> 
> I'd actually like to purge the Adrian canceller altogether. At least
> when I tried it, it was pretty ineffective. It was useful to have at
> some point to validate our approach to having pluggable cancellers, but
> it's probably deadcode at this point.

I'd rather keep it as a reference implementation; it is based on 
NLMS, the baseline method for AEC

> Did you have a chance to use it at all? Any reason to keep it around?

the other AEC implementations aren't that great either; speex is 
basically unmaintained as well and has plenty of issues, webrtc is an old 
snapshot and it breaks (for me) with agc enabled, not sure yet why

==8785== Invalid read of size 8
==8785==    at 0x40A2F6: pa_echo_canceller_get_capture_volume (module-echo-cancel.c:1593)
==8785==    by 0x418EA2F: pa_webrtc_ec_record (webrtc.cc:262)
==8785==    by 0x40C890: main (module-echo-cancel.c:2223)
==8785==  Address 0x28 is not stack'd, malloc'd or (recently) free'd

void pa_echo_canceller_get_capture_volume(pa_echo_canceller *ec, 
pa_cvolume *v) {
    // ec->msg is NULL 
    *v = ec->msg->userdata->thread_info.current_volume;
}

which leaves only the null implementation that works flawlessly :)

regards, p.

-- 

Peter Meerwald
+43-664-2444418 (mobile)


More information about the pulseaudio-discuss mailing list