[Scummvm-cvs-logs] CVS: scummvm/sword1 music.cpp,1.37,1.38
Max Horn
fingolfin at users.sourceforge.net
Thu Jan 13 08:29:24 CET 2005
Update of /cvsroot/scummvm/scummvm/sword1
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32386
Modified Files:
music.cpp
Log Message:
Use loadWAVFromStream
Index: music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword1/music.cpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- music.cpp 10 Jan 2005 22:06:21 -0000 1.37
+++ music.cpp 13 Jan 2005 16:28:20 -0000 1.38
@@ -41,28 +41,19 @@
}
WaveAudioStream::WaveAudioStream(File *source, uint32 pSize) {
- uint32 size;
- uint8 wavHeader[WAVEHEADERSIZE];
+ int rate, size;
+ byte flags;
_sourceFile = source;
_sampleBuf = (uint8*)malloc(SMP_BUFSIZE);
_sourceFile->incRef();
- if (_sourceFile->isOpen()) {
- // TODO: use loadWAVFromStream to load the WAVE data!
- /*
- int rate, size;
- bye flags;
- const uint32 initialPos = _sourceFile->pos();
- isValidWAV = loadWAVFromStream(*_sourceFile, size, rate, flags);
- */
-
-
- _sourceFile->read(wavHeader, WAVEHEADERSIZE);
- _isStereo = (READ_LE_UINT16(wavHeader + 0x16) == 2);
- _rate = READ_LE_UINT16(wavHeader + 0x18);
- size = ((pSize) ? pSize : READ_LE_UINT32(wavHeader + 0x28));
- assert(size <= (source->size() - source->pos()));
- _bitsPerSample = READ_LE_UINT16(wavHeader + 0x22);
+ if (_sourceFile->isOpen() && loadWAVFromStream(*_sourceFile, size, rate, flags)) {
+ _isStereo = (flags & SoundMixer::FLAG_STEREO) != 0;
+ _rate = rate;
+ if (pSize && (int)pSize < size)
+ size = pSize;
+ assert((uint32)size <= (source->size() - source->pos()));
+ _bitsPerSample = ((flags & SoundMixer::FLAG_16BITS) != 0) ? 16 : 8;
_samplesLeft = (size * 8) / _bitsPerSample;
if ((_bitsPerSample != 16) && (_bitsPerSample != 8))
error("WaveAudioStream: unknown wave type");
@@ -80,11 +71,11 @@
}
int WaveAudioStream::readBuffer(int16 *buffer, const int numSamples) {
- int samples = ((int)_samplesLeft < numSamples) ? (int)_samplesLeft : numSamples;
+ int samples = MIN((int)_samplesLeft, numSamples);
int retVal = samples;
while (samples > 0) {
- int readBytes = (samples * (_bitsPerSample >> 3) > SMP_BUFSIZE) ? SMP_BUFSIZE : samples * (_bitsPerSample >> 3);
+ int readBytes = MIN(samples * (_bitsPerSample >> 3), SMP_BUFSIZE);
_sourceFile->read(_sampleBuf, readBytes);
if (_bitsPerSample == 16) {
readBytes >>= 1;
More information about the Scummvm-git-logs
mailing list