[Tremor] Tremor ARM performance issues

Nicholas Vinen hb at x256.org
Fri Dec 5 15:57:07 PST 2008


Jim Barlow wrote:
> The patch actually contains all of the C source for the FFT itself, in
> the cfft() function.  It would help matters to substitute an ARM
> optimized FFT in its place.  Most codecs seem to use the Gluth technique
> because it allows one to take advantage of existing optimized FFT code.
> It's definitely out there for ARM.
>
> prerot and prelap transform the MDCT spectrum into something that can be
> run through the FFT.  postlap and postrot reverse this transform.  See
> their thesis paper in chapter 5 for a description of how the algorithm
> is developed.  These transforms simply perform complex multiplies and
> store the result in a different part of the buffer -- equations 5.8,
> 5.9.
>
> I don't have a C version, but there's enough information in the comments
> and the thesis to see what the intent is.  It is a shame that Sandvall
> didn't include a pure C version -- it would have helped with
> understanding the algorithm.
>
> Table size shouldn't be an issue, because you could remove the standard
> MDCT tables, which I believe are just as long as the FFT tables.
>
>
> Jim Barlow
>   
Thanks Jim.

It sounds like prerot/prelap/postrot/postlap will need to be rewritten
in ARM assembly language for the best performance. It's a job I wouldn't
mind doing if I didn't already have so many other things to implement to
get this Vorbis player working. I guess if I simply can't get the
performance to adequate levels with mdct I'll be forced to do that. Or
maybe I can do it once I've finished in an attempt to get even more
performance.

I'm sure I could write a C version but I'd have to take the time to read
& understand exactly what is going on first and right now I'm having a
hard enough job just getting Tremor to run on this processor at all.


The MDCT tables are definitely a lot smaller than the FFT tables. There
are two tables of ~1024 DWORDs in mdct_lookup.h for about 8KB of data.
The FFT tables look to be about 20KB.



Nicholas



More information about the Tremor mailing list