diff options
author | Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> | 2010-08-26 10:04:03 +0400 |
---|---|---|
committer | Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> | 2010-08-26 10:04:03 +0400 |
commit | 5d937c0223451943d6630d15087eb5e16d16b8d7 (patch) | |
tree | eb7b7c3a2b93ea23dff501e8de18755a62e88f66 /libcelt/kiss_fft.c | |
parent | 40603b2f03c43b416263a41e5cb92268a03b96a3 (diff) |
Disabling mdct and fft init code with static modes
Diffstat (limited to 'libcelt/kiss_fft.c')
-rw-r--r-- | libcelt/kiss_fft.c | 89 |
1 files changed, 47 insertions, 42 deletions
diff --git a/libcelt/kiss_fft.c b/libcelt/kiss_fft.c index 861528a..3f25289 100644 --- a/libcelt/kiss_fft.c +++ b/libcelt/kiss_fft.c @@ -433,40 +433,6 @@ static void ki_bfly5( #endif -static -void compute_bitrev_table( - int Fout, - celt_int16 *f, - const size_t fstride, - int in_stride, - celt_int16 * factors, - const kiss_fft_state *st - ) -{ - const int p=*factors++; /* the radix */ - const int m=*factors++; /* stage's fft length/p */ - - /*printf ("fft %d %d %d %d %d %d\n", p*m, m, p, s2, fstride*in_stride, N);*/ - if (m==1) - { - int j; - for (j=0;j<p;j++) - { - *f = Fout+j; - f += fstride*in_stride; - } - } else { - int j; - for (j=0;j<p;j++) - { - compute_bitrev_table( Fout , f, fstride*p, in_stride, factors,st); - f += fstride*in_stride; - Fout += m; - } - } -} - - static void kf_work( kiss_fft_cpx * Fout, const kiss_fft_cpx * f, @@ -534,6 +500,43 @@ static void ki_work( } } + +#ifndef STATIC_MODES + +static +void compute_bitrev_table( + int Fout, + celt_int16 *f, + const size_t fstride, + int in_stride, + celt_int16 * factors, + const kiss_fft_state *st + ) +{ + const int p=*factors++; /* the radix */ + const int m=*factors++; /* stage's fft length/p */ + + /*printf ("fft %d %d %d %d %d %d\n", p*m, m, p, s2, fstride*in_stride, N);*/ + if (m==1) + { + int j; + for (j=0;j<p;j++) + { + *f = Fout+j; + f += fstride*in_stride; + } + } else { + int j; + for (j=0;j<p;j++) + { + compute_bitrev_table( Fout , f, fstride*p, in_stride, factors,st); + f += fstride*in_stride; + Fout += m; + } + } +} + + /* facbuf is populated by p1,m1,p2,m2, ... where p[i] * m[i] = m[i-1] @@ -643,7 +646,16 @@ kiss_fft_state *kiss_fft_alloc(int nfft,void * mem,size_t * lenmem ) return kiss_fft_alloc_twiddles(nfft, mem, lenmem, NULL); } - +void kiss_fft_free(const kiss_fft_state *cfg) +{ + celt_free((celt_int16*)cfg->bitrev); + if (cfg->shift < 0) + celt_free((kiss_twiddle_cpx*)cfg->twiddles); + celt_free((kiss_fft_state*)cfg); +} + +#endif /* STATIC_MODES */ + static void kiss_fft_stride(const kiss_fft_state *st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int in_stride) { if (fin == fout) @@ -688,10 +700,3 @@ void kiss_ifft(const kiss_fft_state *cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *f kiss_ifft_stride(cfg,fin,fout,1); } -void kiss_fft_free(const kiss_fft_state *cfg) -{ - celt_free((celt_int16*)cfg->bitrev); - if (cfg->shift < 0) - celt_free((kiss_twiddle_cpx*)cfg->twiddles); - celt_free((kiss_fft_state*)cfg); -} |