Mercurial > libavcodec.hg
changeset 11647:26aabf52f578 libavcodec
Split the input/output data arguments to ff_adaptive_gain_control().
author | rbultje |
---|---|
date | Wed, 21 Apr 2010 17:43:52 +0000 |
parents | a69e24b73f3c |
children | 0516f4062307 |
files | acelp_vectors.c acelp_vectors.h amrnbdec.c sipr.c |
diffstat | 4 files changed, 9 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- 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;
--- 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); /**
--- 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); }
--- 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); }