[Speex-dev] Speex and the ARM7 Core

Jean-Marc Valin jean-marc.valin at usherbrooke.ca
Fri Sep 7 06:13:55 PDT 2007

> This is a recurring question here and I too asked it some time ago.
> I've done some testing with an Atmel AT91SAM7S at 55MHz and IAR 4
> compiler with no luck. Even compiling Speex using the provided ARM v4
> optimization and Fixed Point Macros I can only reach (narrowband
> encoding) a ratio of around 2:1 (40ms to compress a 20ms audio frame).

Just to give an idea, in early 2005, I was optimising Speex for an
ARM7DTMI chip and after a lot of tuning (assembly code), I got the 6
kbps (the least complex) mode barely working in real-time on a 72 MHz
chip. Since then, there are many parts of Speex that were converted to
use 16-bit multiplies instead of longer 32-bit multiplies. On most
architectures, this speeds things up quite a bit. However, for ARM it
ended up being slower because I had to throw away some of the (32-bit
mul) assembly I had done. I expect that if this code was re-written in
assembly for 16-bit multiplications, both 6 and 8 kbps would run on 72
MHz and *maybe* on 60 MHz. Last note: make sure you set the complexity
setting to 1.


More information about the Speex-dev mailing list