From d1bf60771c411668c5b8c80a73538a312151fd24 Mon Sep 17 00:00:00 2001 From: Kenan Gillet <kenan.gillet@gmail.com> Date: Sat, 18 Apr 2009 22:53:37 +0000 Subject: [PATCH] Add LP zero synthesis filter. Patch by Kenan Gillet. Originally committed as revision 18616 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/celp_filters.c | 20 ++++++++++++++++++++ libavcodec/celp_filters.h | 22 ++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/libavcodec/celp_filters.c b/libavcodec/celp_filters.c index 2a6b0670b49..b2094a164a6 100644 --- a/libavcodec/celp_filters.c +++ b/libavcodec/celp_filters.c @@ -103,3 +103,23 @@ void ff_celp_lp_synthesis_filterf( out[n] -= filter_coeffs[i-1] * out[n-i]; } } + +void ff_celp_lp_zero_synthesis_filterf( + float *out, + const float* filter_coeffs, + const float* in, + int buffer_length, + int filter_length) +{ + int i,n; + + // Avoids a +1 in the inner loop. + filter_length++; + + for(n=0; n<buffer_length; n++) + { + out[n] = in[n]; + for(i=1; i<filter_length; i++) + out[n] -= filter_coeffs[i-1] * in[n-i]; + } +} diff --git a/libavcodec/celp_filters.h b/libavcodec/celp_filters.h index d33aafd229c..4a9eb1c49b1 100644 --- a/libavcodec/celp_filters.h +++ b/libavcodec/celp_filters.h @@ -91,4 +91,26 @@ void ff_celp_lp_synthesis_filterf( int buffer_length, int filter_length); +/** + * LP zero synthesis filter. + * @param out [out] pointer to output buffer + * @param filter_coeffs filter coefficients. + * @param in input signal + * - the array in[-filter_length, -1] must + * contain the previous input of this filter + * @param buffer_length amount of data to process + * @param filter_length filter length (10 for 10th order LP filter) + * + * @note Output buffer must contain filter_length samples of past + * speech data before pointer. + * + * Routine applies A(z) filter to given speech data. + */ +void ff_celp_lp_zero_synthesis_filterf( + float *out, + const float* filter_coeffs, + const float* in, + int buffer_length, + int filter_length); + #endif /* AVCODEC_CELP_FILTERS_H */ -- GitLab