aboutsummaryrefslogtreecommitdiffstats
path: root/src/output
diff options
context:
space:
mode:
Diffstat (limited to 'src/output')
-rw-r--r--src/output/SDR.cpp13
-rw-r--r--src/output/SDRDevice.h2
2 files changed, 10 insertions, 5 deletions
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;