struct fft_context {
int nbits;
uint16_t *revtab;
- struct fft_complex *exptab;
};
struct mdct_context {
s->nbits = nbits;
n = 1 << nbits;
- s->exptab = para_malloc((n / 2) * sizeof(struct fft_complex));
s->revtab = para_malloc(n * sizeof(uint16_t));
for (j = 4; j <= nbits; j++) {
int k = 1 << j;
return 0;
}
-static void fft_end(struct fft_context *ctx)
-{
- freep(&ctx->revtab);
- freep(&ctx->exptab);
-}
-
/**
* Initialize the inverse modified cosine transform.
+ *
+ * \param nbits The number of bits to use (4 <= \a nbits <= 18).
+ *
+ * \param result Opaque structure that must be passed to \ref imdct().
+ *
+ * \return Standard.
*/
int imdct_init(int nbits, struct mdct_context **result)
{
void imdct_end(struct mdct_context *ctx)
{
- freep(&ctx->tcos);
- freep(&ctx->tsin);
- fft_end(&ctx->fft);
+ free(ctx->tcos);
+ free(ctx->tsin);
+ free(ctx->fft.revtab);
free(ctx);
}