mirror of https://git.ffmpeg.org/ffmpeg.git
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
This commit is contained in:
parent
51fdb6f08d
commit
d4d6ae1603
|
@ -47,6 +47,16 @@ void ff_celp_convolve_circ(int16_t* fc_out,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ff_celp_circ_addf(float *out, const float *in,
|
||||||
|
const float *lagged, int lag, float fac, int n)
|
||||||
|
{
|
||||||
|
int k;
|
||||||
|
for (k = 0; k < lag; k++)
|
||||||
|
out[k] = in[k] + fac * lagged[n + k - lag];
|
||||||
|
for (; k < n; k++)
|
||||||
|
out[k] = in[k] + fac * lagged[ k - lag];
|
||||||
|
}
|
||||||
|
|
||||||
int ff_celp_lp_synthesis_filter(int16_t *out,
|
int ff_celp_lp_synthesis_filter(int16_t *out,
|
||||||
const int16_t* filter_coeffs,
|
const int16_t* filter_coeffs,
|
||||||
const int16_t* in,
|
const int16_t* in,
|
||||||
|
|
|
@ -41,6 +41,21 @@ void ff_celp_convolve_circ(int16_t* fc_out,
|
||||||
const int16_t* filter,
|
const int16_t* filter,
|
||||||
int len);
|
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.
|
* LP synthesis filter.
|
||||||
* @param out [out] pointer to output buffer
|
* @param out [out] pointer to output buffer
|
||||||
|
|
Loading…
Reference in New Issue