1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-05-14 13:22:16 -04:00

Optimize USRP TX tail zeroing for partial interpolation fills

Agent-Logs-Url: https://github.com/srcejon/sdrangel/sessions/bafbe6fb-a6ec-4ee0-92f8-caa27da815f5

Co-authored-by: srcejon <57259258+srcejon@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-04-21 19:55:46 +00:00 committed by GitHub
parent 788673891d
commit 98fbb5ae28
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -123,10 +123,6 @@ void USRPOutputThread::run()
// Interpolate according to specified log2 (ex: log2=4 => decim=16)
void USRPOutputThread::callback(qint16* buf, qint32 len)
{
// Fill any sample tail not overwritten by interpolation (for non power-of-two streamer block sizes)
// so stale data is never transmitted.
std::fill(buf, buf + (2 * len), 0);
SampleVector& data = m_sampleFifo->getData();
unsigned int iPart1Begin, iPart1End, iPart2Begin, iPart2End;
m_sampleFifo->read(len/(1<<m_log2Interp), iPart1Begin, iPart1End, iPart2Begin, iPart2End);
@ -140,6 +136,14 @@ void USRPOutputThread::callback(qint16* buf, qint32 len)
if (iPart2Begin != iPart2End) {
callbackPart(buf + 2*shift, data, iPart2Begin, iPart2End);
}
const unsigned int writtenSamples =
((iPart1End - iPart1Begin) + (iPart2End - iPart2Begin)) * (1U << m_log2Interp);
if (writtenSamples < static_cast<unsigned int>(len))
{
std::fill(buf + 2*writtenSamples, buf + 2*len, 0);
}
}
void USRPOutputThread::callbackPart(qint16* buf, SampleVector& data, unsigned int iBegin, unsigned int iEnd)