diff --git a/src/util/audio/VorbisConsumer.cpp b/src/util/audio/VorbisConsumer.cpp index 723cbd87..004f8915 100644 --- a/src/util/audio/VorbisConsumer.cpp +++ b/src/util/audio/VorbisConsumer.cpp @@ -48,7 +48,7 @@ bool VorbisConsumer::start(string filename) { audioQueue->waitForProducer(lock); - while (!audioQueue->empty()) + while (audioQueue->size() > 64 * channels || (audioQueue->hasStreamEnded() && !audioQueue->empty())) { this->audioQueue->pop(buffer, bufferLength, 64 * channels); @@ -61,7 +61,7 @@ bool VorbisConsumer::start(string filename) } } - sf_writef_float(sfFile, buffer, 64); + sf_writef_float(sfFile, buffer, std::min(bufferLength / channels, 64)); } }