Mercurial > libavcodec.hg
diff acelp_filters.c @ 10057:cfb009484d2d libavcodec
Add a function that can apply an order 2 rational transfer function in-place.
This function will be used in the upcoming AMR-NB floating point decoder for
high-pass filtering.
Patch by Colin McQuillan ( m.niloc googlemail com )
author | superdump |
---|---|
date | Sat, 15 Aug 2009 11:22:55 +0000 |
parents | 05ea4942df9b |
children | 9f35b262d3f0 |
line wrap: on
line diff
--- a/acelp_filters.c Sat Aug 15 11:12:47 2009 +0000 +++ b/acelp_filters.c Sat Aug 15 11:22:55 2009 +0000 @@ -93,3 +93,20 @@ hpf_f[0] = tmp; } } + +void ff_acelp_apply_order_2_transfer_function(float *buf, + const float zero_coeffs[2], + const float pole_coeffs[2], + float gain, float mem[2], int n) +{ + int i; + float tmp; + + for (i = 0; i < n; i++) { + tmp = gain * buf[i] - pole_coeffs[0] * mem[0] - pole_coeffs[1] * mem[1]; + buf[i] = tmp + zero_coeffs[0] * mem[0] + zero_coeffs[1] * mem[1]; + + mem[1] = mem[0]; + mem[0] = tmp; + } +}