diff options
| author | Max Horn | 2010-01-07 15:25:14 +0000 | 
|---|---|---|
| committer | Max Horn | 2010-01-07 15:25:14 +0000 | 
| commit | 4f463e288e99c9b2adecfe91065da9cbd74950bf (patch) | |
| tree | 93d4e28dabd4cb06b3db25ff9583ca745dff0087 | |
| parent | 7f358e3bbdb8dbfbdd40f18af54d4fc4a3e8d21b (diff) | |
| download | scummvm-rg350-4f463e288e99c9b2adecfe91065da9cbd74950bf.tar.gz scummvm-rg350-4f463e288e99c9b2adecfe91065da9cbd74950bf.tar.bz2 scummvm-rg350-4f463e288e99c9b2adecfe91065da9cbd74950bf.zip | |
Get rid of calculatePlayTime, instead store playtimes as Timestamps
svn-id: r47122
| -rw-r--r-- | sound/audiostream.cpp | 22 | 
1 files changed, 7 insertions, 15 deletions
| diff --git a/sound/audiostream.cpp b/sound/audiostream.cpp index 6a3b1d792d..04f41ccf5c 100644 --- a/sound/audiostream.cpp +++ b/sound/audiostream.cpp @@ -176,12 +176,6 @@ bool SubSeekableAudioStream::seek(const Timestamp &where) {  #pragma mark --- LinearMemoryStream ---  #pragma mark - -inline int32 calculatePlayTime(int rate, int samples) { -	int32 seconds = samples / rate; -	int32 milliseconds = (1000 * (samples % rate)) / rate; -	return seconds * 1000 + milliseconds; -} -  uint32 calculateSampleOffset(const Timestamp &where, int rate) {  	return where.convertToFramerate(rate).totalNumberOfFrames();  } @@ -205,14 +199,14 @@ protected:  	const byte *_loopEnd;  	const int _rate;  	const byte *_origPtr; -	const int32 _playtime; +	const Timestamp _playtime;  	uint _numLoops;			///< Number of loops to play  	uint _numPlayedLoops;	///< Number of loops which have been played  public:  	LinearMemoryStream(int rate, const byte *ptr, uint len, uint loopOffset, uint loopLen, bool autoFreeMemory) -		: _ptr(ptr), _end(ptr+len), _loopPtr(0), _loopEnd(0), _rate(rate), _playtime(calculatePlayTime(rate, len / (is16Bit ? 2 : 1) / (stereo ? 2 : 1))) { +		: _ptr(ptr), _end(ptr+len), _loopPtr(0), _loopEnd(0), _rate(rate), _playtime(0, len / (is16Bit ? 2 : 1) / (stereo ? 2 : 1), rate) {  		if (loopLen) {  			_numLoops = 0; @@ -235,8 +229,7 @@ public:  	int getRate() const				{ return _rate; }  	bool seek(const Timestamp &where); -	// TODO: We can definitly increase the precision here, since we know the exact sample count -	Timestamp getLength() const { return Timestamp(_playtime, getRate()); } +	Timestamp getLength() const { return _playtime; }  	void setNumLoops(uint numLoops) {  		_numLoops = numLoops; @@ -323,7 +316,7 @@ protected:  	const byte *_ptr;		///< Pointer to current position in stream buffer  	const int _rate;		///< Sample rate of stream -	int32 _playtime;		///< Calculated total play time +	Timestamp _playtime;	///< Calculated total play time  	Common::SeekableReadStream *_stream;	///< Stream to read data from  	int32 _filePos;			///< Current position in stream  	int32 _diskLeft;		///< Samples left in stream in current block not yet read to buffer @@ -342,7 +335,7 @@ protected:  public:  	LinearDiskStream(int rate, uint beginLoop, uint endLoop, bool disposeStream, Common::SeekableReadStream *stream, LinearDiskStreamAudioBlock *block, uint numBlocks, bool loop) -		: _rate(rate), _stream(stream), _beginLoop(beginLoop), _endLoop(endLoop), _disposeAfterUse(disposeStream), +		: _rate(rate), _playtime(0, rate), _stream(stream), _beginLoop(beginLoop), _endLoop(endLoop), _disposeAfterUse(disposeStream),  		  _audioBlockCount(numBlocks), _loop(loop), _numLoops(loop ? 0 : 1), _numPlayedLoops(0) {  		assert(numBlocks > 0); @@ -373,7 +366,7 @@ public:  		for (int r = 0; r < _audioBlockCount; r++) {  			len += _audioBlock[r].len;  		} -		_playtime = calculatePlayTime(rate, len / (is16Bit ? 2 : 1) / (stereo ? 2 : 1)); +		_playtime = Timestamp(0, len / (is16Bit ? 2 : 1) / (stereo ? 2 : 1), rate);  	} @@ -391,8 +384,7 @@ public:  	bool endOfData() const			{ return (_currentBlock == _audioBlockCount - 1) && (_diskLeft == 0) && (_bufferLeft == 0); }  	int getRate() const			{ return _rate; } -	// TODO: We can definitly increase the precision here, since we know the exact sample count -	Timestamp getLength() const { return Timestamp(_playtime, getRate()); } +	Timestamp getLength() const { return _playtime; }  	bool seek(const Timestamp &where);  }; | 
