Audio: Fixed crash in resampler when input contains no samples and no resampling needs to be done

This commit is contained in:
Sour 2024-10-15 17:26:12 +09:00
parent 6ea096b123
commit 682ac04a3e

View file

@ -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) {