# HG changeset patch # User Chris Cannam # Date 1487698960 0 # Node ID 96a6ea30933e264b57b9f5b1784430b54432bf15 # Parent b5728e69802bc15b490f6cc3c5130645e451148d Fix occasional off-by-one error in resampled audio file reader diff -r b5728e69802b -r 96a6ea30933e data/fileio/CodedAudioFileReader.cpp --- a/data/fileio/CodedAudioFileReader.cpp Tue Feb 21 16:04:11 2017 +0000 +++ b/data/fileio/CodedAudioFileReader.cpp Tue Feb 21 17:42:40 2017 +0000 @@ -525,8 +525,12 @@ ratio, true); - if (m_frameCount + out > sv_frame_t(double(m_fileFrameCount) * ratio)) { - out = sv_frame_t(double(m_fileFrameCount) * ratio) - m_frameCount; + SVDEBUG << "CodedAudioFileReader::pushBufferResampling: resampled padFrames to " << out << " frames" << endl; + + sv_frame_t expected = sv_frame_t(round(double(m_fileFrameCount) * ratio)); + if (m_frameCount + out > expected) { + out = expected - m_frameCount; + SVDEBUG << "CodedAudioFileReader::pushBufferResampling: clipping that to " << out << " to avoid producing more samples than desired" << endl; } pushBufferNonResampling(m_resampleBuffer, out);