summaryrefslogtreecommitdiff
path: root/libavcodec/binkaudio.c
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2012-09-17 16:13:24 -0400
committerJustin Ruggles <justin.ruggles@gmail.com>2012-09-18 09:26:56 -0400
commit0801b5979b118f0f47443e4561d0fa977695d263 (patch)
tree05a3224e9d7611220b5455bdf684add38db56498 /libavcodec/binkaudio.c
parent6a08955c104450dfc8f56aa9f552a4c08f8d8f7f (diff)
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.c8
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);