fix WaveCrop() and use frames instead of samples (#3994)

Co-authored-by: Listeria monocytogenes <listeria@disroot.org>
This commit is contained in:
listeria 2024-05-21 03:13:46 -03:00 committed by GitHub
parent 9d67f4734b
commit bb9bd73f43
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 7 additions and 7 deletions

View file

@ -1274,17 +1274,17 @@ Wave WaveCopy(Wave wave)
return newWave;
}
// Crop a wave to defined samples range
// Crop a wave to defined frames range
// NOTE: Security check in case of out-of-range
void WaveCrop(Wave *wave, int initSample, int finalSample)
void WaveCrop(Wave *wave, int initFrame, int finalFrame)
{
if ((initSample >= 0) && (initSample < finalSample) && ((unsigned int)finalSample < (wave->frameCount*wave->channels)))
if ((initFrame >= 0) && (initFrame < finalFrame) && ((unsigned int)finalFrame < wave->frameCount))
{
int sampleCount = finalSample - initSample;
int frameCount = finalFrame - initFrame;
void *data = RL_MALLOC(sampleCount*wave->sampleSize/8);
void *data = RL_MALLOC(frameCount*wave->channels*wave->sampleSize/8);
memcpy(data, (unsigned char *)wave->data + (initSample*wave->channels*wave->sampleSize/8), sampleCount*wave->sampleSize/8);
memcpy(data, (unsigned char *)wave->data + (initFrame*wave->channels*wave->sampleSize/8), frameCount*wave->channels*wave->sampleSize/8);
RL_FREE(wave->data);
wave->data = data;