From d4d6ae16033097462c8336868eb4acfa617acd6c Mon Sep 17 00:00:00 2001 From: Colin McQuillan Date: Wed, 12 Aug 2009 19:54:28 +0000 Subject: Add ff_celp_circ_addf() function to be used for sparse vector circular convolution in the upcoming AMR-NB floating point decoder. The function scales and adds a vector, that is lagged by some offset, to another vector with the same number of elements. Patch by Colin McQuillan ( m.niloc googlemail com ) Originally committed as revision 19634 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/celp_filters.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'libavcodec/celp_filters.h') diff --git a/libavcodec/celp_filters.h b/libavcodec/celp_filters.h index ccdffe8483..d9db95d454 100644 --- a/libavcodec/celp_filters.h +++ b/libavcodec/celp_filters.h @@ -41,6 +41,21 @@ void ff_celp_convolve_circ(int16_t* fc_out, const int16_t* filter, int len); +/** + * Add an array to a rotated array. + * + * out[k] = in[k] + fac * lagged[k-lag] with wrap-around + * + * @param out result vector + * @param in samples to be added unfiltered + * @param lagged samples to be rotated, multiplied and added + * @param lag lagged vector delay in the range [0, n] + * @param fac scalefactor for lagged samples + * @param n number of samples + */ +void ff_celp_circ_addf(float *out, const float *in, + const float *lagged, int lag, float fac, int n); + /** * LP synthesis filter. * @param out [out] pointer to output buffer -- cgit v1.2.3