From 7d4b890a7f8c8587b2667599eee8c83da8a9b2b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Hamal=20Dvo=C5=99=C3=A1k?= Date: Thu, 6 Jun 2024 20:59:07 +0200 Subject: [PATCH] Optimize DC removal a bit --- src/main.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index 75ed269..f93d970 100644 --- a/src/main.c +++ b/src/main.c @@ -476,8 +476,9 @@ static void rf_rx(void) int I32 = cos_neg - cos_pos; int64_t I = I32; - dcI = ((dcI << 16) - dcI + (I << 16)) >> 16; - I -= dcI >> 16; + int64_t I16 = I << 16; + dcI = ((dcI << 16) - dcI + I16) >> 16; + I = (I16 - dcI) >> 16; I *= gain; I /= max_amplitude; @@ -489,8 +490,9 @@ static void rf_rx(void) int Q32 = sin_neg - sin_pos; int64_t Q = Q32; - dcQ = ((dcQ << 16) - dcQ + (Q << 16)) >> 16; - Q -= dcQ >> 16; + int64_t Q16 = Q << 16; + dcQ = ((dcQ << 16) - dcQ + Q16) >> 16; + Q = (Q16 - dcQ) >> 16; Q *= gain; Q /= max_amplitude;