From: RĂ©mi Denis-Courmont Date: Wed, 30 Sep 2009 19:57:15 +0000 (+0300) Subject: linear resampler: fixed-point support (disabled) X-Git-Tag: 1.1.0-ff~3102 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=f521d69de0256935a29f5ea465e303b683768c37;p=vlc linear resampler: fixed-point support (disabled) --- diff --git a/modules/audio_filter/resampler/linear.c b/modules/audio_filter/resampler/linear.c index 81ee15f6b2..8262ce8025 100644 --- a/modules/audio_filter/resampler/linear.c +++ b/modules/audio_filter/resampler/linear.c @@ -35,6 +35,7 @@ #include #include #include +#include /***************************************************************************** * Local prototypes @@ -43,7 +44,13 @@ static int OpenFilter ( vlc_object_t * ); static void CloseFilter( vlc_object_t * ); static block_t *Resample( filter_t *, block_t * ); +#if 1 typedef float sample_t; +# define VLC_CODEC_NATIVE VLC_CODEC_FL32 +#else +typedef int32_t sample_t; +# define VLC_CODEC_NATIVE VLC_CODEC_FI32 +#endif /***************************************************************************** * Local structures @@ -130,7 +137,11 @@ static block_t *Resample( filter_t *p_filter, block_t *p_in_buf ) for( unsigned i = 0; i < i_nb_channels ; i++ ) { p_out[i] = p_prev_sample[i]; +#if CPU_CAPABILITY_FPU p_out[i] += (p_in[i] - p_prev_sample[i]) +#else + p_out[i] += (int64_t)(p_in[i] - p_prev_sample[i]) +#endif * p_sys->i_remainder / p_filter->fmt_out.audio.i_rate; } p_out += i_nb_channels; @@ -149,7 +160,11 @@ static block_t *Resample( filter_t *p_filter, block_t *p_in_buf ) for( unsigned i = 0; i < i_nb_channels ; i++ ) { p_out[i] = p_in[i]; +#if CPU_CAPABILITY_FPU p_out[i] += (p_in[i + i_nb_channels] - p_in[i]) +#else + p_out[i] += (int64_t)(p_in[i + i_nb_channels] - p_in[i]) +#endif * p_sys->i_remainder / p_filter->fmt_out.audio.i_rate; } p_out += i_nb_channels; @@ -194,7 +209,7 @@ static int OpenFilter( vlc_object_t *p_this ) int i_out_rate = p_filter->fmt_out.audio.i_rate; if( p_filter->fmt_in.audio.i_rate == p_filter->fmt_out.audio.i_rate || - p_filter->fmt_in.i_codec != VLC_CODEC_FL32 ) + p_filter->fmt_in.i_codec != VLC_CODEC_NATIVE ) { return VLC_EGENERIC; }