From 0801b5979b118f0f47443e4561d0fa977695d263 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Mon, 17 Sep 2012 16:13:24 -0400 Subject: binkaudio: use a different value for the coefficient scale for the DCT codec Eliminates the need for vector_fmul_scalar() in each frame. --- libavcodec/binkaudio.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'libavcodec/binkaudio.c') diff --git a/libavcodec/binkaudio.c b/libavcodec/binkaudio.c index 31a6a7caba..915e7aa171 100644 --- a/libavcodec/binkaudio.c +++ b/libavcodec/binkaudio.c @@ -47,7 +47,6 @@ static float quant_table[96]; typedef struct { AVFrame frame; GetBitContext gb; - DSPContext dsp; FmtConvertContext fmt_conv; int version_b; ///< Bink version 'b' int first; @@ -79,7 +78,6 @@ static av_cold int decode_init(AVCodecContext *avctx) int i; int frame_len_bits; - ff_dsputil_init(&s->dsp, avctx); ff_fmt_convert_init(&s->fmt_conv, avctx); /* determine frame length */ @@ -112,7 +110,10 @@ static av_cold int decode_init(AVCodecContext *avctx) s->overlap_len = s->frame_len / 16; s->block_size = (s->frame_len - s->overlap_len) * s->channels; sample_rate_half = (sample_rate + 1) / 2; - s->root = 2.0 / sqrt(s->frame_len); + if (avctx->codec->id == AV_CODEC_ID_BINKAUDIO_RDFT) + s->root = 2.0 / sqrt(s->frame_len); + else + s->root = s->frame_len / sqrt(s->frame_len); for (i = 0; i < 96; i++) { /* constant is result of 0.066399999/log10(M_E) */ quant_table[i] = expf(i * 0.15289164787221953823f) * s->root; @@ -259,7 +260,6 @@ static int decode_block(BinkAudioContext *s, int16_t *out, int use_dct) if (CONFIG_BINKAUDIO_DCT_DECODER && use_dct) { coeffs[0] /= 0.5; s->trans.dct.dct_calc(&s->trans.dct, coeffs); - s->dsp.vector_fmul_scalar(coeffs, coeffs, s->frame_len / 2, s->frame_len); } else if (CONFIG_BINKAUDIO_RDFT_DECODER) s->trans.rdft.rdft_calc(&s->trans.rdft, coeffs); -- cgit v1.2.3