[Scummvm-cvs-logs] CVS: scummvm/sound rate.cpp,1.11,1.12

Max Horn fingolfin at users.sourceforge.net
Thu Jul 31 12:09:19 CEST 2003


Update of /cvsroot/scummvm/scummvm/sound
In directory sc8-pr-cvs1:/tmp/cvs-serv18420

Modified Files:
	rate.cpp 
Log Message:
icur was not being saved between rate conversion calls

Index: rate.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/rate.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- rate.cpp	31 Jul 2003 18:35:01 -0000	1.11
+++ rate.cpp	31 Jul 2003 19:08:57 -0000	1.12
@@ -19,6 +19,7 @@
 #include "rate.h"
 
 #include <math.h>
+
 /*
  * Linear Interpolation.
  *
@@ -44,15 +45,19 @@
 
 typedef struct ratestuff
 {
-	unsigned long opos_frac;  /* fractional position of the output stream in input stream unit */
-	unsigned long opos;
+	/** fractional position of the output stream in input stream unit */
+	unsigned long opos, opos_frac;
 
-	unsigned long opos_inc_frac;  /* fractional position increment in the output stream */
-	unsigned long opos_inc;
+	/** fractional position increment in the output stream */
+	unsigned long opos_inc, opos_inc_frac;
 
-	unsigned long ipos;	 /* position in the input stream (integer) */
+	/** position in the input stream (integer) */
+	unsigned long ipos;
 
-	st_sample_t ilast[2]; /* last sample(s) in the input stream (left/right channel) */
+	/** last sample(s) in the input stream (left/right channel) */
+	st_sample_t ilast[2];
+	/** current sample(s) in the input stream (left/right channel) */
+	st_sample_t icur[2];
 } *rate_t;
 
 /*
@@ -84,8 +89,9 @@
 
 	rate->ipos = 0;
 
-	rate->ilast[0] = 0;
-	rate->ilast[1] = 0;
+	rate->ilast[0] = rate->ilast[1] = 0;
+	rate->icur[0] = rate->icur[1] = 0;
+
 	return (ST_SUCCESS);
 }
 
@@ -102,8 +108,11 @@
 	unsigned long tmp;
 
 	ilast[0] = rate->ilast[0];
-	if (stereo)
+	icur[0] = rate->icur[0];
+	if (stereo) {
 		ilast[1] = rate->ilast[1];
+		icur[1] = rate->icur[1];
+	}
 
 	ostart = obuf;
 	oend = obuf + *osamp * 2;
@@ -171,8 +180,11 @@
 the_end:
 	*osamp = (obuf - ostart) / 2;
 	rate->ilast[0] = ilast[0];
-	if (stereo)
+	rate->icur[0] = icur[0];
+	if (stereo) {
 		rate->ilast[1] = ilast[1];
+		rate->icur[1] = icur[1];
+	}
 	return (ST_SUCCESS);
 }
 





More information about the Scummvm-git-logs mailing list