mirror of https://git.ffmpeg.org/ffmpeg.git
Add a LPC filter
Part of the QCELP patch by Kenan Gillet, kenan.gillet gmail com Originally committed as revision 15754 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
0bc484ad51
commit
1fb0d4b8a6
|
@ -84,3 +84,24 @@ int ff_celp_lp_synthesis_filter(
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ff_celp_lp_synthesis_filterf(
|
||||||
|
float *out,
|
||||||
|
const float* filter_coeffs,
|
||||||
|
const float* in,
|
||||||
|
int buffer_length,
|
||||||
|
int filter_length)
|
||||||
|
{
|
||||||
|
int i,n;
|
||||||
|
|
||||||
|
// These two lines are to avoid a -1 subtraction in the main loop
|
||||||
|
filter_length++;
|
||||||
|
filter_coeffs--;
|
||||||
|
|
||||||
|
for(n=0; n<buffer_length; n++)
|
||||||
|
{
|
||||||
|
out[n] = in[n];
|
||||||
|
for(i=1; i<filter_length; i++)
|
||||||
|
out[n] += filter_coeffs[i] * out[n-i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -69,4 +69,28 @@ int ff_celp_lp_synthesis_filter(
|
||||||
int stop_on_overflow,
|
int stop_on_overflow,
|
||||||
int rounder);
|
int rounder);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LP synthesis filter.
|
||||||
|
* @param out [out] pointer to output buffer
|
||||||
|
* - the array out[-filter_length, -1] must
|
||||||
|
* contain the previous result of this filter
|
||||||
|
* @param filter_coeffs filter coefficients.
|
||||||
|
* @param in input signal
|
||||||
|
* @param buffer_length amount of data to process
|
||||||
|
* @param filter_length filter length (10 for 10th order LP filter)
|
||||||
|
*
|
||||||
|
* @return 1 if overflow occurred, 0 - otherwise
|
||||||
|
*
|
||||||
|
* @note Output buffer must contain 10 samples of past
|
||||||
|
* speech data before pointer.
|
||||||
|
*
|
||||||
|
* Routine applies 1/A(z) filter to given speech data.
|
||||||
|
*/
|
||||||
|
void ff_celp_lp_synthesis_filterf(
|
||||||
|
float *out,
|
||||||
|
const float* filter_coeffs,
|
||||||
|
const float* in,
|
||||||
|
int buffer_length,
|
||||||
|
int filter_length);
|
||||||
|
|
||||||
#endif /* AVCODEC_CELP_FILTERS_H */
|
#endif /* AVCODEC_CELP_FILTERS_H */
|
||||||
|
|
Loading…
Reference in New Issue