32 #if !CONFIG_HARDCODED_TABLES
49 ff_sin_16, ff_sin_32, ff_sin_64, ff_sin_128, ff_sin_256, ff_sin_512, ff_sin_1024,
50 ff_sin_2048, ff_sin_4096, ff_sin_8192, ff_sin_16384, ff_sin_32768, ff_sin_65536,
61 const int n = 1 << s->
nbits;
63 const float k2 = 0.5 - s->
inverse;
74 data[0] = ev.
re+data[1];
75 data[1] = ev.
re-data[1];
76 for (i = 1; i < (n>>2); i++) {
80 ev.
re = k1*(data[i1 ]+data[i2 ]);
81 od.
im = -k2*(data[i1 ]-data[i2 ]);
82 ev.
im = k1*(data[i1+1]-data[i2+1]);
83 od.
re = k2*(data[i1+1]+data[i2+1]);
85 data[i1 ] = ev.
re + od.
re*tcos[i] - od.
im*tsin[i];
86 data[i1+1] = ev.
im + od.
im*tcos[i] + od.
re*tsin[i];
87 data[i2 ] = ev.
re - od.
re*tcos[i] + od.
im*tsin[i];
88 data[i2+1] = -ev.
im + od.
im*tcos[i] + od.
re*tsin[i];
108 if (nbits < 4 || nbits > 16)
115 s->
tcos = ff_cos_tabs[nbits];
117 #if !CONFIG_HARDCODED_TABLES
121 for (i = 0; i < (n >> 2); i++)
122 s->
tsin[i] = sin(i * theta);
av_cold void ff_rdft_end(RDFTContext *s)
ptrdiff_t const GLvoid * data
void(* fft_permute)(struct FFTContext *s, FFTComplex *z)
Do the permutation needed BEFORE calling fft_calc().
av_cold void ff_rdft_init_arm(RDFTContext *s)
SINTABLE_CONST FFTSample * tsin
void(* rdft_calc)(struct RDFTContext *s, FFTSample *z)
static SINTABLE_CONST FFTSample *const ff_sin_tabs[]
#define ff_init_ff_cos_tabs
void(* fft_calc)(struct FFTContext *s, FFTComplex *z)
Do a complex FFT with the parameters defined in ff_fft_init().
static void rdft_calc_c(RDFTContext *s, FFTSample *data)
Map one real FFT into two parallel real even and odd FFTs.
av_cold int ff_rdft_init(RDFTContext *s, int nbits, enum RDFTransformType trans)
Set up a real FFT.