[Vorbis-dev] Butterflies in mdct.c

petshome at atlas.cz petshome at atlas.cz
Wed Jan 26 08:49:15 PST 2005


In mdct.c there's some functions including some-point butterfly. In 32-point and 16-point there are calling of smaller-point function everytime twice on each half of data. When I looked on it I found that's just linear algebra. So it can be rewritten to matrix multiplication. Some one can say: there's optimization on in register working. But imagine there's one calling 32-point, twice 16-point and 4x 8-point. Thanks to matrix associative multiplications it can be only 1 matrix multiplication which can be optimized and the result won't (I hardly suppose) be worse than current. Even sum of four same numbers in different functions could be done now only with left shift. I'm lack of time but won't be. Still it's not easy to create those matrixes from source code (especially 32-point). Would anyone send me those matrixes or manual how to create them? I'll do the multiplications and hand-optimization (I know alorithm to create application but this will be faster by hand). Or did anyone try this? Can anyone prove that this can't be faster? Even there's possibility to use MMX when working with matrixes.

Is there any other such time critical piece of code that needs optimization? Send me a pointer and I'll look at.




More information about the Vorbis-dev mailing list