Hi Steve, Nice catch, I hadn't even thought to look in there! I used nm to check the SM1000 .elf file and cos() and sin() are still linked in, despite changing all calls in Codec 2 and fdmdv to cosf() and sinf(). This could be the reason.
It does appear that the trig funcs are only called in kiss_fft_alloc(), i.e. just at init time so no real time penalty. kiss_fft() calls kiss_fft_stride() which will perform an alloc _if_ the source and dest arrays are the same. However I think all of the calls I make have separate input and output arrays. So hopefully no real time allocs/frees going on. I should check that some time. Hmmmm, that reminds me of another optimisation. Many of the FFTs we require are real x[], so we could potentially be using about half the MIPs due to the conjugate symmetry in X[]. This will also halve RAM for the FFT outputs. Some Googling shows that there is a function kiss_fftr() that I haven't included ATM. Note to self: nice way to save a few more cycles. Thanks, David On 25/08/14 04:28, Steve wrote: > I was just looking at this file, and maybe the ongoing mods to sinf(), > cosf(), powf(), floorf(), etc may help here. Also the kf_cexp() is > called with a double in kiss_fft_alloc() and can be a float. Save some > bytes if the ARM compiler doesn't already do it for you. > > ------------------------------------------------------------------------------ > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/ > _______________________________________________ > Freetel-codec2 mailing list > Freetel-codec2@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/freetel-codec2 > ------------------------------------------------------------------------------ Slashdot TV. Video for Nerds. Stuff that matters. http://tv.slashdot.org/ _______________________________________________ Freetel-codec2 mailing list Freetel-codec2@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freetel-codec2