|
|
@ -53,21 +53,21 @@ av_cold int ff_rdft_init(RDFTContext *s, int nbits, enum RDFTransformType trans) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int n = 1 << nbits; |
|
|
|
int n = 1 << nbits; |
|
|
|
int i; |
|
|
|
int i; |
|
|
|
const double theta = (trans == RDFT || trans == IRIDFT ? -1 : 1)*2*M_PI/n; |
|
|
|
const double theta = (trans == DFT_R2C || trans == DFT_C2R ? -1 : 1)*2*M_PI/n; |
|
|
|
|
|
|
|
|
|
|
|
s->nbits = nbits; |
|
|
|
s->nbits = nbits; |
|
|
|
s->inverse = trans == IRDFT || trans == IRIDFT; |
|
|
|
s->inverse = trans == IDFT_C2R || trans == DFT_C2R; |
|
|
|
s->sign_convention = trans == RIDFT || trans == IRIDFT ? 1 : -1; |
|
|
|
s->sign_convention = trans == IDFT_R2C || trans == DFT_C2R ? 1 : -1; |
|
|
|
|
|
|
|
|
|
|
|
if (nbits < 4 || nbits > 16) |
|
|
|
if (nbits < 4 || nbits > 16) |
|
|
|
return -1; |
|
|
|
return -1; |
|
|
|
|
|
|
|
|
|
|
|
if (ff_fft_init(&s->fft, nbits-1, trans == IRDFT || trans == RIDFT) < 0) |
|
|
|
if (ff_fft_init(&s->fft, nbits-1, trans == IDFT_C2R || trans == IDFT_R2C) < 0) |
|
|
|
return -1; |
|
|
|
return -1; |
|
|
|
|
|
|
|
|
|
|
|
ff_init_ff_cos_tabs(nbits); |
|
|
|
ff_init_ff_cos_tabs(nbits); |
|
|
|
s->tcos = ff_cos_tabs[nbits]; |
|
|
|
s->tcos = ff_cos_tabs[nbits]; |
|
|
|
s->tsin = ff_sin_tabs[nbits]+(trans == RDFT || trans == IRIDFT)*(n>>2); |
|
|
|
s->tsin = ff_sin_tabs[nbits]+(trans == DFT_R2C || trans == DFT_C2R)*(n>>2); |
|
|
|
#if !CONFIG_HARDCODED_TABLES |
|
|
|
#if !CONFIG_HARDCODED_TABLES |
|
|
|
for (i = 0; i < (n>>2); i++) { |
|
|
|
for (i = 0; i < (n>>2); i++) { |
|
|
|
s->tsin[i] = sin(i*theta); |
|
|
|
s->tsin[i] = sin(i*theta); |
|
|
|