voice-engine / ec

Echo Canceller, part of Voice Engine project
GNU General Public License v3.0
240 stars 69 forks source link

Speexdsp doesn't compile for Neon on Aarch64 #16

Closed StuartIanNaylor closed 4 years ago

StuartIanNaylor commented 4 years ago

Hi,

Not your problem but just wondered if you had come across a solution? On Aarch64 you get errors about 16bit int support and drop --enable-neon it compiles but obviously doesn't work as well as neon-enabled compiles.

xiongyihui commented 4 years ago

maybe rewrite libspeexdsp, as 16bit is not faster than 32bit

StuartIanNaylor commented 4 years ago

Yeah that would be so cool as said dev@speexdsp doesn't respond and sort of seems dead.

I guess its 16bit as they set the input format that way to the wide audio standard of 16bit. Must be part of the code that has continued declaring 16bit as sample frame gets passed to FFT? I am presuming though with ArmSoc that big perf increases could be made with custom Neon FFT as eight 16-bit data elements can be operated on simultaneously using all 128 bits of a Neon register. Dunno how that translates to or would fit in with https://projectne10.github.io/Ne10/doc/modules.html But from memory I thought they where using the FFTW which since Version 3.3.1 supports Neon. http://www.fftw.org/

But maybe even the projectne10 FFT is even more efficient.

Its strange as AEC for most voice AI is almost an after thought or only advocate hardware whilst one of the most common functions of media playing necessitates AEC if you want to control and stop.

What you have done is truly great xiongyihui and it works but 64bit is already a problem but can not seem to get response from speex-dev@xiph.org.

I will try again.

StuartIanNaylor commented 4 years ago

Doh! https://gitlab.xiph.org/xiph/speexdsp/-/issues/1