# HG changeset patch # User rbultje # Date 1271871832 0 # Node ID 26aabf52f578ac777fc4fd0d84f4837b504565b2 # Parent a69e24b73f3c285cd42048d04bba39c34bb6c2c1 Split the input/output data arguments to ff_adaptive_gain_control(). diff -r a69e24b73f3c -r 26aabf52f578 acelp_vectors.c --- a/acelp_vectors.c Wed Apr 21 13:19:00 2010 +0000 +++ b/acelp_vectors.c Wed Apr 21 17:43:52 2010 +0000 @@ -207,11 +207,11 @@ + weight_coeff_b * in_b[i]; } -void ff_adaptive_gain_control(float *buf_out, float speech_energ, +void ff_adaptive_gain_control(float *out, const float *in, float speech_energ, int size, float alpha, float *gain_mem) { int i; - float postfilter_energ = ff_dot_productf(buf_out, buf_out, size); + float postfilter_energ = ff_dot_productf(in, in, size); float gain_scale_factor = 1.0; float mem = *gain_mem; @@ -222,7 +222,7 @@ for (i = 0; i < size; i++) { mem = alpha * mem + gain_scale_factor; - buf_out[i] *= mem; + out[i] = in[i] * mem; } *gain_mem = mem; diff -r a69e24b73f3c -r 26aabf52f578 acelp_vectors.h --- a/acelp_vectors.h Wed Apr 21 13:19:00 2010 +0000 +++ b/acelp_vectors.h Wed Apr 21 17:43:52 2010 +0000 @@ -214,13 +214,14 @@ /** * Adaptive gain control (as used in AMR postfiltering) * - * @param buf_out the input speech buffer + * @param out output buffer for filtered speech data + * @param in the input speech buffer (may be the same as out) * @param speech_energ input energy * @param size the input buffer size * @param alpha exponential filter factor * @param gain_mem a pointer to the filter memory (single float of size) */ -void ff_adaptive_gain_control(float *buf_out, float speech_energ, +void ff_adaptive_gain_control(float *out, const float *in, float speech_energ, int size, float alpha, float *gain_mem); /** diff -r a69e24b73f3c -r 26aabf52f578 amrnbdec.c --- a/amrnbdec.c Wed Apr 21 13:19:00 2010 +0000 +++ b/amrnbdec.c Wed Apr 21 17:43:52 2010 +0000 @@ -943,7 +943,7 @@ ff_tilt_compensation(&p->tilt_mem, tilt_factor(lpc_n, lpc_d), buf_out, AMR_SUBFRAME_SIZE); - ff_adaptive_gain_control(buf_out, speech_gain, AMR_SUBFRAME_SIZE, + ff_adaptive_gain_control(buf_out, buf_out, speech_gain, AMR_SUBFRAME_SIZE, AMR_AGC_ALPHA, &p->postfilter_agc); } diff -r a69e24b73f3c -r 26aabf52f578 sipr.c --- a/sipr.c Wed Apr 21 13:19:00 2010 +0000 +++ b/sipr.c Wed Apr 21 17:43:52 2010 +0000 @@ -479,7 +479,8 @@ float energy = ff_dot_productf(ctx->postfilter_syn5k0 + LP_FILTER_ORDER + i*SUBFR_SIZE, ctx->postfilter_syn5k0 + LP_FILTER_ORDER + i*SUBFR_SIZE, SUBFR_SIZE); - ff_adaptive_gain_control(&synth[i * SUBFR_SIZE], energy, + ff_adaptive_gain_control(&synth[i * SUBFR_SIZE], + &synth[i * SUBFR_SIZE], energy, SUBFR_SIZE, 0.9, &ctx->postfilter_agc); }