Merge pull request #223 from Splendide-Imaginarius/mkxp-z-seek-round

Audio: convert seconds to samples by rounding rather than flooring
This commit is contained in:
Splendide Imaginarius 2024-09-29 01:53:41 +00:00 committed by GitHub
commit ef90a2f30b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 3 additions and 5 deletions

View file

@ -153,9 +153,8 @@ struct SDLSoundSource : ALDataSource
else
{
// Unfortunately there is no easy API in SDL_sound for seeking with better precision than 1ms.
// TODO: Work around this by manually consuming the remaining samples.
// TODO: Also we're flooring here when we probably should be rounding.
Sound_Seek(sample, static_cast<uint32_t>(seconds * 1000));
// TODO: Work around this by flooring instead of rounding, and then manually consuming the remaining samples.
Sound_Seek(sample, static_cast<uint32_t>(lround(seconds * 1000)));
}
}

View file

@ -164,8 +164,7 @@ struct VorbisSource : ALDataSource
currentFrame = 0;
}
// TODO: We're flooring here when we probably should be rounding.
currentFrame = seconds * info.rate;
currentFrame = lround(seconds * info.rate);
if (loop.valid && currentFrame > loop.end)
currentFrame = loop.start;