From 3b924294ea0ab891cf28fb30f26962a7960f7f37 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Thu, 13 Jan 2011 15:28:06 -0500 Subject: [PATCH] ac3enc: use dsputil functions in apply_window() Signed-off-by: Mans Rullgard --- libavcodec/ac3enc.c | 4 ++-- libavcodec/ac3enc_fixed.c | 2 +- libavcodec/ac3enc_float.c | 16 ++++++---------- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index e59916cc6f..f058d79882 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -161,7 +161,7 @@ static av_cold int mdct_init(AVCodecContext *avctx, AC3MDCTContext *mdct, static void mdct512(AC3MDCTContext *mdct, CoefType *out, SampleType *in); -static void apply_window(SampleType *output, const SampleType *input, +static void apply_window(DSPContext *dsp, SampleType *output, const SampleType *input, const SampleType *window, int n); static int normalize_samples(AC3EncodeContext *s); @@ -262,7 +262,7 @@ static void apply_mdct(AC3EncodeContext *s) AC3Block *block = &s->blocks[blk]; const SampleType *input_samples = &s->planar_samples[ch][blk * AC3_BLOCK_SIZE]; - apply_window(s->windowed_samples, input_samples, s->mdct.window, AC3_WINDOW_SIZE); + apply_window(&s->dsp, s->windowed_samples, input_samples, s->mdct.window, AC3_WINDOW_SIZE); block->exp_shift[ch] = normalize_samples(s); diff --git a/libavcodec/ac3enc_fixed.c b/libavcodec/ac3enc_fixed.c index 3723b08b96..dfd218ec72 100644 --- a/libavcodec/ac3enc_fixed.c +++ b/libavcodec/ac3enc_fixed.c @@ -251,7 +251,7 @@ static void mdct512(AC3MDCTContext *mdct, int32_t *out, int16_t *in) /** * Apply KBD window to input samples prior to MDCT. */ -static void apply_window(int16_t *output, const int16_t *input, +static void apply_window(DSPContext *dsp, int16_t *output, const int16_t *input, const int16_t *window, int n) { int i; diff --git a/libavcodec/ac3enc_float.c b/libavcodec/ac3enc_float.c index f3246362e7..33e8294fbf 100644 --- a/libavcodec/ac3enc_float.c +++ b/libavcodec/ac3enc_float.c @@ -48,17 +48,19 @@ static av_cold int mdct_init(AVCodecContext *avctx, AC3MDCTContext *mdct, int nbits) { float *window; - int n, n2; + int i, n, n2; n = 1 << nbits; n2 = n >> 1; - window = av_malloc(n2 * sizeof(*window)); + window = av_malloc(n * sizeof(*window)); if (!window) { av_log(avctx, AV_LOG_ERROR, "Cannot allocate memory.\n"); return AVERROR(ENOMEM); } ff_kbd_window_init(window, 5.0, n2); + for (i = 0; i < n2; i++) + window[n-1-i] = window[i]; mdct->window = window; return ff_mdct_init(&mdct->fft, nbits, 0, -2.0 / n); @@ -79,16 +81,10 @@ static void mdct512(AC3MDCTContext *mdct, float *out, float *in) /** * Apply KBD window to input samples prior to MDCT. */ -static void apply_window(float *output, const float *input, +static void apply_window(DSPContext *dsp, float *output, const float *input, const float *window, int n) { - int i; - int n2 = n >> 1; - - for (i = 0; i < n2; i++) { - output[i] = input[i] * window[i]; - output[n-i-1] = input[n-i-1] * window[i]; - } + dsp->vector_fmul(output, input, window, n); }