interpolation.cc/.h: Spline-Bugfixes: Crash bug at tempos close to 0, wrong calculati...
[ardour.git] / libs / ardour / session_process.cc
index 5bd1166fc6f05f4bb6fce80c3ed8505d4d673521..8ab43df7212a7568547f253d85ff5889ed258e0e 100644 (file)
@@ -322,14 +322,12 @@ Session::process_with_events (nframes_t nframes)
                return;
        }
 
-       /// TODO: Figure out what happens to phi and phase, if transport speed momentarily becomes
-       /// 1.0 eg. during the adjustments of a slave. If that is a bug, then AudioDiskstream::process
-       /// is very likely broken too
        if (_transport_speed == 1.0) {
                frames_moved = (long) nframes;
        } else {                
-               frames_moved = (long) AudioDiskstream::
-                       calculate_varispeed_playback_distance(nframes, phase, phi, target_phi); 
+               interpolation.set_target_speed (_target_transport_speed);
+               interpolation.set_speed (_transport_speed);
+               frames_moved = (long) interpolation.interpolate (0, nframes, 0, 0);
        }
 
        end_frame = _transport_frame + (nframes_t)frames_moved;
@@ -845,14 +843,12 @@ Session::process_without_events (nframes_t nframes)
 
        prepare_diskstreams ();
        
-       /// TODO: Figure out what happens to phi and phase, if transport speed momentarily becomes
-       /// 1.0 eg. during the adjustments of a slave. If that is a bug, then AudioDiskstream::process
-       /// is very likely broken too
        if (_transport_speed == 1.0) {
                frames_moved = (long) nframes;
        } else {                
-               frames_moved = (long) AudioDiskstream::
-                       calculate_varispeed_playback_distance(nframes, phase, phi, target_phi); 
+               interpolation.set_target_speed (_target_transport_speed);
+               interpolation.set_speed (_transport_speed);
+               frames_moved = (long) interpolation.interpolate (0, nframes, 0, 0);
        }
 
        if (process_routes (nframes)) {