Ticket #3590: queen-sound1.diff
File queen-sound1.diff, 4.3 KB (added by , 16 years ago) |
---|
-
sound/mixer.cpp
63 63 AudioStream *_input; 64 64 65 65 public: 66 Channel(Mixer *mixer, Mixer::SoundType type, AudioStream *input, bool autofreeStream, bool reverseStereo = false, int id = -1, bool permanent = false );66 Channel(Mixer *mixer, Mixer::SoundType type, AudioStream *input, bool autofreeStream, bool reverseStereo = false, int id = -1, bool permanent = false, uint rate = 0); 67 67 virtual ~Channel(); 68 68 69 69 void mix(int16 *data, uint len); … … 179 179 int id, byte volume, int8 balance, 180 180 bool autofreeStream, 181 181 bool permanent, 182 bool reverseStereo) { 182 bool reverseStereo, 183 uint rate) { 183 184 Common::StackLock lock(_mutex); 184 185 185 186 if (input == 0) { … … 198 199 } 199 200 200 201 // Create the channel 201 Channel *chan = new Channel(this, type, input, autofreeStream, reverseStereo, id, permanent );202 Channel *chan = new Channel(this, type, input, autofreeStream, reverseStereo, id, permanent, rate); 202 203 chan->setVolume(volume); 203 204 chan->setBalance(balance); 204 205 insertChannel(handle, chan); … … 379 380 380 381 381 382 Channel::Channel(Mixer *mixer, Mixer::SoundType type, AudioStream *input, 382 bool autofreeStream, bool reverseStereo, int id, bool permanent) 383 bool autofreeStream, bool reverseStereo, int id, bool permanent, 384 uint rate) 383 385 : _type(type), _mixer(mixer), _autofreeStream(autofreeStream), 384 386 _volume(Mixer::kMaxChannelVolume), _balance(0), _pauseLevel(0), _id(id), _samplesConsumed(0), 385 387 _samplesDecoded(0), _mixerTimeStamp(0), _converter(0), _input(input), _permanent(permanent) { … … 387 389 assert(input); 388 390 389 391 // Get a rate converter instance 390 _converter = makeRateConverter(_input->getRate(), mixer->getOutputRate(), _input->isStereo(), reverseStereo); 392 if (rate == 0) 393 rate = _input->getRate(); 394 _converter = makeRateConverter(rate, mixer->getOutputRate(), _input->isStereo(), reverseStereo); 391 395 } 392 396 393 397 Channel::~Channel() { -
sound/mixer_intern.h
88 88 int id = -1, byte volume = 255, int8 balance = 0, 89 89 bool autofreeStream = true, 90 90 bool permanent = false, 91 bool reverseStereo = false); 91 bool reverseStereo = false, 92 uint rate = 0); 92 93 93 94 94 95 -
sound/mixer.h
165 165 int id = -1, byte volume = kMaxChannelVolume, int8 balance = 0, 166 166 bool autofreeStream = true, 167 167 bool permanent = false, 168 bool reverseStereo = false) = 0; 168 bool reverseStereo = false, 169 uint rate = 0) = 0; 169 170 170 171 171 172 -
engines/queen/sound.cpp
69 69 void playSoundData(Common::File *f, uint32 size, Audio::SoundHandle *soundHandle) { 70 70 Common::MemoryReadStream *tmp = f->readStream(size); 71 71 assert(tmp); 72 _mixer->playInputStream(Audio::Mixer::kSFXSoundType, soundHandle, Audio::makeMP3Stream(tmp, true) );72 _mixer->playInputStream(Audio::Mixer::kSFXSoundType, soundHandle, Audio::makeMP3Stream(tmp, true), -1, Audio::Mixer::kMaxChannelVolume, 0, true, false, false, 11840); 73 73 } 74 74 }; 75 75 #endif … … 82 82 void playSoundData(Common::File *f, uint32 size, Audio::SoundHandle *soundHandle) { 83 83 Common::MemoryReadStream *tmp = f->readStream(size); 84 84 assert(tmp); 85 _mixer->playInputStream(Audio::Mixer::kSFXSoundType, soundHandle, Audio::makeVorbisStream(tmp, true) );85 _mixer->playInputStream(Audio::Mixer::kSFXSoundType, soundHandle, Audio::makeVorbisStream(tmp, true), -1, Audio::Mixer::kMaxChannelVolume, 0, true, false, false, 11840); 86 86 } 87 87 }; 88 88 #endif … … 95 95 void playSoundData(Common::File *f, uint32 size, Audio::SoundHandle *soundHandle) { 96 96 Common::MemoryReadStream *tmp = f->readStream(size); 97 97 assert(tmp); 98 _mixer->playInputStream(Audio::Mixer::kSFXSoundType, soundHandle, Audio::makeFlacStream(tmp, true) );98 _mixer->playInputStream(Audio::Mixer::kSFXSoundType, soundHandle, Audio::makeFlacStream(tmp, true), -1, Audio::Mixer::kMaxChannelVolume, 0, true, false, false, 11840); 99 99 } 100 100 }; 101 101 #endif // #ifdef USE_FLAC