| 400 | } |
| 401 | |
| 402 | std::pair<double, double> ScrubbingPlaybackPolicy::AdvancedTrackTime( |
| 403 | PlaybackSchedule &schedule, double trackTime, size_t nSamples ) |
| 404 | { |
| 405 | auto realDuration = nSamples / mRate; |
| 406 | auto result = trackTime + realDuration * mScrubSpeed; |
| 407 | bool discontinuity = nSamples > 0 && |
| 408 | mUntilDiscontinuity > 0 && |
| 409 | 0 == (mUntilDiscontinuity -= std::min(mUntilDiscontinuity, nSamples)); |
| 410 | if (discontinuity) |
| 411 | return { mOldEndTime, mNewStartTime }; |
| 412 | else |
| 413 | return { result, result }; |
| 414 | } |
| 415 | |
| 416 | bool ScrubbingPlaybackPolicy::RepositionPlayback( |
| 417 | PlaybackSchedule &schedule, const Mixers &playbackMixers, |