From 7f9761afb694116b33d21a012502c5895cd6d10f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 13 Sep 2015 03:43:59 +0200 Subject: [PATCH] Create kaiser_window_function/lanzcos_window_function --- audio/drivers_resampler/sinc.c | 4 ++-- libretro-common/include/filters.h | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) 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