[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse.cpp,1.76,1.77 dimuse.h,1.44,1.45 dimuse_track.cpp,1.5,1.6

Pawel Kolodziejski aquadran at users.sourceforge.net
Sun Apr 25 10:35:24 CEST 2004


Update of /cvsroot/scummvm/scummvm/scumm/imuse_digi
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6857/scumm/imuse_digi

Modified Files:
	dimuse.cpp dimuse.h dimuse_track.cpp 
Log Message:
dropped pull method for imuse

Index: dimuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.cpp,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -d -r1.76 -r1.77
--- dimuse.cpp	24 Apr 2004 20:41:02 -0000	1.76
+++ dimuse.cpp	25 Apr 2004 17:24:03 -0000	1.77
@@ -78,177 +78,6 @@
 	_nextSeqToPlay = 0;
 }
 
-#ifdef ENABLE_PULLMETHOD
-
-int IMuseDigital::pullProcCallback(void *refCon, CustomProcInputStream *stream, byte *mixerBuffer, int pullSize) {
-	IMuseDigital *imuseDigital = (IMuseDigital *)refCon;
-	return imuseDigital->pullProc(stream, mixerBuffer, pullSize);
-}
-
-int IMuseDigital::pullProc(CustomProcInputStream *stream, byte *mixerBuffer, int pullSize) {
-	Common::StackLock lock(_mutex, "IMuseDigital::pullProc()");
-	debug(5, "pullProc() pullSize:%d", pullSize);
-	for (int l = 0; l < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; l++) {
-		if ((_track[l]->used) && (_track[l]->stream == stream)) {
-			if (_track[l]->toBeRemoved) {
-				debug(5, "IMuseDigital::pullProc() stopped sound: %d", _track[l]->soundId);
-				_track[l]->stream->finish();
-				_track[l]->stream = NULL;
-				_sound->closeSound(_track[l]->soundHandle);
-				_track[l]->soundHandle = NULL;
-				_track[l]->used = false;
-				return 0;
-			}
-			_vm->_mixer->setChannelVolume(_track[l]->handle, _track[l]->mixerVol);
-			_vm->_mixer->setChannelBalance(_track[l]->handle, _track[l]->mixerPan);
-			int32 mixer_size = pullSize;
-			byte *data = NULL;
-			int32 result = 0, pos = 0;
-
-			if (_track[l]->curRegion == -1) {
-				switchToNextRegion(l);
-				if (_track[l]->toBeRemoved) {
-					return 0;
-				}
-			}
-
-			int bits = _sound->getBits(_track[l]->soundHandle);
-			int channels = _sound->getChannels(_track[l]->soundHandle);
-
-			if ((bits == 16) && (channels == 2))
-				assert((pullSize & 3) == 0);
-			else if ((bits == 16) || (channels == 2))
-				assert((pullSize & 1) == 0);
-
-			do {
-				if (bits == 12) {
-					byte *ptr = NULL;
-
-					mixer_size += _track[l]->mod;
-					int mixer_size_12 = (mixer_size * 3) / 4;
-					int length = (mixer_size_12 / 3) * 4;
-					_track[l]->mod = mixer_size - length;
-
-					int32 offset = (_track[l]->regionOffset * 3) / 4;
-					int result2 = _sound->getDataFromRegion(_track[l]->soundHandle, _track[l]->curRegion, &ptr, offset, mixer_size_12);
-					result = BundleCodecs::decode12BitsSample(ptr, &data, result2);
-
-					free(ptr);
-				} else if (bits == 16) {
-					result = _sound->getDataFromRegion(_track[l]->soundHandle, _track[l]->curRegion, &data, _track[l]->regionOffset, mixer_size);
-					if (_sound->getChannels(_track[l]->soundHandle) == 1) {
-						result &= ~1;
-					}
-					if (_sound->getChannels(_track[l]->soundHandle) == 2) {
-						if (result & 2)
-							result &= ~2;
-					}
-				} else if (bits == 8) {
-					result = _sound->getDataFromRegion(_track[l]->soundHandle, _track[l]->curRegion, &data, _track[l]->regionOffset, mixer_size);
-					if (_sound->getChannels(_track[l]->soundHandle) == 2) {
-						result &= ~1;
-					}
-				}
-
-				if (result > mixer_size)
-					result = mixer_size;
-
-				memcpy(mixerBuffer + pos, data, result);
-				pos += result;
-				free(data);
-
-				_track[l]->regionOffset += result;
-				_track[l]->trackOffset += result;
-					
-				if (_sound->isEndOfRegion(_track[l]->soundHandle, _track[l]->curRegion)) {
-					switchToNextRegion(l);
-					if (_track[l]->toBeRemoved) {
-						mixer_size -= result;
-						return pullSize - mixer_size;
-					}
-				}
-				mixer_size -= result;
-				assert(mixer_size >= 0);
-			} while (mixer_size != 0);
-			return pullSize;
-		}
-	}
-	error("IMuseDigital::pullProc() Can't match streams");
-}
-
-void IMuseDigital::callback() {
-	Common::StackLock lock(_mutex, "IMuseDigital::callback()");
-	int l = 0;
-
-	if (_pause || !_vm)
-		return;
-
-	for (l = 0; l < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; l++) {
-		if (_track[l]->used) {
-			if (_track[l]->stream2) {
-				if (!_track[l]->handle.isActive() && _track[l]->started) {
-					debug(5, "IMuseDigital::callback() A: stopped sound: %d", _track[l]->soundId);
-					delete _track[l]->stream2;
-					_track[l]->stream2 = NULL;
-					_track[l]->used = false;
-					continue;
-				}
-			}
-
-			if (_track[l]->volFadeUsed) {
-				if (_track[l]->volFadeStep < 0) {
-					if (_track[l]->vol > _track[l]->volFadeDest) {
-						_track[l]->vol += _track[l]->volFadeStep;
-						if (_track[l]->vol < _track[l]->volFadeDest) {
-							_track[l]->vol = _track[l]->volFadeDest;
-							_track[l]->volFadeUsed = false;
-						}
-						if (_track[l]->vol == 0) {
-							_track[l]->toBeRemoved = true;
-						}
-					}
-				} else if (_track[l]->volFadeStep > 0) {
-					if (_track[l]->vol < _track[l]->volFadeDest) {
-						_track[l]->vol += _track[l]->volFadeStep;
-						if (_track[l]->vol > _track[l]->volFadeDest) {
-							_track[l]->vol = _track[l]->volFadeDest;
-							_track[l]->volFadeUsed = false;
-						}
-					}
-				}
-				debug(5, "Fade: sound(%d), Vol(%d)", _track[l]->soundId, _track[l]->vol / 1000);
-			}
-
-			int pan = (_track[l]->pan != 64) ? 2 * _track[l]->pan - 127 : 0;
-			int vol = _track[l]->vol / 1000;
-
-			if (_track[l]->volGroupId == 1)
-				vol = (vol * _volVoice) / 128;
-			if (_track[l]->volGroupId == 2)
-				vol = (vol * _volSfx) / 128;
-			if (_track[l]->volGroupId == 3)
-				vol = (vol * _volMusic) / 128;
-
-			_track[l]->mixerVol = vol;
-			_track[l]->mixerPan = pan;
-
-			if (_vm->_mixer->isReady()) {
-				if (_track[l]->stream2) {
-					if (!_track[l]->started) {
-						_track[l]->started = true;
-						_vm->_mixer->playInputStream(&_track[l]->handle, _track[l]->stream2, false, _track[l]->vol / 1000, _track[l]->pan, -1, false);
-					} else {
-						_vm->_mixer->setChannelVolume(_track[l]->handle, vol);
-						_vm->_mixer->setChannelBalance(_track[l]->handle, pan);
-					}
-				}
-			}
-		}
-	}
-}
-
-#else
-
 void IMuseDigital::callback() {
 	Common::StackLock lock(_mutex, "IMuseDigital::callback()");
 	int l = 0;
@@ -382,7 +211,7 @@
 						_track[l]->trackOffset += result;
 						free(data);
 					}
-					
+
 					if (_sound->isEndOfRegion(_track[l]->soundHandle, _track[l]->curRegion)) {
 						switchToNextRegion(l);
 						if (_track[l]->toBeRemoved)
@@ -395,7 +224,6 @@
 		}
 	}
 }
-#endif
 
 void IMuseDigital::switchToNextRegion(int track) {
 	debug(5, "switchToNextRegion(track:%d)", track);

Index: dimuse.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.h,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -d -r1.44 -r1.45
--- dimuse.h	13 Apr 2004 06:29:34 -0000	1.44
+++ dimuse.h	25 Apr 2004 17:24:16 -0000	1.45
@@ -33,10 +33,6 @@
 
 namespace Scumm {
 
-// enable below for pullmethod data transfer from imuse to sound mixer,
-// it's experimental and buggy
-//#define ENABLE_PULLMETHOD
-
 #define MAX_DIGITAL_TRACKS 8
 #define MAX_DIGITAL_FADETRACKS 8
 
@@ -67,20 +63,14 @@
 		int volGroupId;
 		int iteration;
 		int mod;
-#ifndef ENABLE_PULLMETHOD
 		int32 pullSize;
-#endif
 		int32 mixerFlags;
 		int mixerVol;
 		int mixerPan;
 
 		ImuseDigiSndMgr::soundStruct *soundHandle;
 		PlayingSoundHandle handle;
-#ifndef ENABLE_PULLMETHOD
 		AppendableAudioStream *stream;
-#else
-		CustomProcInputStream *stream;
-#endif
 		AudioStream *stream2;
 
 		Track();
@@ -105,10 +95,6 @@
 	int _curMusicCue;
 
 	static void timer_handler(void *refConf);
-#ifdef ENABLE_PULLMETHOD
-	static int pullProcCallback(void *refCon, CustomProcInputStream *stream, byte *mixerBuffer, int pullSize);
-	int pullProc(CustomProcInputStream *stream, byte *mixerBuffer, int pullSize);
-#endif
 	void callback();
 	void switchToNextRegion(int track);
 	void allocSlot(int priority);

Index: dimuse_track.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_track.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- dimuse_track.cpp	13 Apr 2004 06:29:34 -0000	1.5
+++ dimuse_track.cpp	25 Apr 2004 17:24:17 -0000	1.6
@@ -58,14 +58,9 @@
 				}
 			}
 			assert(track_id != -1);
-#ifndef ENABLE_PULLMETHOD
 			_track[track_id]->stream->finish();
 			_track[track_id]->stream = NULL;
 			_vm->_mixer->stopHandle(_track[track_id]->handle);
-#else
-			_vm->_mixer->stopHandle(_track[track_id]->handle);
-			_track[track_id]->stream = NULL;
-#endif
 			_sound->closeSound(_track[track_id]->soundHandle);
 			_track[track_id]->used = false;
 			assert(!_track[track_id]->handle.isActive());
@@ -144,26 +139,20 @@
 				freq -= (freq % 25);
 
 				_track[l]->iteration = freq * channels;
-#ifndef ENABLE_PULLMETHOD
 				_track[l]->pullSize = _track[l]->iteration;
-#endif
 				if (channels == 2)
 					_track[l]->mixerFlags = SoundMixer::FLAG_STEREO | SoundMixer::FLAG_REVERSE_STEREO;
 
 				if ((bits == 12) || (bits == 16)) {
 					_track[l]->mixerFlags |= SoundMixer::FLAG_16BITS;
 					_track[l]->iteration *= 2;
-#ifndef ENABLE_PULLMETHOD
 					_track[l]->pullSize = _track[l]->iteration;
-#endif
 				} else if (bits == 8) {
 					_track[l]->mixerFlags |= SoundMixer::FLAG_UNSIGNED;
 				} else
 					error("IMuseDigital::startSound(): Can't handle %d bit samples", bits);
 
-#ifndef ENABLE_PULLMETHOD
 				_track[l]->pullSize /= 25;	// We want a "frame rate" of 25 audio blocks per second
-#endif
 			}
 
 			if (input) {
@@ -172,11 +161,7 @@
 				_track[l]->started = false;
 			} else {
 				_track[l]->stream2 = NULL;
-#ifndef ENABLE_PULLMETHOD
 				_track[l]->stream = makeAppendableAudioStream(freq, _track[l]->mixerFlags, 100000);
-#else
-				_track[l]->stream = new CustomProcInputStream(freq, _track[l]->mixerFlags, (CustomProcInputStream::CustomInputProc)pullProcCallback, this);
-#endif
 				_vm->_mixer->playInputStream(&_track[l]->handle, _track[l]->stream, false, _track[l]->vol / 1000, _track[l]->pan, -1);
 				_track[l]->started = true;
 			}
@@ -299,9 +284,7 @@
 	_track[track]->mixerVol = _track[fadeTrack]->mixerVol;
 	_track[track]->mixerPan = _track[fadeTrack]->mixerPan;
 	_track[track]->mod = _track[fadeTrack]->mod;
-#ifndef ENABLE_PULLMETHOD
 	_track[track]->pullSize = _track[fadeTrack]->pullSize;
-#endif
 	_track[track]->used = _track[fadeTrack]->used;
 	_track[track]->toBeRemoved = _track[fadeTrack]->toBeRemoved;
 	_track[track]->started = _track[fadeTrack]->started;
@@ -319,11 +302,7 @@
 		_track[track]->used = false;
 	} else {
 		_track[track]->soundHandle = _sound->cloneSound(_track[fadeTrack]->soundHandle);
-#ifndef ENABLE_PULLMETHOD
 		_track[track]->stream = makeAppendableAudioStream(_sound->getFreq(_track[track]->soundHandle), _track[track]->mixerFlags, 100000);
-#else
-		_track[track]->stream = new CustomProcInputStream(_sound->getFreq(_track[track]->soundHandle), _track[track]->mixerFlags, (CustomProcInputStream::CustomInputProc)pullProcCallback, this);
-#endif
 		_vm->_mixer->playInputStream(&_track[track]->handle, _track[track]->stream, false, _track[track]->vol / 1000, _track[track]->pan, -1);
 		_track[track]->started = true;
 	}





More information about the Scummvm-git-logs mailing list