Mercurial > hg > svcore
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); |