aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/aud_stream.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2018-03-28 00:42:26 +0200
committerEugene Sandulenko2018-03-28 00:42:26 +0200
commit5416e640a3de47b1a7d2d6962ac688b463d5fba1 (patch)
tree54881d732e4f40d397cf2e0d6379bf39e3ae7ff7 /engines/bladerunner/aud_stream.cpp
parent5d8ff054f246cdeb6171727dc75f0934f8f32ba6 (diff)
downloadscummvm-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.cpp7
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