diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/nsutil/iir.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/nsutil/iir.cpp')
-rw-r--r-- | Src/nsutil/iir.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Src/nsutil/iir.cpp b/Src/nsutil/iir.cpp new file mode 100644 index 00000000..118684e5 --- /dev/null +++ b/Src/nsutil/iir.cpp @@ -0,0 +1,70 @@ +#include "iir.h" +#include <ippi.h> +#include <ipps.h> +#include <ippcc.h> + +/* 32 bit floating point */ +int nsutil_iir_Create_F32(const float *coefficients, int order, nsutil_iir_t *out_iir) +{ + IppsIIRState_32f *state; + ippsIIRInitAlloc_32f(&state, coefficients, order, 0); + *out_iir = state; + return 0; +} + +int nsutil_iir_Filter_F32_IP(nsutil_iir_t *iir, float *samples, int num_samples) +{ + ippsIIR_32f_I(samples, num_samples, (IppsIIRState_32f *)iir); + return 0; +} + +int nsutil_iir_Filter_F32(nsutil_iir_t *iir, const float *input, float *output, int num_samples) +{ + ippsIIR_32f(input, output, num_samples, (IppsIIRState_32f *)iir); + return 0; +} + +int nsutil_iir_Reset_F32(nsutil_iir_t *iir) +{ + ippsIIRSetDlyLine_32f((IppsIIRState_32f *)iir, 0); + return 0; +} + +int nsutil_iir_Destroy_F32(nsutil_iir_t *iir) +{ + ippsIIRFree_32f((IppsIIRState_32f *)iir); + return 0; +} + +/* 64 bit floating point */ +int nsutil_iir_Create_F64(const double *coefficients, int order, nsutil_iir_t *out_iir) +{ + IppsIIRState_64f *state; + ippsIIRInitAlloc_64f(&state, coefficients, order, 0); + *out_iir = state; + return 0; +} + +int nsutil_iir_Filter_F64_IP(nsutil_iir_t *iir, double *samples, int num_samples) +{ + ippsIIR_64f_I(samples, num_samples, (IppsIIRState_64f *)iir); + return 0; +} + +int nsutil_iir_Filter_642(nsutil_iir_t *iir, const double *input, double *output, int num_samples) +{ + ippsIIR_64f(input, output, num_samples, (IppsIIRState_64f *)iir); + return 0; +} + +int nsutil_iir_Reset_F64(nsutil_iir_t *iir) +{ + ippsIIRSetDlyLine_64f((IppsIIRState_64f *)iir, 0); + return 0; +} + +int nsutil_iir_Destroy_F64(nsutil_iir_t *iir) +{ + ippsIIRFree_64f((IppsIIRState_64f *)iir); + return 0; +} |