[Scummvm-cvs-logs] CVS: scummvm/sound rate.cpp,1.5,1.6 resample.cpp,1.4,1.5 rate.h,1.4,1.5

Max Horn fingolfin at users.sourceforge.net
Sun Jul 27 18:51:22 CEST 2003


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

Modified Files:
	rate.cpp resample.cpp rate.h 
Log Message:
added CopyRateConverter (used if inrate == outrate)

Index: rate.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/rate.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- rate.cpp	28 Jul 2003 01:13:31 -0000	1.5
+++ rate.cpp	28 Jul 2003 01:50:46 -0000	1.6
@@ -107,7 +107,7 @@
 		ilast[i] = rate->ilast[i];
 
 	ostart = obuf;
-	oend = obuf + *osamp;
+	oend = obuf + *osamp * 2;
 
 	while (obuf < oend && !input.eof()) {
 
@@ -159,7 +159,7 @@
 	}
 
 the_end:
-	*osamp = obuf - ostart;
+	*osamp = (obuf - ostart) / 2;
 	for (i = 0; i < channels; i++)
 		rate->ilast[i] = ilast[i];
 	return (ST_SUCCESS);

Index: resample.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/resample.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- resample.cpp	28 Jul 2003 01:13:31 -0000	1.4
+++ resample.cpp	28 Jul 2003 01:50:46 -0000	1.5
@@ -268,11 +268,7 @@
 	long Nout = 0;	// The number of bytes we effectively output
 	long Nx;		// The number of bytes we will read from input
 	long Nproc;		// The number of bytes we process to generate Nout output bytes
-#if 1	// FIXME: Hack to generate stereo output
-	const long obufSize = *osamp / 2;
-#else
 	const long obufSize = *osamp;
-#endif
 
 TODO: adjust for the changes made to AudioInputStream; add support for stereo
 initially, could just average the left/right channel -> bad for quality of course,
@@ -394,11 +390,7 @@
 		r->Yposition = 0;
 	
 	// Finally set *osamp to the number of samples we put into the output buffer
-#if 1	// FIXME: Hack to generate stereo output
-	*osamp = numOutSamples * 2;
-#else
 	*osamp = numOutSamples;
-#endif
 
 	return (ST_SUCCESS);
 }

Index: rate.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/rate.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- rate.h	28 Jul 2003 01:13:31 -0000	1.4
+++ rate.h	28 Jul 2003 01:50:46 -0000	1.5
@@ -81,4 +81,24 @@
 	virtual int drain(st_sample_t *obuf, st_size_t *osamp, st_volume_t vol);
 };
 
+class CopyRateConverter : public RateConverter {
+public:
+	virtual int flow(AudioInputStream &input, st_sample_t *obuf, st_size_t *osamp, st_volume_t vol) {
+		int16 tmp;
+		st_size_t len = *osamp;
+		while (!input.eof() && len--) {
+			tmp = input.read() * vol / 256;
+			clampedAdd(*obuf++, tmp);
+			if (input.isStereo())
+				tmp = input.read() * vol / 256;
+			clampedAdd(*obuf++, tmp);
+		}
+		return (ST_SUCCESS);
+	}
+	virtual int drain(st_sample_t *obuf, st_size_t *osamp, st_volume_t vol) {
+		return (ST_SUCCESS);
+	}
+};
+
+
 #endif





More information about the Scummvm-git-logs mailing list