diff --git a/Utilities/Audio/HermiteResampler.cpp b/Utilities/Audio/HermiteResampler.cpp index 1a22aec9..25b5d12a 100644 --- a/Utilities/Audio/HermiteResampler.cpp +++ b/Utilities/Audio/HermiteResampler.cpp @@ -80,15 +80,17 @@ uint32_t HermiteResampler::Resample(int16_t* in, uint32_t inSampleCount, int16_t _pendingSamples.clear(); if(_rateRatio == 1.0) { - uint32_t count = std::min((uint32_t)maxOutSampleCount - outPos, inSampleCount * 2); - memcpy(out+outPos, in, count * sizeof(int16_t)); - for(uint32_t i = count; i < inSampleCount * 2; i += 2) { - _pendingSamples.push_back(in[i]); - _pendingSamples.push_back(in[i + 1]); + if(inSampleCount > 0) { + uint32_t count = std::min((uint32_t)maxOutSampleCount - outPos, inSampleCount * 2); + memcpy(out+outPos, in, count * sizeof(int16_t)); + for(uint32_t i = count; i < inSampleCount * 2; i += 2) { + _pendingSamples.push_back(in[i]); + _pendingSamples.push_back(in[i + 1]); + } + _left = in[inSampleCount * 2 - 2]; + _right = in[inSampleCount * 2 - 1]; + outPos += count; } - _left = in[inSampleCount * 2 - 2]; - _right = in[inSampleCount * 2 - 1]; - outPos += count; } else { for(uint32_t i = 0; i < inSampleCount * 2; i += 2) { while(_fraction <= 1.0) {