[Speex-dev] new assembler port

Jim Crichton jim.crichton at comcast.net
Tue May 16 07:25:23 PDT 2006

> I'm trying to use speex for implementing a VoIP demo application using 
> linphone
> on an embedded system. At the moment I'm not really able to do real time 
> encoding,
> and thinking about making an assembler port for speex to the AVR32 
> architecture.
> The AVR32 is a new hybrid MCU/DSP fixed point processor running at 120Mhz 
> in
> my application.
> Does anyone have experiences/info about the computational power 
> requirements, e.g.
> what quality/bitrate and complexity of encoding seem to be realistic as 
> target operating
> modes. I've run some tests with speexenc, encoding a 1minute 16bit PCM 
> 8khz speech
> file, which took 3m53s to encode at 11kbps CBR/complexity 3.
> For finding a starting point for the assembler port I did some analysis of 
> the encoding with
> valgrind-callgrind. Perhaps some of you have already done similar work and 
> could share
> a bit of their experience?
> To loose some words about myself, I'm a student of information 
> technologies/rf electronics
> and generally interested in everything that has to do with embedded system 
> running Linux,
> though I'm normally doing more of the hardware design stuff ;-)

I suggest that you start by looking at 8kbps, complexity 0.  I (and others) 
are running that on a TI C55xx DSP, and it runs a little under 30 MIPs when 
I last checked, with no assembly optimizations.  I have not tried to profile 
other rates, but I did run a test at 15kbps, complexity 3, and that was 66 

People ask about guidelines for assembly optimization, and if you do some 
searching, you will find some tips from Jean-Marc on where to start.  Also, 
if you look in the source tree for references to Blackfin or bfin, you will 
find an example port done by Jean-Marc.

You should make sure that you run the latest code from Subversion, which has 
some speed improvements from 1.1.12.


Jim Crichton 

More information about the Speex-dev mailing list