[Scummvm-cvs-logs] CVS: scummvm/sound audiostream.cpp,1.57,1.58 audiostream.h,1.33,1.34

Pawel Kolodziejski aquadran at users.sourceforge.net
Sun Apr 25 12:28:35 CEST 2004


Update of /cvsroot/scummvm/scummvm/sound
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23559

Modified Files:
	audiostream.cpp audiostream.h 
Log Message:
delete CustomProcInputStream and add getFreeSpace for appendable audiostream

Index: audiostream.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/audiostream.cpp,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -d -r1.57 -r1.58
--- audiostream.cpp	13 Apr 2004 05:57:52 -0000	1.57
+++ audiostream.cpp	25 Apr 2004 18:43:37 -0000	1.58
@@ -214,6 +214,7 @@
 
 	void append(const byte *data, uint32 len);
 	void finish()				{ _finalized = true; }
+	uint32 getFreeSpace();
 };
 
 
@@ -298,6 +299,20 @@
 	}
 }
 
+template<bool stereo, bool is16Bit, bool isUnsigned>
+uint32 AppendableMemoryStream<stereo, is16Bit, isUnsigned>::getFreeSpace() {
+	uint32 free;
+
+	if (_pos <= _end) {
+		uint32 free_from_end = _bufferEnd - _end;
+		uint32 free_to_pos = _pos - _bufferStart;
+		free = free_from_end + free_to_pos;
+	} else {
+		free = _pos - _end;
+	}
+	
+	return free;
+}
 
 #pragma mark -
 #pragma mark --- Procedural stream ---
@@ -336,35 +351,6 @@
 };
 #endif
 
-CustomProcInputStream::CustomProcInputStream(int rate, byte flags, CustomInputProc proc, void *refCon) {
-	_refCon = refCon;
-	_refStream = this;
-	_rate = rate;
-	_proc = proc;
-	_finished = false;
-	_isStereo   = (flags & SoundMixer::FLAG_STEREO) != 0;
-	_is16Bit    = (flags & SoundMixer::FLAG_16BITS) != 0;
-	_isUnsigned = (flags & SoundMixer::FLAG_UNSIGNED) != 0;
-	assert(!(flags & SoundMixer::FLAG_LITTLE_ENDIAN));
-	assert(!(flags & SoundMixer::FLAG_AUTOFREE));
-}
-
-int CustomProcInputStream::readBuffer(int16 *buffer, const int numSamples) {
-	int numBytes = numSamples;
-	numBytes *= (_is16Bit ? 2 : 1);
-	byte *tmpBuffer = (byte *)malloc(numBytes);
-	int gotSamples = (_proc)(_refCon, _refStream, tmpBuffer, numBytes) / (_is16Bit ? 2 : 1);
-
-	const byte *ptr = tmpBuffer;
-	for (int samples = 0; samples < gotSamples; samples++) {
-		*buffer++ = READSAMPLE(_is16Bit, _isUnsigned, ptr);
-		ptr += (_is16Bit ? 2 : 1);
-	}
-
-	free(tmpBuffer);
-	return gotSamples;
-}
-
 #pragma mark -
 #pragma mark --- Input stream factories ---
 #pragma mark -

Index: audiostream.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/audiostream.h,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- audiostream.h	13 Apr 2004 05:57:52 -0000	1.33
+++ audiostream.h	25 Apr 2004 18:43:46 -0000	1.34
@@ -93,6 +93,7 @@
 public:
 	virtual void append(const byte *data, uint32 len) = 0;
 	virtual void finish() = 0;
+	virtual uint32 getFreeSpace() = 0;
 };
 
 class ZeroInputStream : public AudioStream {
@@ -113,31 +114,6 @@
 	int getRate() const { return -1; }
 };
 
-class CustomProcInputStream : public AudioStream {
-public:
-	typedef int (*CustomInputProc)(void *refCon, CustomProcInputStream *stream, byte *data, uint len);
-
-private:
-	bool _isStereo;
-	bool _is16Bit;
-	bool _isUnsigned;
-	int _rate;
-	CustomInputProc _proc;
-	CustomProcInputStream *_refStream;
-	void *_refCon;
-	bool _finished;
-
-public:
-
-	CustomProcInputStream(int rate, byte flags, CustomInputProc proc, void *refCon);
-
-	int readBuffer(int16 *buffer, const int numSamples);
-	bool isStereo() const { return _isStereo; }
-	bool endOfData() const { return _finished; }
-	void finish() { _finished = true; }
-	int getRate() const { return _rate; }
-};
-
 AudioStream *makeLinearInputStream(int rate, byte _flags, const byte *ptr, uint32 len, uint loopOffset, uint loopLen);
 AppendableAudioStream *makeAppendableAudioStream(int rate, byte _flags, uint32 len);
 





More information about the Scummvm-git-logs mailing list