diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2012-09-17 16:13:24 -0400 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2012-09-18 09:26:56 -0400 |
commit | 0801b5979b118f0f47443e4561d0fa977695d263 (patch) | |
tree | 05a3224e9d7611220b5455bdf684add38db56498 /libavcodec/binkaudio.c | |
parent | 6a08955c104450dfc8f56aa9f552a4c08f8d8f7f (diff) | |
download | ffmpeg-0801b5979b118f0f47443e4561d0fa977695d263.tar.gz |
binkaudio: use a different value for the coefficient scale for the DCT codec
Eliminates the need for vector_fmul_scalar() in each frame.
Diffstat (limited to 'libavcodec/binkaudio.c')
-rw-r--r-- | libavcodec/binkaudio.c | 8 |
1 files changed, 4 insertions, 4 deletions
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); |