[Scummvm-cvs-logs] CVS: scummvm/sound audiostream.cpp,NONE,1.1 audiostream.h,1.3,1.4

Max Horn fingolfin at users.sourceforge.net
Sat Jul 26 01:33:40 CEST 2003


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

Modified Files:
	audiostream.h 
Added Files:
	audiostream.cpp 
Log Message:
move AudioInputStream implementations & makeInputStream into separate .cpp file

--- NEW FILE: audiostream.cpp ---
/* ScummVM - Scumm Interpreter
 * Copyright (C) 2001-2003 The ScummVM project
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * $Header: /cvsroot/scummvm/scummvm/sound/audiostream.cpp,v 1.1 2003/07/25 13:42:05 fingolfin Exp $
 *
 */

#include "audiostream.h"
#include "mixer.h"

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<channels, 1> {
protected:
	int16 readIntern() { int8 v = (int8)*_ptr; return v << 8; }
public:
	Input8bitSignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 1>(ptr, len) { }
};

template<int channels>
class Input8bitUnsignedStream : public MemoryAudioInputStream<channels, 1> {
protected:
	int16 readIntern() { int8 v = (int8)(*_ptr ^ 0x80); return v << 8; }
public:
	Input8bitUnsignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 1>(ptr, len) { }
};

template<int channels>
class Input16bitSignedStream : public MemoryAudioInputStream<channels, 2> {
protected:
	int16 readIntern() { return (int16)READ_BE_UINT16(_ptr); }
public:
	Input16bitSignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 2>(ptr, len) { }
};

template<int channels>
class Input16bitUnsignedStream : public MemoryAudioInputStream<channels, 2> {
protected:
	int16 readIntern() { return (int16)(READ_BE_UINT16(_ptr) ^ 0x8000); }
public:
	Input16bitUnsignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 2>(ptr, len) { }
};


template<int channels>
static AudioInputStream *makeInputStream(const byte *ptr, uint32 len, bool isUnsigned, bool is16Bit) {
	if (isUnsigned) {
		if (is16Bit)
			return new Input16bitUnsignedStream<channels>(ptr, len);
		else
			return new Input8bitUnsignedStream<channels>(ptr, len);
	} else {
		if (is16Bit)
			return new Input16bitSignedStream<channels>(ptr, len);
		else
			return new Input8bitSignedStream<channels>(ptr, len);
	}
}


AudioInputStream *makeInputStream(byte _flags, const byte *ptr, uint32 len) {
	if (_flags & SoundMixer::FLAG_STEREO)
		return makeInputStream<2>(ptr, len, _flags & SoundMixer::FLAG_UNSIGNED, _flags & SoundMixer::FLAG_16BITS);
	else
		return makeInputStream<1>(ptr, len, _flags & SoundMixer::FLAG_UNSIGNED, _flags & SoundMixer::FLAG_16BITS);
}

Index: audiostream.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/audiostream.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- audiostream.h	25 Jul 2003 13:34:25 -0000	1.3
+++ audiostream.h	25 Jul 2003 13:42:05 -0000	1.4
@@ -22,7 +22,8 @@
 #ifndef AUDIOSTREAM_H
 #define AUDIOSTREAM_H
 
-#include "mixer.h"
+#include "scummsys.h"
+#include <assert.h>
 
 // TODO:
 // * maybe make readIntern return 16.16 or 24.8 fixed point values
@@ -46,7 +47,7 @@
 
 class ZeroInputStream : public AudioInputStream {
 protected:
-	uint _len;
+	int _len;
 	int16 readIntern() { return 0; }
 	void advance() { _len--; }
 public:
@@ -54,71 +55,6 @@
 	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<channels, 1> {
-protected:
-	int16 readIntern() { int8 v = (int8)*_ptr; return v << 8; }
-public:
-	Input8bitSignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 1>(ptr, len) { }
-};
-
-template<int channels>
-class Input8bitUnsignedStream : public MemoryAudioInputStream<channels, 1> {
-protected:
-	int16 readIntern() { int8 v = (int8)(*_ptr ^ 0x80); return v << 8; }
-public:
-	Input8bitUnsignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 1>(ptr, len) { }
-};
-
-template<int channels>
-class Input16bitSignedStream : public MemoryAudioInputStream<channels, 2> {
-protected:
-	int16 readIntern() { return (int16)READ_BE_UINT16(_ptr); }
-public:
-	Input16bitSignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 2>(ptr, len) { }
-};
-
-template<int channels>
-class Input16bitUnsignedStream : public MemoryAudioInputStream<channels, 2> {
-protected:
-	int16 readIntern() { return (int16)(READ_BE_UINT16(_ptr) ^ 0x8000); }
-public:
-	Input16bitUnsignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 2>(ptr, len) { }
-};
-
-
-template<int channels>
-static AudioInputStream *makeInputStream(const byte *ptr, uint32 len, bool isUnsigned, bool is16Bit) {
-	if (isUnsigned) {
-		if (is16Bit)
-			return new Input16bitUnsignedStream<channels>(ptr, len);
-		else
-			return new Input8bitUnsignedStream<channels>(ptr, len);
-	} else {
-		if (is16Bit)
-			return new Input16bitSignedStream<channels>(ptr, len);
-		else
-			return new Input8bitSignedStream<channels>(ptr, len);
-	}
-}
-
-static inline AudioInputStream *makeInputStream(byte _flags, const byte *ptr, uint32 len) {
-	if (_flags & SoundMixer::FLAG_STEREO)
-		return makeInputStream<2>(ptr, len, _flags & SoundMixer::FLAG_UNSIGNED, _flags & SoundMixer::FLAG_16BITS);
-	else
-		return makeInputStream<1>(ptr, len, _flags & SoundMixer::FLAG_UNSIGNED, _flags & SoundMixer::FLAG_16BITS);
-}
+AudioInputStream *makeInputStream(byte _flags, const byte *ptr, uint32 len);
 
 #endif





More information about the Scummvm-git-logs mailing list