mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-12-24 11:40:31 -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
|
||||
// qint64 ms1=QDateTime::currentMSecsSinceEpoch() - m_ms0;
|
||||
// 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 ();
|
||||
}
|
||||
// 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));
|
||||
// qDebug() << "B" << m_stream->bufferSize() <<
|
||||
// m_stream->periodSize() << m_stream->notifyInterval();
|
||||
|
||||
m_stream->setCategory ("production");
|
||||
m_stream->start (source);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user