comparison base/RealTime.cpp @ 378:a38cd7823cb2

* PortAudio driver: do not specify frames per buffer, let PA decide * Remove old non-RubberBand time stretcher -- it doesn't work with varying buffer sizes such as the PA driver may now be using * Rewrite getCurrentPlayingFrame for greater correctness when using long buffer sizes (interpolating according to audio stream timestamp) * Several changes to make the timestretch management RT safe(r)
author Chris Cannam
date Fri, 08 Feb 2008 17:51:15 +0000
parents d7c41483af8f
children 0f0f08c22552
comparison
equal deleted inserted replaced
377:166c22eff678 378:a38cd7823cb2
270 double nsecdiv = (double(nsec) + ONE_BILLION * double(secrem)) / d; 270 double nsecdiv = (double(nsec) + ONE_BILLION * double(secrem)) / d;
271 271
272 return RealTime(secdiv, int(nsecdiv + 0.5)); 272 return RealTime(secdiv, int(nsecdiv + 0.5));
273 } 273 }
274 274
275 RealTime
276 RealTime::operator*(double m) const
277 {
278 double t = (double(nsec) / ONE_BILLION) * m;
279 t += sec * m;
280 return fromSeconds(t);
281 }
282
283 RealTime
284 RealTime::operator/(double d) const
285 {
286 double t = (double(nsec) / ONE_BILLION) / d;
287 t += sec / d;
288 return fromSeconds(t);
289 }
290
275 double 291 double
276 RealTime::operator/(const RealTime &r) const 292 RealTime::operator/(const RealTime &r) const
277 { 293 {
278 double lTotal = double(sec) * ONE_BILLION + double(nsec); 294 double lTotal = double(sec) * ONE_BILLION + double(nsec);
279 double rTotal = double(r.sec) * ONE_BILLION + double(r.nsec); 295 double rTotal = double(r.sec) * ONE_BILLION + double(r.nsec);