diff options
author | Max Horn | 2003-07-29 02:48:38 +0000 |
---|---|---|
committer | Max Horn | 2003-07-29 02:48:38 +0000 |
commit | fb7deafaef766b0dff8656fc804024fc2803f362 (patch) | |
tree | d1479e542213fb4c954a8fbb75c68e16e329c35e | |
parent | 04843469eb7eff983c10c9eac42ac9e51d82ec29 (diff) | |
download | scummvm-rg350-fb7deafaef766b0dff8656fc804024fc2803f362.tar.gz scummvm-rg350-fb7deafaef766b0dff8656fc804024fc2803f362.tar.bz2 scummvm-rg350-fb7deafaef766b0dff8656fc804024fc2803f362.zip |
after looking at SAM and DOTT, it seems the actor-voice sync actually is *worse* with a non-zero _silenceCut value - setting it to 0 gives perfect sync for me... odd, when did this change? Anyway, removing _silenceCut. If you notice sync problems, tell me
svn-id: r9275
-rw-r--r-- | sound/mixer.cpp | 33 |
1 files changed, 3 insertions, 30 deletions
diff --git a/sound/mixer.cpp b/sound/mixer.cpp index b2daa36d68..5f6b6629ba 100644 --- a/sound/mixer.cpp +++ b/sound/mixer.cpp @@ -136,7 +136,6 @@ public: }; class ChannelMP3 : public ChannelMP3Common { - uint32 _silenceCut; uint32 _position; public: @@ -953,42 +952,13 @@ ChannelMP3::ChannelMP3(SoundMixer *mixer, PlayingSoundHandle *handle, void *soun _size = size; _ptr = (byte *)sound; _releasePtr = (flags & SoundMixer::FLAG_AUTOFREE) != 0; - - /* This variable is the number of samples to cut at the start of the MP3 - file. This is needed to have lip-sync as the MP3 file have some miliseconds - of blank at the start (as, I suppose, the MP3 compression algorithm needs to - have some silence at the start to really be efficient and to not distort - too much the start of the sample). - - This value was found by experimenting out. If you recompress differently your - .SO3 file, you may have to change this value. - - When using Lame, it seems that the sound starts to have some volume about 50 ms - from the start of the sound => we skip about 2 frames (at 22.05 khz). - */ - _silenceCut = 576 * 2; } void ChannelMP3::mix(int16 *data, uint len) { const int volume = _mixer->getVolume(); - if (!_initialized) { - // TODO: instead of using _silenceCut, skip first two frames like - // it is done in ChannelMP3CDMusic::mix() - } - while (1) { - /* Skip _silence_cut a the start */ - if ((_posInFrame < _synth.pcm.length) && (_silenceCut > 0)) { - uint32 diff = _synth.pcm.length - _posInFrame; - - if (diff > _silenceCut) - diff = _silenceCut; - _silenceCut -= diff; - _posInFrame += diff; - } - int16 sample; while ((_posInFrame < _synth.pcm.length) && (len > 0)) { sample = (int16)((scale_sample(_synth.pcm.samples[0][_posInFrame]) * volume) / 256); @@ -1066,6 +1036,9 @@ void ChannelMP3CDMusic::mix(int16 *data, uint len) { } } } + + // FIXME: Fingolfin asks: why is this call to mad_synth_frame + // necessary? Or rather, *is* it actually necessary? mad_synth_frame(&_synth, &_frame); // We are supposed to be in synch |