[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