diff options
author | Max Horn | 2005-01-13 16:28:20 +0000 |
---|---|---|
committer | Max Horn | 2005-01-13 16:28:20 +0000 |
commit | 05662db4dc9ee29bc9c526f34bb6796275b1e63c (patch) | |
tree | f0ee6225fcd4f7d7fc669c560b7a9abd64d1816f /sword1/music.cpp | |
parent | 59abbd5cc0449a224e47184a2ac88726b45896f0 (diff) | |
download | scummvm-rg350-05662db4dc9ee29bc9c526f34bb6796275b1e63c.tar.gz scummvm-rg350-05662db4dc9ee29bc9c526f34bb6796275b1e63c.tar.bz2 scummvm-rg350-05662db4dc9ee29bc9c526f34bb6796275b1e63c.zip |
Use loadWAVFromStream
svn-id: r16552
Diffstat (limited to 'sword1/music.cpp')
-rw-r--r-- | sword1/music.cpp | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/sword1/music.cpp b/sword1/music.cpp index ac2a3345b7..99166ed2e6 100644 --- a/sword1/music.cpp +++ b/sword1/music.cpp @@ -41,28 +41,19 @@ WaveAudioStream *makeWaveStream(File *source, uint32 size) { } 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 @@ WaveAudioStream::~WaveAudioStream(void) { } 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; |