fixed restoration of sounds params after cross non/compressed bundles

svn-id: r16660
This commit is contained in:
Paweł Kołodziejski 2005-01-28 11:51:57 +00:00
parent ad7cc6cef4
commit ac06b41894

View file

@ -149,15 +149,32 @@ void IMuseDigital::saveOrLoad(Serializer *ser) {
assert(track->soundHandle);
if (track->compressed) {
track->regionOffset = 0;
track->dataOffset = _sound->getRegionOffset(track->soundHandle, track->curRegion);
}
track->compressed = _sound->isCompressed(track->soundHandle);
if (track->compressed) {
track->regionOffset = 0;
track->dataOffset = _sound->getRegionOffset(track->soundHandle, track->curRegion);
}
track->dataOffset = _sound->getRegionOffset(track->soundHandle, track->curRegion);
int bits = _sound->getBits(track->soundHandle);
int channels = _sound->getChannels(track->soundHandle);
int freq = _sound->getFreq(track->soundHandle);
track->iteration = freq * channels;
track->mixerFlags = 0;
if (channels == 2)
track->mixerFlags = SoundMixer::FLAG_STEREO | SoundMixer::FLAG_REVERSE_STEREO;
if ((bits == 12) || (bits == 16)) {
track->mixerFlags |= SoundMixer::FLAG_16BITS;
track->iteration *= 2;
} else if (bits == 8) {
track->mixerFlags |= SoundMixer::FLAG_UNSIGNED;
} else
error("IMuseDigital::saveOrLoad(): Can't handle %d bit samples", bits);
if (track->compressed)
track->mixerFlags |= SoundMixer::FLAG_LITTLE_ENDIAN;
int32 streamBufferSize = track->iteration;
int freq = _sound->getFreq(track->soundHandle);
track->stream2 = NULL;
track->stream = makeAppendableAudioStream(freq, track->mixerFlags, streamBufferSize);