[Speex-dev] Speex optimization and 12 bits conversion for 12 bits ADC

Cheng Rong rongrong.cheng at gmail.com
Wed Jul 25 01:27:09 PDT 2007


Hi,Jean-Marc,

Thanks for your suggestions very much!

> > I am porting speex on ARM7TDMI, I have done some optimization, the
> > result is that the encoder and decoder need about 60 MCPS for 5.96kbps
> > bitrate and complexity 0. Can someone give me informtion about Speex
> > optimization on ARM7?
>
> That's quite good. A few suggestions here:
> 1) Don't use complexity 0 unless you're really desperate (the CPU gain
> over complexity 1 is marginal and there's a cost in quality)
> 2) Have you enabled the current ARM4 assembly bits?
> 3) There are a couple functions that could definitely benefit from
> assembly optimisations. They used to be optimised for AMR4, but I had to
> remove that when I optimised the C version. Those are filter_mem16(),
> iir_mem16() and fir_mem16(). Let me know if you're going to do that
> because the best way to do it is not to start from the current C code.
>

Yes, I have enabled the the current ARM4 assembly bits. I have tried
to optimize these functions(filter_mem16(),iir_mem16() and
fir_mem16()) in C code, but the effect is very small, and I am going
to do assembly optimization for these functions. Do you have another C
code about these functions for assembly optimisations? Can you give me
some information and suggestions?

> > Another question, my ADC and DAC are 12 bits, but Speex codec is
> > 16bits, Did someone try to modify speex to 12 bits? I think if I
> > modify speex to 12 bits, the computation power will be reduced, is it
> > right?
>
> Wrong. Speex would still need 16 bits internally. I also recommend you
> only shift by 3 so that you're sure never to have clipping problems at
> 16 bits.
>

My ADC is 12 bits, and the data from 12 bits ADC just has 12-bit
accuracy, means that I need fill the low 4 bit with zero to make the
input data is 16 bit, I means that Some computation may be simplified
so that to reduce computation power because the just 12 bit is useful.
And the DAC is also 12 bit, it means that I just need the high 12 bit
and discard the low 4 bit after decoer?

Thanks.

Best Regards,
Cheng Rong


More information about the Speex-dev mailing list