diff --git a/audio/drivers_resampler/sinc.c b/audio/drivers_resampler/sinc.c index 8f157700dc..87c54ec47d 100644 --- a/audio/drivers_resampler/sinc.c +++ b/audio/drivers_resampler/sinc.c @@ -118,9 +118,9 @@ typedef struct rarch_sinc_resampler } rarch_sinc_resampler_t; #if defined(SINC_WINDOW_LANCZOS) -#define window_function(idx) (sinc(M_PI * (idx))) +#define window_function(idx) (lanzcos_window_function(idx)) #elif defined(SINC_WINDOW_KAISER) -#define window_function(idx) (besseli0(SINC_WINDOW_KAISER_BETA * sqrt(1 - (idx) * (idx)))) +#define window_function(idx) (kaiser_window_function(idx, SINC_WINDOW_KAISER_BETA)) #else #error "No SINC window function defined." #endif diff --git a/libretro-common/include/filters.h b/libretro-common/include/filters.h index 2933180bfe..499e14dcc1 100644 --- a/libretro-common/include/filters.h +++ b/libretro-common/include/filters.h @@ -60,4 +60,14 @@ static INLINE double besseli0(double x) return sum; } +static INLINE double kaiser_window_function(double index, double beta) +{ + return besseli0(beta * sqrtf(1 - index * index)); +} + +static INLINE double lanzcos_window_function(double index) +{ + return sinc(M_PI * index); +} + #endif