FastLED 3.9.15
Loading...
Searching...
No Matches

◆ kiss_fftr_alloc()

kiss_fftr_cfg kiss_fftr_alloc ( int nfft,
int inverse_fft,
void * mem,
size_t * lenmem )

Definition at line 21 of file kiss_fftr.c.

22{
23 int i;
24 kiss_fftr_cfg st = NULL;
25 size_t subsize = 0, memneeded;
26
27 if (nfft & 1) {
28 fprintf(stderr,"Real FFT optimization must be even.\n");
29 return NULL;
30 }
31 nfft >>= 1;
32
33 kiss_fft_alloc (nfft, inverse_fft, NULL, &subsize);
34 memneeded = sizeof(struct kiss_fftr_state) + subsize + sizeof(kiss_fft_cpx) * ( nfft * 3 / 2);
35
36 if (lenmem == NULL) {
37 st = (kiss_fftr_cfg) KISS_FFT_MALLOC (memneeded);
38 } else {
39 if (*lenmem >= memneeded)
40 st = (kiss_fftr_cfg) mem;
41 *lenmem = memneeded;
42 }
43 if (!st)
44 return NULL;
45
46 st->substate = (kiss_fft_cfg) (st + 1); /*just beyond kiss_fftr_state struct */
47
48 #pragma GCC diagnostic push
49 #pragma GCC diagnostic ignored "-Wcast-align"
50 // This cast alginment might be a problem, kiss_fft_cpx has alignment-2.
51 st->tmpbuf = (kiss_fft_cpx *) (((char *) st->substate) + subsize);
52 #pragma GCC diagnostic pop
53
54 st->super_twiddles = st->tmpbuf + nfft;
55 kiss_fft_alloc(nfft, inverse_fft, st->substate, &subsize);
56
57 for (i = 0; i < nfft/2; ++i) {
58 double phase =
59 -3.14159265358979323846264338327 * ((double) (i+1) / nfft + .5);
60 if (inverse_fft)
61 phase *= -1;
62 kf_cexp (st->super_twiddles+i,phase);
63 }
64 return st;
65}
#define kf_cexp(x, phase)
kiss_fft_cfg kiss_fft_alloc(int nfft, int inverse_fft, void *mem, size_t *lenmem)
Definition kiss_fft.c:333
#define KISS_FFT_MALLOC
Definition kiss_fft.h:53
struct kiss_fft_state * kiss_fft_cfg
Definition kiss_fft.h:77
kiss_fft_cfg substate
Definition kiss_fftr.c:13
kiss_fft_cpx * tmpbuf
Definition kiss_fftr.c:14
kiss_fft_cpx * super_twiddles
Definition kiss_fftr.c:15
struct kiss_fftr_state * kiss_fftr_cfg
Definition kiss_fftr.h:26

References kf_cexp, kiss_fft_alloc(), KISS_FFT_MALLOC, kiss_fftr_state::substate, kiss_fftr_state::super_twiddles, and kiss_fftr_state::tmpbuf.

Referenced by fl::FFTContext::FFTContext(), and generate_kernels().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: