From 4dc43e9997e79e44b62adeeecd6bb92debee0ae0 Mon Sep 17 00:00:00 2001 From: juliasat <58359447+juliasatt@users.noreply.github.com> Date: Sat, 17 May 2025 13:27:09 -0300 Subject: [PATCH] freq_shift back to simple and now working without perf. issues --- src-core/dsp/utils/freq_shift.cpp | 26 ++++---------------------- src-core/dsp/utils/freq_shift.h | 8 ++++---- 2 files changed, 8 insertions(+), 26 deletions(-) diff --git a/src-core/dsp/utils/freq_shift.cpp b/src-core/dsp/utils/freq_shift.cpp index 3014f07b8..9f1f1687c 100644 --- a/src-core/dsp/utils/freq_shift.cpp +++ b/src-core/dsp/utils/freq_shift.cpp @@ -4,22 +4,12 @@ namespace satdump { namespace ndsp { - FreqShiftBlock::FreqShiftBlock() : Block("freq_shift_cc", {{"in", DSP_SAMPLE_TYPE_CF32}}, {{"out", DSP_SAMPLE_TYPE_CF32}}) {} + FreqShiftBlock::FreqShiftBlock() : BlockSimple("freq_shift_cc", {{"in", DSP_SAMPLE_TYPE_CF32}}, {{"out", DSP_SAMPLE_TYPE_CF32}}) {} FreqShiftBlock::~FreqShiftBlock() {} - bool FreqShiftBlock::work() + uint32_t FreqShiftBlock::process(complex_t *input, uint32_t nsamples, complex_t *output) { - DSPBuffer iblk; - inputs[0].fifo->wait_dequeue(iblk); - - if (iblk.isTerminator()) - { - if (iblk.terminatorShouldPropagate()) - outputs[0].fifo->wait_enqueue(DSPBuffer::newBufferTerminator()); - iblk.free(); - return true; - } if (needs_reinit) { @@ -27,17 +17,9 @@ namespace satdump init(); } - auto oblk = DSPBuffer::newBufferSamples(iblk.max_size); - complex_t *ibuf = iblk.getSamples(); - complex_t *obuf = oblk.getSamples(); + volk_32fc_s32fc_x2_rotator2_32fc((lv_32fc_t *)output, (const lv_32fc_t *)input, (lv_32fc_t *)&phase_delta, (lv_32fc_t *)&phase, nsamples); - volk_32fc_s32fc_x2_rotator2_32fc((lv_32fc_t *)obuf, (const lv_32fc_t *)ibuf, (lv_32fc_t *)&phase_delta, (lv_32fc_t *)&phase, iblk.size); - - oblk.size = iblk.size; - outputs[0].fifo->wait_enqueue(oblk); - iblk.free(); - - return false; + return nsamples; } } // namespace ndsp diff --git a/src-core/dsp/utils/freq_shift.h b/src-core/dsp/utils/freq_shift.h index 770ba8fd2..8a15580ac 100644 --- a/src-core/dsp/utils/freq_shift.h +++ b/src-core/dsp/utils/freq_shift.h @@ -5,7 +5,7 @@ */ #include "common/dsp/complex.h" -#include "dsp/block.h" +#include "dsp/block_simple.h" namespace satdump { @@ -22,7 +22,7 @@ namespace satdump * @param freq_shift frequency shift value * @param samplerate stream sample rate */ - class FreqShiftBlock : public Block + class FreqShiftBlock : public BlockSimple { private: bool needs_reinit = false; @@ -34,12 +34,12 @@ namespace satdump complex_t phase_delta; complex_t phase; - bool work(); - public: FreqShiftBlock(); ~FreqShiftBlock(); + uint32_t process(complex_t *input, uint32_t nsamples, complex_t *output); + void init() { if (raw_shift == false)