39 const int n = 1 <<
s->nbits;
41 const float k2 = 0.5 -
s->inverse;
55 #define RDFT_UNMANGLE(sign0, sign1) \
56 for (i = 1; i < (n>>2); i++) { \
60 ev.re = k1*(data[i1 ]+data[i2 ]); \
61 od.im = k2*(data[i2 ]-data[i1 ]); \
62 ev.im = k1*(data[i1+1]-data[i2+1]); \
63 od.re = k2*(data[i1+1]+data[i2+1]); \
65 odsum.re = od.re*tcos[i] sign0 od.im*tsin[i]; \
66 odsum.im = od.im*tcos[i] sign1 od.re*tsin[i]; \
67 data[i1 ] = ev.re + odsum.re; \
68 data[i1+1] = ev.im + odsum.im; \
69 data[i2 ] = ev.re - odsum.re; \
70 data[i2+1] = odsum.im - ev.im; \
73 if (
s->negative_sin) {
98 if (nbits < 4 || nbits > 16)
105 s->tcos = ff_cos_tabs[nbits];
106 s->tsin = ff_cos_tabs[nbits] + (n >> 2);
void ff_init_ff_cos_tabs(int index)
Initialize the cosine table in ff_cos_tabs[index].
av_cold int ff_rdft_init(RDFTContext *s, int nbits, enum RDFTransformType trans)
Set up a real FFT.
#define RDFT_UNMANGLE(sign0, sign1)
static void rdft_calc_c(RDFTContext *s, FFTSample *data)
Map one real FFT into two parallel real even and odd FFTs.
av_cold void ff_rdft_end(RDFTContext *s)
av_cold void ff_rdft_init_arm(RDFTContext *s)