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;  | 
