[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