Commit 76f7d9dc authored by reynaldo's avatar reynaldo

Add LP zero synthesis filter. Patch by Kenan Gillet.


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18616 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 592ec743
......@@ -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];
}
}
......@@ -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 */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment