[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse.cpp,1.2,1.3 dimuse.h,1.3,1.4

Pawel Kolodziejski aquadran at users.sourceforge.net
Tue Jan 6 21:18:01 CET 2004


Update of /cvsroot/scummvm/scummvm/scumm/imuse_digi
In directory sc8-pr-cvs1:/tmp/cvs-serv31662

Modified Files:
	dimuse.cpp dimuse.h 
Log Message:
added code for ms track position

Index: dimuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- dimuse.cpp	6 Jan 2004 19:47:23 -0000	1.2
+++ dimuse.cpp	7 Jan 2004 05:17:51 -0000	1.3
@@ -223,6 +223,7 @@
 			int bits = 0, freq = 0, channels = 0, mixerFlags = 0;
 
 			if (input) {
+				_track[l].iteration = 1; // ?
 				// Do nothing here, we already have an audio stream
 			} else {
 				if (soundName == NULL)
@@ -236,6 +237,9 @@
 				bits = _sound->getBits(_track[l].soundHandle);
 				channels = _sound->getChannels(_track[l].soundHandle);
 				freq = _sound->getFreq(_track[l].soundHandle);
+				_track[l].iteration = freq * channels;
+				if ((bits == 12) || (bits == 16))
+					_track[l].iteration *= 2;
 
 				if (channels == 2) {
 					mixerFlags = SoundMixer::FLAG_STEREO | SoundMixer::FLAG_REVERSE_STEREO;
@@ -548,28 +552,39 @@
 	// TODO
 }
 
-int32 IMuseDigital::getCurMusicPosInMs() {
-	// TODO
+int32 IMuseDigital::getPosInMs(int soundId) {
+	debug(5, "IMuseDigital::getPosInMs(%d)", soundId);
+	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+		if ((_track[l].idSound == soundId) && _track[l].used) {
+			int32 pos = 1000 * _track[l].trackOffset / _track[l].iteration;
+			return pos;
+		}
+	}
+
 	return 0;
 }
 
+int32 IMuseDigital::getCurMusicPosInMs() {
+	return getPosInMs(_curMusicId);
+}
+
 int32 IMuseDigital::getCurVoiceLipSyncWidth() {
-	// TODO
+	int32 pos = getPosInMs(kTalkSoundID);
 	return _scumm->_rnd.getRandomNumber(255);
 }
 
 int32 IMuseDigital::getCurVoiceLipSyncHeight() {
-	// TODO
+	int32 pos = getPosInMs(kTalkSoundID);
 	return _scumm->_rnd.getRandomNumber(255);
 }
 
 int32 IMuseDigital::getCurMusicLipSyncWidth() {
-	// TODO
+	int32 pos = getPosInMs(_curMusicId);
 	return _scumm->_rnd.getRandomNumber(255);
 }
 
 int32 IMuseDigital::getCurMusicLipSyncHeight() {
-	// TODO
+	int32 pos = getPosInMs(_curMusicId);
 	return _scumm->_rnd.getRandomNumber(255);
 }
 

Index: dimuse.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- dimuse.h	6 Jan 2004 19:47:23 -0000	1.3
+++ dimuse.h	7 Jan 2004 05:17:51 -0000	1.4
@@ -55,6 +55,7 @@
 		int curRegion;
 		int curHookId;
 		int soundGroup;
+		int iteration;
 		void *soundHandle;
 		int32 pullSize;
 		int mod;
@@ -103,6 +104,7 @@
 	void pause(bool pause);
 	void parseScriptCmds(int a, int b, int c, int d, int e, int f, int g, int h);
 	int getSoundStatus(int sound) const;
+	int32 getPosInMs(int soundId);
 	int32 getCurMusicPosInMs();
 	int32 getCurVoiceLipSyncWidth();
 	int32 getCurVoiceLipSyncHeight();





More information about the Scummvm-git-logs mailing list