From 208dc23fd7f2a3e5a8a9e87df203ac5a91f303ee Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Mon, 1 Dec 2025 17:15:28 +0100 Subject: Add input.backpressure_input configuration option --- src/output/SDR.cpp | 13 +++++++++---- src/output/SDRDevice.h | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src/output') diff --git a/src/output/SDR.cpp b/src/output/SDR.cpp index 22398c7..7d5a609 100644 --- a/src/output/SDR.cpp +++ b/src/output/SDR.cpp @@ -188,10 +188,15 @@ meta_vec_t SDR::process_metadata(const meta_vec_t& metadataIn) const auto max_size = m_config.enableSync ? FRAMES_MAX_SIZE_SYNC : FRAMES_MAX_SIZE_UNSYNC; - auto r = m_queue.push_overflow(std::move(frame), max_size); - etiLog.log(trace, "SDR,push %d %zu", r.overflowed, r.new_size); - - num_queue_overflows += r.overflowed ? 1 : 0; + if (m_config.blockingQueue) { + const auto new_size = m_queue.push_wait_if_full(std::move(frame), max_size); + etiLog.log(trace, "SDR,push 0 %zu", new_size); + } + else { + const auto r = m_queue.push_overflow(std::move(frame), max_size); + etiLog.log(trace, "SDR,push %d %zu", r.overflowed, r.new_size); + num_queue_overflows += r.overflowed ? 1 : 0; + } } } else { diff --git a/src/output/SDRDevice.h b/src/output/SDRDevice.h index ec9373d..c466285 100644 --- a/src/output/SDRDevice.h +++ b/src/output/SDRDevice.h @@ -58,7 +58,7 @@ struct SDRDeviceConfig { std::string rx_antenna; bool fixedPoint = false; - + bool blockingQueue = false; long masterClockRate = 32768000; unsigned sampleRate = 2048000; double frequency = 0.0; -- cgit v1.2.3