diff options
author | Max Horn | 2003-12-27 14:11:03 +0000 |
---|---|---|
committer | Max Horn | 2003-12-27 14:11:03 +0000 |
commit | 436b5c5f7db0c4e18f3c86206c234ef1fab1f02b (patch) | |
tree | f1d002de103958069f0387a66603d7e6fda55169 | |
parent | 0aa79932183eefdbfc512f73469ccdca4ddde0fe (diff) | |
download | scummvm-rg350-436b5c5f7db0c4e18f3c86206c234ef1fab1f02b.tar.gz scummvm-rg350-436b5c5f7db0c4e18f3c86206c234ef1fab1f02b.tar.bz2 scummvm-rg350-436b5c5f7db0c4e18f3c86206c234ef1fab1f02b.zip |
Use VOC reader from voc.h
svn-id: r11963
-rw-r--r-- | simon/sound.cpp | 33 |
1 files changed, 6 insertions, 27 deletions
diff --git a/simon/sound.cpp b/simon/sound.cpp index a82fd2bc68..9bbee43149 100644 --- a/simon/sound.cpp +++ b/simon/sound.cpp @@ -154,8 +154,7 @@ void WavSound::playSound(uint sound, PlayingSoundHandle *handle, byte flags) { data[0] = _file->readUint32LE(); data[1] = _file->readUint32LE(); - if (//fread(data, sizeof(data), 1, sound_file) != 1 || - data[0] != 'atad') { + if (data[0] != 'atad') { error("playWav(%d): can't read data header", sound); } @@ -169,45 +168,25 @@ void VocSound::playSound(uint sound, PlayingSoundHandle *handle, byte flags) { if (_offsets == NULL) return; - VocHeader voc_hdr; - VocBlockHeader voc_block_hdr; - uint32 size; - - flags |= SoundMixer::FLAG_AUTOFREE; - _file->seek(_offsets[sound], SEEK_SET); - if (_file->read(&voc_hdr, sizeof(voc_hdr)) != sizeof(voc_hdr) || - strncmp((char *)voc_hdr.desc, "Creative Voice File\x1A", 10) != 0) { - error("playVoc(%d): can't read voc header", sound); - } - - _file->read(&voc_block_hdr, sizeof(voc_block_hdr)); - - size = voc_block_hdr.size[0] + (voc_block_hdr.size[1] << 8) + (voc_block_hdr.size[2] << 16) - 2; - uint32 samples_per_sec; + int size, samples_per_sec; + byte *buffer = loadVOCFile(_file, size, samples_per_sec); - /* workaround for voc weakness */ - samples_per_sec = getSampleRateFromVOCRate(voc_block_hdr.sr); - - byte *buffer = (byte *)malloc(size); - _file->read(buffer, size); - - _mixer->playRaw(handle, buffer, size, samples_per_sec, flags); + _mixer->playRaw(handle, buffer, size, samples_per_sec, flags | SoundMixer::FLAG_AUTOFREE); } void RawSound::playSound(uint sound, PlayingSoundHandle *handle, byte flags) { if (_offsets == NULL) return; - flags |= SoundMixer::FLAG_AUTOFREE; - _file->seek(_offsets[sound], SEEK_SET); + uint size = _file->readUint32BE(); byte *buffer = (byte *)malloc(size); _file->read(buffer, size); - _mixer->playRaw(handle, buffer, size, 22050, flags); + _mixer->playRaw(handle, buffer, size, 22050, flags | SoundMixer::FLAG_AUTOFREE); } #ifdef USE_MAD |