From 173b0a998d63295344cc02fb79cd26b97a431fa7 Mon Sep 17 00:00:00 2001 From: Miguel Freitas Date: Wed, 11 Dec 2002 16:22:05 +0000 Subject: fix interpolation bounds. previously it could cause buffer overrun (and segfault) if out_samples were bigger than 2*in_samples. CVS patchset: 3483 CVS date: 2002/12/11 16:22:05 --- src/xine-engine/resample.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/xine-engine/resample.c b/src/xine-engine/resample.c index 6ae8d7b25..d7f0dec90 100644 --- a/src/xine-engine/resample.c +++ b/src/xine-engine/resample.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: resample.c,v 1.4 2002/10/23 17:12:34 guenter Exp $ + * $Id: resample.c,v 1.5 2002/12/11 16:22:05 miguelfreitas Exp $ */ #ifdef HAVE_CONFIG_H @@ -34,7 +34,7 @@ void audio_out_resample_mono(int16_t* input_samples, uint32_t in_samples, int osample; /* 16+16 fixed point math */ uint32_t isample = 0; - uint32_t istep = (in_samples << 16)/out_samples; + uint32_t istep = ((in_samples-2) << 16)/(out_samples-2); #ifdef VERBOSE printf ("Audio : resample %d samples to %d\n", @@ -65,7 +65,7 @@ void audio_out_resample_stereo(int16_t* input_samples, uint32_t in_samples, int osample; /* 16+16 fixed point math */ uint32_t isample = 0; - uint32_t istep = (in_samples << 16)/out_samples; + uint32_t istep = ((in_samples-2) << 16)/(out_samples-2); #ifdef VERBOSE printf ("Audio : resample %d samples to %d\n", @@ -103,7 +103,7 @@ void audio_out_resample_4channel(int16_t* input_samples, uint32_t in_samples, int osample; /* 16+16 fixed point math */ uint32_t isample = 0; - uint32_t istep = (in_samples << 16)/out_samples; + uint32_t istep = ((in_samples-2) << 16)/(out_samples-2); #ifdef VERBOSE printf ("Audio : resample %d samples to %d\n", @@ -157,7 +157,7 @@ void audio_out_resample_5channel(int16_t* input_samples, uint32_t in_samples, int osample; /* 16+16 fixed point math */ uint32_t isample = 0; - uint32_t istep = (in_samples << 16)/out_samples; + uint32_t istep = ((in_samples-2) << 16)/(out_samples-2); #ifdef VERBOSE printf ("Audio : resample %d samples to %d\n", @@ -218,7 +218,7 @@ void audio_out_resample_6channel(int16_t* input_samples, uint32_t in_samples, int osample; /* 16+16 fixed point math */ uint32_t isample = 0; - uint32_t istep = (in_samples << 16)/out_samples; + uint32_t istep = ((in_samples-2) << 16)/(out_samples-2); #ifdef VERBOSE printf ("Audio : resample %d samples to %d\n", -- cgit v1.2.3