mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 06:23:06 +02:00
Fix longstanding bug where resampler called with samples instead of frames, resulting in buffer overflow
This commit is contained in:
parent
cabe9eab81
commit
1572c93624
1 changed files with 5 additions and 13 deletions
|
@ -693,28 +693,20 @@ void possibleResampling(AudioSRC* resampler,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
int numSourceFrames = numSourceSamples / sourceChannelCount;
|
||||||
|
|
||||||
if (sourceChannelCount != destinationChannelCount) {
|
if (sourceChannelCount != destinationChannelCount) {
|
||||||
|
|
||||||
int numChannelCoversionSamples = (numSourceSamples * destinationChannelCount) / sourceChannelCount;
|
int16_t* channelConversionSamples = new int16_t[numSourceFrames * destinationChannelCount];
|
||||||
int16_t* channelConversionSamples = new int16_t[numChannelCoversionSamples];
|
|
||||||
|
|
||||||
sampleChannelConversion(sourceSamples, channelConversionSamples, numSourceSamples,
|
sampleChannelConversion(sourceSamples, channelConversionSamples, numSourceSamples,
|
||||||
sourceChannelCount, destinationChannelCount);
|
sourceChannelCount, destinationChannelCount);
|
||||||
|
|
||||||
resampler->render(channelConversionSamples, destinationSamples, numChannelCoversionSamples);
|
resampler->render(channelConversionSamples, destinationSamples, numSourceFrames);
|
||||||
|
|
||||||
delete[] channelConversionSamples;
|
delete[] channelConversionSamples;
|
||||||
} else {
|
} else {
|
||||||
|
resampler->render(sourceSamples, destinationSamples, numSourceFrames);
|
||||||
unsigned int numAdjustedSourceSamples = numSourceSamples;
|
|
||||||
unsigned int numAdjustedDestinationSamples = numDestinationSamples;
|
|
||||||
|
|
||||||
if (sourceChannelCount == 2 && destinationChannelCount == 2) {
|
|
||||||
numAdjustedSourceSamples /= 2;
|
|
||||||
numAdjustedDestinationSamples /= 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
resampler->render(sourceSamples, destinationSamples, numAdjustedSourceSamples);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue