From a4462cfa40d1e3cc6fefaed1650cf8209f367151 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 21 Apr 2026 19:56:46 +0000 Subject: [PATCH] Document intentional signed length and FIFO truncation behavior Agent-Logs-Url: https://github.com/srcejon/sdrangel/sessions/bafbe6fb-a6ec-4ee0-92f8-caa27da815f5 Co-authored-by: srcejon <57259258+srcejon@users.noreply.github.com> --- plugins/samplesink/usrpoutput/usrpoutputthread.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/samplesink/usrpoutput/usrpoutputthread.cpp b/plugins/samplesink/usrpoutput/usrpoutputthread.cpp index e158eb4eb..1a23f8f36 100644 --- a/plugins/samplesink/usrpoutput/usrpoutputthread.cpp +++ b/plugins/samplesink/usrpoutput/usrpoutputthread.cpp @@ -123,6 +123,7 @@ void USRPOutputThread::run() // Interpolate according to specified log2 (ex: log2=4 => decim=16) void USRPOutputThread::callback(qint16* buf, qint32 len) { + // Keep signed length to match callback interfaces used by other output threads. if (len <= 0) { return; } @@ -130,6 +131,7 @@ void USRPOutputThread::callback(qint16* buf, qint32 len) const unsigned int interpolationFactor = 1U << m_log2Interp; SampleVector& data = m_sampleFifo->getData(); unsigned int iPart1Begin, iPart1End, iPart2Begin, iPart2End; + // Truncation is intentional here: reading more would overrun the fixed TX buffer when len is not divisible by interpolation factor. m_sampleFifo->read(static_cast(len)/interpolationFactor, iPart1Begin, iPart1End, iPart2Begin, iPart2End); if (iPart1Begin != iPart1End) {