From 34d5074e6d1c2a5b3c611aaecd978f5746411a1c Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Thu, 30 Dec 2010 22:13:37 +0000 Subject: [PATCH] Add a window field to AC3MDCTContext and use it as an input to apply_window() instead of using the ff_ac3_window[] table directly. Originally committed as revision 26172 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/ac3enc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index 031718afa4..b10c2d2ae9 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -56,6 +56,7 @@ typedef struct IComplex { } IComplex; typedef struct AC3MDCTContext { + const int16_t *window; ///< MDCT window function int nbits; ///< log2(transform size) int16_t *costab; ///< FFT cos table int16_t *sintab; ///< FFT sin table @@ -262,6 +263,8 @@ static av_cold int mdct_init(AVCodecContext *avctx, AC3MDCTContext *mdct, if (ret) return ret; + mdct->window = ff_ac3_window; + FF_ALLOC_OR_GOTO(avctx, mdct->xcos1, n4 * sizeof(*mdct->xcos1), mdct_alloc_fail); FF_ALLOC_OR_GOTO(avctx, mdct->xsin1, n4 * sizeof(*mdct->xsin1), mdct_alloc_fail); FF_ALLOC_OR_GOTO(avctx, mdct->rot_tmp, n * sizeof(*mdct->rot_tmp), mdct_alloc_fail); @@ -498,7 +501,7 @@ static void apply_mdct(AC3EncodeContext *s) AC3Block *block = &s->blocks[blk]; const int16_t *input_samples = &s->planar_samples[ch][blk * AC3_BLOCK_SIZE]; - apply_window(s->windowed_samples, input_samples, ff_ac3_window, AC3_WINDOW_SIZE); + apply_window(s->windowed_samples, input_samples, s->mdct.window, AC3_WINDOW_SIZE); block->exp_shift[ch] = normalize_samples(s);