mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
Add a shift parameter to celp_lp_synthesis_filter()
This is intended for reuse by the G.723.1 decoder Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
This commit is contained in:
parent
51a5ddfa01
commit
8aac5585fa
@ -58,7 +58,7 @@ void ff_celp_circ_addf(float *out, const float *in,
|
||||
int ff_celp_lp_synthesis_filter(int16_t *out, const int16_t *filter_coeffs,
|
||||
const int16_t *in, int buffer_length,
|
||||
int filter_length, int stop_on_overflow,
|
||||
int rounder)
|
||||
int shift, int rounder)
|
||||
{
|
||||
int i,n;
|
||||
|
||||
@ -67,7 +67,7 @@ int ff_celp_lp_synthesis_filter(int16_t *out, const int16_t *filter_coeffs,
|
||||
for (i = 1; i <= filter_length; i++)
|
||||
sum -= filter_coeffs[i-1] * out[n-i];
|
||||
|
||||
sum = (sum >> 12) + in[n];
|
||||
sum = ((sum >> 12) + in[n]) >> shift;
|
||||
|
||||
if (sum + 0x8000 > 0xFFFFU) {
|
||||
if (stop_on_overflow)
|
||||
|
@ -63,6 +63,7 @@ void ff_celp_circ_addf(float *out, const float *in,
|
||||
* @param filter_length filter length (10 for 10th order LP filter)
|
||||
* @param stop_on_overflow 1 - return immediately if overflow occurs
|
||||
* 0 - ignore overflows
|
||||
* @param shift the result is shifted right by this value
|
||||
* @param rounder the amount to add for rounding (usually 0x800 or 0xfff)
|
||||
*
|
||||
* @return 1 if overflow occurred, 0 - otherwise
|
||||
@ -75,7 +76,7 @@ void ff_celp_circ_addf(float *out, const float *in,
|
||||
int ff_celp_lp_synthesis_filter(int16_t *out, const int16_t *filter_coeffs,
|
||||
const int16_t *in, int buffer_length,
|
||||
int filter_length, int stop_on_overflow,
|
||||
int rounder);
|
||||
int shift, int rounder);
|
||||
|
||||
/**
|
||||
* LP synthesis filter.
|
||||
|
@ -1715,6 +1715,6 @@ void ff_subblock_synthesis(RA144Context *ractx, const uint16_t *lpc_coefs,
|
||||
LPC_ORDER*sizeof(*ractx->curr_sblock));
|
||||
|
||||
if (ff_celp_lp_synthesis_filter(ractx->curr_sblock + LPC_ORDER, lpc_coefs,
|
||||
block, BLOCKSIZE, LPC_ORDER, 1, 0xfff))
|
||||
block, BLOCKSIZE, LPC_ORDER, 1, 0, 0xfff))
|
||||
memset(ractx->curr_sblock, 0, (LPC_ORDER+BLOCKSIZE)*sizeof(*ractx->curr_sblock));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user