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

Reply via email to