diff options
-rw-r--r-- | src/plugins/qnx-audio/audio/qnxaudiooutput.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/plugins/qnx-audio/audio/qnxaudiooutput.cpp b/src/plugins/qnx-audio/audio/qnxaudiooutput.cpp index d5805c2bd..5cfffe990 100644 --- a/src/plugins/qnx-audio/audio/qnxaudiooutput.cpp +++ b/src/plugins/qnx-audio/audio/qnxaudiooutput.cpp @@ -223,7 +223,10 @@ void QnxAudioOutput::pullData() if (frames == 0 || bytesAvailable < periodSize()) return; - const int bytesRequested = m_format.bytesForFrames(frames); + // The buffer is placed on the stack so no more than 64K or 1 frame + // whichever is larger. + const int maxFrames = qMax(m_format.framesForBytes(64 * 1024), 1); + const int bytesRequested = m_format.bytesForFrames(qMin(frames, maxFrames)); char buffer[bytesRequested]; const int bytesRead = m_source->read(buffer, bytesRequested); |