From 0bcc13aec96c19e84cf0632a8b85218a213c8d22 Mon Sep 17 00:00:00 2001 From: wangyix Date: Mon, 21 Jul 2014 17:12:03 -0700 Subject: [PATCH] made Audio always push a whole number of frames to the audio output --- interface/src/Audio.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/interface/src/Audio.cpp b/interface/src/Audio.cpp index e5e71b8dcb..478c0d0c55 100644 --- a/interface/src/Audio.cpp +++ b/interface/src/Audio.cpp @@ -977,8 +977,9 @@ void Audio::processReceivedAudio(const QByteArray& audioByteArray) { if (Menu::getInstance()->isOptionChecked(MenuOption::DisableQAudioOutputOverflowCheck)) { numNetworkOutputSamples = _ringBuffer.samplesAvailable(); } else { - int numSamplesAudioOutputRoomFor = _audioOutput->bytesFree() / sizeof(int16_t); - numNetworkOutputSamples = std::min(_ringBuffer.samplesAvailable(), (int)(numSamplesAudioOutputRoomFor * networkOutputToOutputRatio)); + // make sure to push a whole number of frames to the audio output + int numFramesAudioOutputRoomFor = _audioOutput->bytesFree() / sizeof(int16_t) * networkOutputToOutputRatio / _ringBuffer.getNumFrameSamples(); + numNetworkOutputSamples = std::min(_ringBuffer.samplesAvailable(), numFramesAudioOutputRoomFor * _ringBuffer.getNumFrameSamples()); } // if there is data in the ring buffer and room in the audio output, decide what to do