[Scummvm-cvs-logs] CVS: scummvm/sword1 music.cpp,1.33,1.34 music.h,1.13,1.14
Robert Göffringmann
lavosspawn at users.sourceforge.net
Fri Dec 10 10:59:08 CET 2004
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/sword1 logic.cpp,1.46,1.47 sword1.cpp,1.72,1.73 sword1.h,1.22,1.23 sworddefs.h,1.16,1.17
- Next message: [Scummvm-cvs-logs] CVS: residual main.cpp,1.33,1.34 stdafx.h,1.4,1.5 timer.cpp,1.9,1.10
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/sword1
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6111/sword1
Modified Files:
music.cpp music.h
Log Message:
unify pc/palm sourcecode
Index: music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword1/music.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- music.cpp 10 Dec 2004 15:11:53 -0000 1.33
+++ music.cpp 10 Dec 2004 18:26:08 -0000 1.34
@@ -27,6 +27,8 @@
#include "sound/mp3.h"
#include "sound/vorbis.h"
+#define SMP_BUFSIZE 8192
+
namespace Sword1 {
WaveAudioStream *makeWaveStream(File *source, uint32 size) {
@@ -38,6 +40,7 @@
uint8 wavHeader[WAVEHEADERSIZE];
_sourceFile = source;
+ _sampleBuf = (uint8*)malloc(SMP_BUFSIZE);
_sourceFile->incRef();
if (_sourceFile->isOpen()) {
_sourceFile->read(wavHeader, WAVEHEADERSIZE);
@@ -58,41 +61,32 @@
}
WaveAudioStream::~WaveAudioStream(void) {
+ free(_sampleBuf);
_sourceFile->decRef();
}
int WaveAudioStream::readBuffer(int16 *buffer, const int numSamples) {
int samples = ((int)_samplesLeft < numSamples) ? (int)_samplesLeft : numSamples;
+ int retVal = samples;
-#ifdef __PALM_OS__
- int cnt = samples;
- int size = (_bitsPerSample == 16 ? samples * 2 : samples);
- void *sound = malloc(size);
-
- _sourceFile->read(sound, size);
-
- if (_bitsPerSample == 16) {
- int16 *src = (int16 *)sound;
- while(cnt--)
- *buffer++ = (int16)READ_LE_UINT16(src++);
-
- } else {
- int8 *src = (int8 *)sound;
- while(cnt--)
- *buffer++ = (int16)*src++ << 8;
+ while (samples > 0) {
+ int readBytes = (samples * (_bitsPerSample >> 3) > SMP_BUFSIZE) ? SMP_BUFSIZE : samples * (_bitsPerSample >> 3);
+ _sourceFile->read(_sampleBuf, readBytes);
+ if (_bitsPerSample == 16) {
+ readBytes >>= 1;
+ samples -= readBytes;
+ int16 *src = (int16*)_sampleBuf;
+ while (readBytes--)
+ *buffer++ = (int16)READ_LE_UINT16(src++);
+ } else {
+ samples -= readBytes;
+ int8 *src = (int8*)_sampleBuf;
+ while (readBytes--)
+ *buffer++ = (int16)*src++ << 8;
+ }
}
-
- free(sound);
-#else
- if (_bitsPerSample == 16)
- for (int cnt = 0; cnt < samples; cnt++)
- *buffer++ = (int16)_sourceFile->readUint16LE();
- else
- for (int cnt = 0; cnt < samples; cnt++)
- *buffer++ = (int16)_sourceFile->readByte() << 8;
-#endif
- _samplesLeft -= samples;
- return samples;
+ _samplesLeft -= retVal;
+ return retVal;
}
bool WaveAudioStream::endOfData(void) const {
Index: music.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword1/music.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- music.h 27 Nov 2004 16:18:25 -0000 1.13
+++ music.h 10 Dec 2004 18:26:08 -0000 1.14
@@ -53,6 +53,7 @@
virtual int getRate(void) const { return _rate; };
private:
File *_sourceFile;
+ uint8 *_sampleBuf;
uint32 _rate;
bool _isStereo;
uint32 _samplesLeft;
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/sword1 logic.cpp,1.46,1.47 sword1.cpp,1.72,1.73 sword1.h,1.22,1.23 sworddefs.h,1.16,1.17
- Next message: [Scummvm-cvs-logs] CVS: residual main.cpp,1.33,1.34 stdafx.h,1.4,1.5 timer.cpp,1.9,1.10
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list