[Scummvm-cvs-logs] CVS: scummvm/sound resample.cpp,1.6,1.7 rate.h,1.15,1.16
Max Horn
fingolfin at users.sourceforge.net
Mon Aug 4 17:30:10 CEST 2003
Update of /cvsroot/scummvm/scummvm/sound
In directory sc8-pr-cvs1:/tmp/cvs-serv22657
Modified Files:
resample.cpp rate.h
Log Message:
get rid of calls to the obsolete AudioInputStream::size method
Index: resample.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/resample.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- resample.cpp 28 Jul 2003 18:00:59 -0000 1.6
+++ resample.cpp 5 Aug 2003 00:29:37 -0000 1.7
@@ -313,16 +313,15 @@
st_fail("resample: Can not handle this sample rate change. Nx not positive: %d", Nx);
return (ST_EOF);
}
-
- // Nx is the number of bytes we'd like to read, but of course that is limited
- // by the number of bytes actually available...
- if (Nx > (long)input.size())
- Nx = (long)input.size();
- fprintf(stderr,"Nx %d\n",Nx);
- // Read in Nx bytes
- for (i = r->Xread; i < Nx + r->Xread ; i++)
+ // Read in up to Nx bytes
+ for (i = r->Xread; i < Nx + r->Xread && !input.eos(); i++) {
r->X[i] = (Float)input.read();
+ }
+ Nx = i - r->Xread; // Compute how many samples we actually read
+
+ fprintf(stderr,"Nx %d\n",Nx);
+
last = Nx + r->Xread; // 'last' is the idx after the last valid byte in X (i.e. number of bytes are in buffer X right now)
@@ -409,20 +408,19 @@
*/
int st_resample_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp, st_volume_t vol) {
resample_t r = (resample_t) effp->priv;
- long isamp_res, osamp_res;
+ long osamp_res;
st_sample_t *Obuf;
int rc;
/*fprintf(stderr,"Xoff %d, Xt %d <--- DRAIN\n",r->Xoff, r->Xt);*/
/* stuff end with Xoff zeros */
- isamp_res = r->Xoff;
+ ZeroInputStream zero(r->Xoff);
osamp_res = *osamp;
Obuf = obuf;
- while (isamp_res > 0 && osamp_res > 0) {
+ while (!zero.eos() && osamp_res > 0) {
st_sample_t Osamp;
Osamp = osamp_res;
- ZeroInputStream zero(isamp_res);
rc = st_resample_flow(effp, zero, Obuf, (st_size_t *) & Osamp, vol);
if (rc)
return rc;
@@ -430,12 +428,11 @@
isamp_res,osamp_res,Isamp,Osamp);*/
Obuf += Osamp;
osamp_res -= Osamp;
- isamp_res = zero.size();
}
*osamp -= osamp_res;
fprintf(stderr,"DRAIN osamp %d\n", *osamp);
- if (isamp_res)
- st_warn("drain overran obuf by %d\n", isamp_res);
+ if (!zero.eos())
+ st_warn("drain overran obuf\n");
fflush(stderr);
return (ST_SUCCESS);
}
@@ -738,6 +735,17 @@
#pragma mark -
+class ResampleRateConverter : public RateConverter {
+protected:
+ eff_struct effp;
+public:
+ ResampleRateConverter(st_rate_t inrate, st_rate_t outrate, int quality);
+ ~ResampleRateConverter();
+ virtual int flow(AudioInputStream &input, st_sample_t *obuf, st_size_t osamp, st_volume_t vol);
+ virtual int drain(st_sample_t *obuf, st_size_t osamp, st_volume_t vol);
+};
+
+
ResampleRateConverter::ResampleRateConverter(st_rate_t inrate, st_rate_t outrate, int quality) {
// FIXME: quality is for now a nasty hack.
// Valid values are 0,1,2,3 (everything else is treated like 0 for now)
@@ -755,11 +763,11 @@
st_resample_stop(&effp);
}
-int ResampleRateConverter::flow(AudioInputStream &input, st_sample_t *obuf, st_size_t *osamp, st_volume_t vol) {
- return st_resample_flow(&effp, input, obuf, osamp, vol);
+int ResampleRateConverter::flow(AudioInputStream &input, st_sample_t *obuf, st_size_t osamp, st_volume_t vol) {
+ return st_resample_flow(&effp, input, obuf, &osamp, vol);
}
-int ResampleRateConverter::drain(st_sample_t *obuf, st_size_t *osamp, st_volume_t vol) {
- return st_resample_drain(&effp, obuf, osamp, vol);
+int ResampleRateConverter::drain(st_sample_t *obuf, st_size_t osamp, st_volume_t vol) {
+ return st_resample_drain(&effp, obuf, &osamp, vol);
}
Index: rate.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/rate.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- rate.h 2 Aug 2003 19:09:52 -0000 1.15
+++ rate.h 5 Aug 2003 00:29:37 -0000 1.16
@@ -72,18 +72,6 @@
virtual int drain(st_sample_t *obuf, st_size_t osamp, st_volume_t vol) = 0;
};
-/*
-class ResampleRateConverter : public RateConverter {
-protected:
- eff_struct effp;
-public:
- ResampleRateConverter(st_rate_t inrate, st_rate_t outrate, int quality);
- ~ResampleRateConverter();
- virtual int flow(AudioInputStream &input, st_sample_t *obuf, st_size_t osamp, st_volume_t vol);
- virtual int drain(st_sample_t *obuf, st_size_t osamp, st_volume_t vol);
-};
-*/
-
RateConverter *makeRateConverter(st_rate_t inrate, st_rate_t outrate, bool stereo, bool reverseStereo = false);
#endif
More information about the Scummvm-git-logs
mailing list