diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/audiostream.cpp | 10 | ||||
-rw-r--r-- | sound/audiostream.h | 9 |
2 files changed, 11 insertions, 8 deletions
diff --git a/sound/audiostream.cpp b/sound/audiostream.cpp index acd5398bfd..a3a00a4eba 100644 --- a/sound/audiostream.cpp +++ b/sound/audiostream.cpp @@ -109,14 +109,8 @@ inline int32 calculatePlayTime(int rate, int samples) { } uint32 calculateSampleOffset(const Timestamp &where, int rate) { - const uint32 msecs = where.msecs(); - - const Timestamp msecStamp(msecs, rate); - const uint32 seconds = msecs / 1000; - const uint32 millis = msecs % 1000; - const uint32 samples = msecStamp.frameDiff(where) + (millis * rate) / 1000; - - return seconds * rate + samples; + const Timestamp whereRate = where.convertToFramerate(rate); + return whereRate.secs() * rate + whereRate.getNumberOfFrames(); } /** diff --git a/sound/audiostream.h b/sound/audiostream.h index 8fc485bdb3..3889cffbb4 100644 --- a/sound/audiostream.h +++ b/sound/audiostream.h @@ -205,6 +205,15 @@ public: */ AppendableAudioStream *makeAppendableAudioStream(int rate, byte flags); +/** + * Calculates the sample, which the timestamp describes in a + * AudioStream with the given framerate. + * + * @param where point in time + * @param rate rate of the AudioStream + * @return sample index + */ +uint32 calculateSampleOffset(const Timestamp &where, int rate); } // End of namespace Audio |