I have spent some time recently working with fixed point numbers on my machine (StrongARM CPU - no hardware FPU .'. fixed point numbers are significantly faster). I'm now at a point where I would like to add some of these routines to LAME (not to the normal version before I get grilled, my aim would be to form a StrongARM specific version based around the main release).
 
I don't know a great deal about how the MP3 data is stored in a file, is it stored as IEEE floats/doubles/long doubles or is it converted into some integer format before being written? One option I've thought about using would be to replace all the calls to the FPU emulation library that implements the math routines with their fixed point counterparts and statically linking with this library as opposed to the usual library thus making LAME replace all it's fixed point equivalents. Obviously I'd need to convert the tables used throughout the program into fixed-point format but apart from that I can't see any other problems occuring unless the floating point numbers are actually written to the file. In this case I could probably compile a new floating point library with symbol names that differ to the standard ones, compile the affected code segments with -S and adjust the references to point to the true float routines that also convert from the fixed point format.
 
Just a thought, any advice greatly appreciated, even if a 100% refit is unfeasible then I'm sure I'll be able to add bits here and there (for example, replacing the FHT routine with one that uses fixed point math).
 
Regards
 
 
Andrew
 

Reply via email to