From 3e8297a912f89a3c42af0845b83a209a6cd13c55 Mon Sep 17 00:00:00 2001 From: Xerbo Date: Sat, 24 Sep 2022 16:11:37 +0100 Subject: [PATCH] Fix MSVC build #20 --- src/dsp.c | 13 ++++++------- src/filter.c | 6 +++++- src/filter.h | 12 +++++++++--- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/dsp.c b/src/dsp.c index 47afe64..62ff148 100755 --- a/src/dsp.c +++ b/src/dsp.c @@ -26,12 +26,6 @@ #include "taps.h" #include "util.h" -#ifdef _MSC_VER -typedef _Fcomplex complexf_t; -#else -typedef complex float complexf_t; -#endif - // Block sizes #define BLKAMP 32768 #define BLKIN 32768 @@ -69,8 +63,13 @@ static float pll(complexf_t in) { static float oscillator_phase = 0.0; // Internal oscillator +#ifdef _MSC_VER + complexf_t osc = _FCbuild(cos(oscillator_phase), -sin(oscillator_phase)); + in = _FCmulcc(in, osc); +#else complexf_t osc = cos(oscillator_phase) + -sin(oscillator_phase)*I; - in *= osc; + in *= osc; +#endif // Error detector float error = cargf(in); diff --git a/src/filter.c b/src/filter.c index fac6e40..e3adcb3 100755 --- a/src/filter.c +++ b/src/filter.c @@ -29,7 +29,7 @@ float convolve(const float *in, const float *taps, size_t len) { return sum; } -float complex hilbert_transform(const float *in, const float *taps, size_t len) { +complexf_t hilbert_transform(const float *in, const float *taps, size_t len) { float i = 0.0; float q = 0.0; @@ -39,7 +39,11 @@ float complex hilbert_transform(const float *in, const float *taps, size_t len) } i = in[len-1] - (i / len); +#ifdef _MSC_VER + return _FCbuild(i, q); +#else return i + q*I; +#endif } float interpolating_convolve(const float *in, const float *taps, size_t len, float offset, float delta) { diff --git a/src/filter.h b/src/filter.h index 7ff0b61..6c290f0 100755 --- a/src/filter.h +++ b/src/filter.h @@ -19,6 +19,12 @@ #include #include -float convolve(const float *in, const float *taps, size_t len); -float complex hilbert_transform(const float *in, const float *taps, size_t len); -float interpolating_convolve(const float *in, const float *taps, size_t len, float offset, float delta); +#ifdef _MSC_VER +typedef _Fcomplex complexf_t; +#else +typedef complex float complexf_t; +#endif + +float convolve(const float *in, const float *taps, size_t len); +complexf_t hilbert_transform(const float *in, const float *taps, size_t len); +float interpolating_convolve(const float *in, const float *taps, size_t len, float offset, float delta);