[Scummvm-cvs-logs] SF.net SVN: scummvm: [27780] scummvm/trunk/sound/rate.cpp

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Sat Jun 30 02:03:32 CEST 2007


Revision: 27780
          http://scummvm.svn.sourceforge.net/scummvm/?rev=27780&view=rev
Author:   fingolfin
Date:     2007-06-29 17:03:32 -0700 (Fri, 29 Jun 2007)

Log Message:
-----------
Tweak LinearRateConverter code so that opos is in the range [0,1[ instead of [-1,0[ when entering the interpolation loop (this allows us to get rid of '& FRAC_LO_MASK')

Modified Paths:
--------------
    scummvm/trunk/sound/rate.cpp

Modified: scummvm/trunk/sound/rate.cpp
===================================================================
--- scummvm/trunk/sound/rate.cpp	2007-06-29 23:33:16 UTC (rev 27779)
+++ scummvm/trunk/sound/rate.cpp	2007-06-30 00:03:32 UTC (rev 27780)
@@ -223,7 +223,7 @@
 	while (obuf < oend) {
 
 		// read enough input samples so that opos < 0
-		while (0 <= opos) {
+		while (FRAC_ONE <= opos) {
 			// Check if we have to refill the buffer
 			if (inLen == 0) {
 				inPtr = inBuf;
@@ -243,13 +243,12 @@
 
 		// Loop as long as the outpos trails behind, and as long as there is
 		// still space in the output buffer.
-		while (0 > opos && obuf < oend) {
+		while (opos < FRAC_ONE && obuf < oend) {
 			// interpolate
 			st_sample_t out0, out1;
-			const frac_t scale = (opos & FRAC_LO_MASK);
-			out0 = (st_sample_t)(ilast0 + (((icur0 - ilast0) * scale + FRAC_HALF) >> FRAC_BITS));
+			out0 = (st_sample_t)(ilast0 + (((icur0 - ilast0) * opos + FRAC_HALF) >> FRAC_BITS));
 			out1 = (stereo ?
-						  (st_sample_t)(ilast1 + (((icur1 - ilast1) * scale + FRAC_HALF) >> FRAC_BITS)) :
+						  (st_sample_t)(ilast1 + (((icur1 - ilast1) * opos + FRAC_HALF) >> FRAC_BITS)) :
 						  out0);
 
 			// output left channel


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list