diff options
author | Eugene Sandulenko | 2018-03-28 00:42:26 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2018-03-28 00:42:26 +0200 |
commit | 5416e640a3de47b1a7d2d6962ac688b463d5fba1 (patch) | |
tree | 54881d732e4f40d397cf2e0d6379bf39e3ae7ff7 /engines/bladerunner/aud_stream.cpp | |
parent | 5d8ff054f246cdeb6171727dc75f0934f8f32ba6 (diff) | |
download | scummvm-rg350-5416e640a3de47b1a7d2d6962ac688b463d5fba1.tar.gz scummvm-rg350-5416e640a3de47b1a7d2d6962ac688b463d5fba1.tar.bz2 scummvm-rg350-5416e640a3de47b1a7d2d6962ac688b463d5fba1.zip |
BLADERUNNER: Switch to doubles in AudStream::getLength() calculations
Since we have everything in samples, and we have 44kHz, we easily
get overflows. Use doubles for calculating the length in
milliseconds more accurately.
Diffstat (limited to 'engines/bladerunner/aud_stream.cpp')
-rw-r--r-- | engines/bladerunner/aud_stream.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/engines/bladerunner/aud_stream.cpp b/engines/bladerunner/aud_stream.cpp index 0d4434cbbf..3d14f948d2 100644 --- a/engines/bladerunner/aud_stream.cpp +++ b/engines/bladerunner/aud_stream.cpp @@ -133,7 +133,12 @@ int AudStream::getLength() const { if (_flags & 2) { // stereo bytesPerSecond *= 2; } - return (1000 * _sizeDecompressed) / bytesPerSecond; + + // since everything is 44100, we easily get overflows with ints + // thus we must use doubles + double res = (double)_sizeDecompressed * 1000.0 / (double)bytesPerSecond; + + return (int32)res; } } // End of namespace BladeRunner |