[FFmpeg-devel] [PATCH 1/5] Add a shift parameter to celp_lp_synthesis_filter for reuse by the G.723.1 decoder
banan at ludd.ltu.se
banan at ludd.ltu.se
Thu Mar 17 23:56:47 CET 2011
From: Mohamed Naufal Basheer <naufal11 at gmail.com>
---
libavcodec/celp_filters.c | 4 ++--
libavcodec/celp_filters.h | 3 ++-
libavcodec/ra144.c | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/libavcodec/celp_filters.c b/libavcodec/celp_filters.c
index 26a62ee..f9e65f4 100644
--- a/libavcodec/celp_filters.c
+++ b/libavcodec/celp_filters.c
@@ -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)
diff --git a/libavcodec/celp_filters.h b/libavcodec/celp_filters.h
index 145e3d3..e7eb02a 100644
--- a/libavcodec/celp_filters.h
+++ b/libavcodec/celp_filters.h
@@ -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.
diff --git a/libavcodec/ra144.c b/libavcodec/ra144.c
index 9baa068..3f1e6f7 100644
--- a/libavcodec/ra144.c
+++ b/libavcodec/ra144.c
@@ -1715,6 +1715,6 @@ void ff_subblock_synthesis(RA144Context *ractx, const uint16_t *lpc_coefs,
10*sizeof(*ractx->curr_sblock));
if (ff_celp_lp_synthesis_filter(ractx->curr_sblock + 10, lpc_coefs,
- block, BLOCKSIZE, 10, 1, 0xfff))
+ block, BLOCKSIZE, 10, 1, 0, 0xfff))
memset(ractx->curr_sblock, 0, 50*sizeof(*ractx->curr_sblock));
}
--
1.7.1
More information about the ffmpeg-devel
mailing list