From 5e917ebb2ca44000104c10929c947c16a4fb6791 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Mon, 11 Jan 2016 15:44:42 -0800 Subject: [PATCH] Cache IIR filter state because compiler *sometimes* doesn't want to. --- firmware/baseband/dsp_iir.cpp | 33 +++++++++++++++++++-------------- firmware/baseband/dsp_iir.hpp | 2 -- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/firmware/baseband/dsp_iir.cpp b/firmware/baseband/dsp_iir.cpp index 209c43d5b..9c8655bc3 100644 --- a/firmware/baseband/dsp_iir.cpp +++ b/firmware/baseband/dsp_iir.cpp @@ -28,27 +28,32 @@ void IIRBiquadFilter::configure(const iir_biquad_config_t& new_config) { } void IIRBiquadFilter::execute(const buffer_s16_t& buffer_in, const buffer_s16_t& buffer_out) { + const auto a_ = config.a; + const auto b_ = config.b; + + auto x_ = x; + auto y_ = y; + // TODO: Assert that buffer_out.count == buffer_in.count. for(size_t i=0; i x { { 0.0f, 0.0f, 0.0f } }; std::array y { { 0.0f, 0.0f, 0.0f } }; - - float execute_sample(const float in); }; #endif/*__DSP_IIR_H__*/