[Scummvm-cvs-logs] CVS: scummvm/sound audiostream.h,1.2,1.3

Max Horn fingolfin at users.sourceforge.net
Sat Jul 26 08:02:06 CEST 2003


Update of /cvsroot/scummvm/scummvm/sound
In directory sc8-pr-cvs1:/tmp/cvs-serv12362

Modified Files:
	audiostream.h 
Log Message:
reduced source code duplication

Index: audiostream.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/audiostream.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- audiostream.h	24 Jul 2003 18:20:12 -0000	1.2
+++ audiostream.h	25 Jul 2003 13:34:25 -0000	1.3
@@ -54,53 +54,48 @@
 	virtual int size() { return _len; }
 };
 
+template<int channels, int sampleSize>
 class MemoryAudioInputStream : public AudioInputStream {
 protected:
 	const byte *_ptr;
 	const byte *_end;
+	void advance() { _ptr += channels * sampleSize; }
 public:
 	MemoryAudioInputStream(const byte *ptr, uint len) : _ptr(ptr), _end(ptr+len) { }
+	virtual int size() { return (_end - _ptr) / (channels * sampleSize); }
 };
 
 
 template<int channels>
-class Input8bitSignedStream : public MemoryAudioInputStream {
+class Input8bitSignedStream : public MemoryAudioInputStream<channels, 1> {
 protected:
 	int16 readIntern() { int8 v = (int8)*_ptr; return v << 8; }
-	void advance() { _ptr += channels; }
 public:
-	Input8bitSignedStream(const byte *ptr, int len) : MemoryAudioInputStream(ptr, len) { }
-	virtual int size() { return (_end - _ptr) / channels; }
+	Input8bitSignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 1>(ptr, len) { }
 };
 
 template<int channels>
-class Input8bitUnsignedStream : public MemoryAudioInputStream {
+class Input8bitUnsignedStream : public MemoryAudioInputStream<channels, 1> {
 protected:
 	int16 readIntern() { int8 v = (int8)(*_ptr ^ 0x80); return v << 8; }
-	void advance() { _ptr += channels; }
 public:
-	Input8bitUnsignedStream(const byte *ptr, int len) : MemoryAudioInputStream(ptr, len) { }
-	virtual int size() { return (_end - _ptr) / channels; }
+	Input8bitUnsignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 1>(ptr, len) { }
 };
 
 template<int channels>
-class Input16bitSignedStream : public MemoryAudioInputStream {
+class Input16bitSignedStream : public MemoryAudioInputStream<channels, 2> {
 protected:
 	int16 readIntern() { return (int16)READ_BE_UINT16(_ptr); }
-	void advance() { _ptr += 2*channels; }
 public:
-	Input16bitSignedStream(const byte *ptr, int len) : MemoryAudioInputStream(ptr, len) { }
-	virtual int size() { return (_end - _ptr) / (2 * channels); }
+	Input16bitSignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 2>(ptr, len) { }
 };
 
 template<int channels>
-class Input16bitUnsignedStream : public MemoryAudioInputStream {
+class Input16bitUnsignedStream : public MemoryAudioInputStream<channels, 2> {
 protected:
 	int16 readIntern() { return (int16)(READ_BE_UINT16(_ptr) ^ 0x8000); }
-	void advance() { _ptr += 2*channels; }
 public:
-	Input16bitUnsignedStream(const byte *ptr, int len) : MemoryAudioInputStream(ptr, len) { }
-	virtual int size() { return (_end - _ptr) / (2 * channels); }
+	Input16bitUnsignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 2>(ptr, len) { }
 };
 
 





More information about the Scummvm-git-logs mailing list