[Scummvm-cvs-logs] SF.net SVN: scummvm:[47139] scummvm/trunk/sound

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Thu Jan 7 21:13:02 CET 2010


Revision: 47139
          http://scummvm.svn.sourceforge.net/scummvm/?rev=47139&view=rev
Author:   lordhoto
Date:     2010-01-07 20:13:02 +0000 (Thu, 07 Jan 2010)

Log Message:
-----------
Cleanup.

Modified Paths:
--------------
    scummvm/trunk/sound/audiostream.cpp
    scummvm/trunk/sound/audiostream.h

Modified: scummvm/trunk/sound/audiostream.cpp
===================================================================
--- scummvm/trunk/sound/audiostream.cpp	2010-01-07 19:34:19 UTC (rev 47138)
+++ scummvm/trunk/sound/audiostream.cpp	2010-01-07 20:13:02 UTC (rev 47139)
@@ -149,8 +149,10 @@
 #pragma mark -
 
 SubSeekableAudioStream::SubSeekableAudioStream(SeekableAudioStream *parent, const Timestamp start, const Timestamp end, bool disposeAfterUse)
-    : _parent(parent), _disposeAfterUse(disposeAfterUse), _isStereo(parent->isStereo()),
-      _start(start.convertToFramerate(getRate())), _pos(0, getRate()), _length(end.convertToFramerate(getRate())) {
+    : _parent(parent), _disposeAfterUse(disposeAfterUse),
+      _start(start.convertToFramerate(getRate())),
+       _pos(0, getRate() * (isStereo() ? 2 : 1)),
+      _length(end.convertToFramerate(getRate())) {
 	// TODO: This really looks like Timestamp::operator-
 	_length = Timestamp(_length.secs() - _start.secs(), _length.numberOfFrames() - _start.numberOfFrames(), getRate());
 	_parent->seek(_start);
@@ -162,14 +164,19 @@
 }
 
 int SubSeekableAudioStream::readBuffer(int16 *buffer, const int numSamples) {
-	int framesLeft = MIN(_length.frameDiff(_pos) * (_isStereo ? 2 : 1), numSamples);
+	int framesLeft = MIN(_length.frameDiff(_pos), numSamples);
 	int framesRead = _parent->readBuffer(buffer, framesLeft);
-	_pos = _pos.addFrames(framesRead / (_isStereo ? 2 : 1));
+	_pos = _pos.addFrames(framesRead);
 	return framesRead;
 }
 
 bool SubSeekableAudioStream::seek(const Timestamp &where) {
 	_pos = where.convertToFramerate(getRate());
+	if (_pos > _length) {
+		_pos = _length;
+		return false;
+	}
+
 	// TODO: This really looks like Timestamp::operator+
 	if (_parent->seek(Timestamp(_pos.secs() + _start.secs(), _pos.numberOfFrames() + _start.numberOfFrames(), getRate()))) {
 		return true;

Modified: scummvm/trunk/sound/audiostream.h
===================================================================
--- scummvm/trunk/sound/audiostream.h	2010-01-07 19:34:19 UTC (rev 47138)
+++ scummvm/trunk/sound/audiostream.h	2010-01-07 20:13:02 UTC (rev 47139)
@@ -223,7 +223,7 @@
 
 	int readBuffer(int16 *buffer, const int numSamples);
 
-	bool isStereo() const { return _isStereo; }
+	bool isStereo() const { return _parent->isStereo(); }
 
 	int getRate() const { return _parent->getRate(); }
 
@@ -235,7 +235,6 @@
 private:
 	SeekableAudioStream *_parent;
 	bool _disposeAfterUse;
-	const bool _isStereo;
 
 	const Timestamp _start;
 	Timestamp _pos, _length;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list