From 32ec5746bebcfbaecece143f2ee75644a1000d17 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Thu, 7 Jan 2010 15:12:20 +0000 Subject: Add Timestamp::totalNumberOfFrames() method, clarify some comments svn-id: r47120 --- sound/audiostream.cpp | 3 +-- sound/audiostream.h | 6 +++--- sound/timestamp.h | 23 ++++++++++++++++++----- 3 files changed, 22 insertions(+), 10 deletions(-) (limited to 'sound') diff --git a/sound/audiostream.cpp b/sound/audiostream.cpp index 79e8308115..6a3b1d792d 100644 --- a/sound/audiostream.cpp +++ b/sound/audiostream.cpp @@ -183,8 +183,7 @@ inline int32 calculatePlayTime(int rate, int samples) { } uint32 calculateSampleOffset(const Timestamp &where, int rate) { - const Timestamp whereRate = where.convertToFramerate(rate); - return whereRate.secs() * rate + whereRate.numberOfFrames(); + return where.convertToFramerate(rate).totalNumberOfFrames(); } /** diff --git a/sound/audiostream.h b/sound/audiostream.h index 528a6e25d8..15dce74661 100644 --- a/sound/audiostream.h +++ b/sound/audiostream.h @@ -152,9 +152,9 @@ private: }; /** - * A seekable audio stream. Subclasses of this class implement a - * working seeking. The seeking itself is not required to be - * working when the stream is being played by Mixer! + * A seekable audio stream. Subclasses of this class implement an + * interface for seeking. The seeking itself is not required to be + * working while the stream is being played by Mixer! */ class SeekableAudioStream : public RewindableAudioStream { public: diff --git a/sound/timestamp.h b/sound/timestamp.h index cf149a65d0..699723e79b 100644 --- a/sound/timestamp.h +++ b/sound/timestamp.h @@ -129,21 +129,34 @@ public: int msecsDiff(const Timestamp &ts) const; /** - * Determines the time in milliseconds described by this timestamp, + * Return the time in milliseconds described by this timestamp, * rounded down. */ uint32 msecs() const; /** - * Determines the time in seconds described by this timestamp, + * Return the time in seconds described by this timestamp, * rounded down. */ - inline uint32 secs() const { return _secs; } + inline uint32 secs() const { + return _secs; + } /** - * Determines the frames described by this timestamp. + * Return the time in frames described by this timestamp. */ - inline int numberOfFrames() const { return _numberOfFrames / _framerateFactor; } + inline int totalNumberOfFrames() const { + return _numberOfFrames / _framerateFactor + _secs * (_framerate / _framerateFactor); + } + + /** + * A timestamp consists of a number of seconds, plus a number + * of frames, the latter describing a fraction of a second. + * This method returns the latter number. + */ + inline int numberOfFrames() const { + return _numberOfFrames / _framerateFactor; + } /** Return the framerate used by this timestamp. */ inline int framerate() const { return _framerate / _framerateFactor; } -- cgit v1.2.3