[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