Some improvements to performance with crossfades: don't recompute a whole track's...
[ardour.git] / libs / ardour / session_process.cc
index d389f326964841a3805eb1255255a9a6f4af753b..2dd68744b4266c390e32a6e04a0791bcd5778d73 100644 (file)
@@ -325,9 +325,9 @@ Session::process_with_events (nframes_t nframes)
        if (_transport_speed == 1.0) {
                frames_moved = (long) nframes;
        } else {                
-               interpolation.set_target_speed (_target_transport_speed);
-               interpolation.set_speed (_transport_speed);
-               frames_moved = (long) interpolation.interpolate (nframes, 0, 0);
+               interpolation.set_target_speed (fabs(_target_transport_speed));
+               interpolation.set_speed (fabs(_transport_speed));
+               frames_moved = (long) interpolation.interpolate (0, nframes, 0, 0);
        }
 
        end_frame = _transport_frame + (nframes_t)frames_moved;
@@ -846,9 +846,9 @@ Session::process_without_events (nframes_t nframes)
        if (_transport_speed == 1.0) {
                frames_moved = (long) nframes;
        } else {                
-               interpolation.set_target_speed (_target_transport_speed);
-               interpolation.set_speed (_transport_speed);
-               frames_moved = (long) interpolation.interpolate (nframes, 0, 0);
+               interpolation.set_target_speed (fabs(_target_transport_speed));
+               interpolation.set_speed (fabs(_transport_speed));
+               frames_moved = (long) interpolation.interpolate (0, nframes, 0, 0);
        }
 
        if (process_routes (nframes)) {