mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-25 05:38:46 -05:00
Allow for tx periods shorter than the audio buffer size
Audio will not start until at least one buffer full is achieved and as we use a large target latency of 2s to minimize CPU usage and glitches we must pad with silence when the QAudioOutput pulls buffers from the Modulator i/o device. This is all necessary with pulseaudio using the underlying o/s ALSA device, i.e. on Linux.
This commit is contained in:
parent
d9f4a27a3e
commit
9b942910e0
@ -319,6 +319,12 @@ qint64 Modulator::readData (char * data, qint64 maxSize)
|
|||||||
// done for this chunk - continue on next call
|
// done for this chunk - continue on next call
|
||||||
// qint64 ms1=QDateTime::currentMSecsSinceEpoch() - m_ms0;
|
// qint64 ms1=QDateTime::currentMSecsSinceEpoch() - m_ms0;
|
||||||
// if(m_ic>=4*144*160) qDebug() << "Modulator finished" << m_ic << 0.001*ms1;
|
// if(m_ic>=4*144*160) qDebug() << "Modulator finished" << m_ic << 0.001*ms1;
|
||||||
|
|
||||||
|
while (samples != end) // pad block with silence
|
||||||
|
{
|
||||||
|
samples = load (0, samples);
|
||||||
|
++framesGenerated;
|
||||||
|
}
|
||||||
return framesGenerated * bytesPerFrame ();
|
return framesGenerated * bytesPerFrame ();
|
||||||
}
|
}
|
||||||
// fall through
|
// fall through
|
||||||
|
@ -101,7 +101,7 @@ void SoundOutput::restart (QIODevice * source)
|
|||||||
m_stream->setBufferSize (m_stream->format().bytesForDuration((m_msBuffered ? m_msBuffered : MS_BUFFERED) * 1000));
|
m_stream->setBufferSize (m_stream->format().bytesForDuration((m_msBuffered ? m_msBuffered : MS_BUFFERED) * 1000));
|
||||||
// qDebug() << "B" << m_stream->bufferSize() <<
|
// qDebug() << "B" << m_stream->bufferSize() <<
|
||||||
// m_stream->periodSize() << m_stream->notifyInterval();
|
// m_stream->periodSize() << m_stream->notifyInterval();
|
||||||
|
m_stream->setCategory ("production");
|
||||||
m_stream->start (source);
|
m_stream->start (source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user