From 11bb2eb00305f934596e6f26b304b48535bf6356 Mon Sep 17 00:00:00 2001 From: Vitor Sessak Date: Thu, 5 Jun 2008 16:11:51 +0000 Subject: [PATCH] Split function rms() in two (it does two unrelated things) Originally committed as revision 13663 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/ra144.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/libavcodec/ra144.c b/libavcodec/ra144.c index ac5caa514..5ddbaaeb1 100644 --- a/libavcodec/ra144.c +++ b/libavcodec/ra144.c @@ -174,7 +174,12 @@ static void final(const int16_t *i1, const int16_t *i2, memcpy(statbuf, work + 40, 20); } -static unsigned int rms(const int *data, int f) +static unsigned int rescale_rms(int rms, int energy) +{ + return (rms * energy) >> 10; +} + +static unsigned int rms(const int *data) { int x; unsigned int res = 0x10000; @@ -197,7 +202,6 @@ static unsigned int rms(const int *data, int f) res = t_sqrt(res); res >>= (b + 10); - res = (res * f) >> 10; return res; } @@ -314,13 +318,13 @@ static int interp(RA144Context *ractx, int16_t *decsp, int block_num, // coefficients if (copynew) { int_to_int16(decsp, ractx->lpc_coef); - return rms(ractx->lpc_refl, energy); + return rescale_rms(rms(ractx->lpc_refl), energy); } else { int_to_int16(decsp, ractx->lpc_coef_old); - return rms(ractx->lpc_refl_old, energy); + return rescale_rms(rms(ractx->lpc_refl_old), energy); } } else { - return rms(work, energy); + return rescale_rms(rms(work), energy); } } @@ -358,7 +362,7 @@ static int ra144_decode_frame(AVCodecContext * avctx, refl_rms[1] = interp(ractx, block_coefs[1], 1, energy > ractx->old_energy, t_sqrt(energy*ractx->old_energy) >> 12); refl_rms[2] = interp(ractx, block_coefs[2], 2, 1, energy); - refl_rms[3] = rms(ractx->lpc_refl, energy); + refl_rms[3] = rescale_rms(rms(ractx->lpc_refl), energy); int_to_int16(block_coefs[3], ractx->lpc_coef); -- 2.11.0