diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-03 17:41:49 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-03 17:41:49 -0400 |
commit | d074bc586e494d7dd83d415a487195a477095a4f (patch) | |
tree | 8748ae1d85ef796449dcd30cff6ba6f2196a4704 /libs/ardour/interpolation.cc | |
parent | 6bcdf4f0f106d0b83ed7f221f546c132585e19e7 (diff) | |
parent | 91b027a4a0c0e90398b9c6dbb5611b2acc4f2f8e (diff) |
Merge branch 'master' into audioengine
Diffstat (limited to 'libs/ardour/interpolation.cc')
-rw-r--r-- | libs/ardour/interpolation.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/libs/ardour/interpolation.cc b/libs/ardour/interpolation.cc index fccc805cb0..bccaa45553 100644 --- a/libs/ardour/interpolation.cc +++ b/libs/ardour/interpolation.cc @@ -135,17 +135,18 @@ CubicInterpolation::interpolate (int channel, framecnt_t nframes, Sample *input, inm1 = input[i]; } - } else { - - /* not sure that this is ever utilized - it implies that one of the input/output buffers is missing */ + i = floor(distance); + phase[channel] = distance - floor(distance); + } else { + /* used to calculate play-distance with acceleration (silent roll) + * (use same algorithm as real playback for identical rounding/floor'ing) + */ for (framecnt_t outsample = 0; outsample < nframes; ++outsample) { distance += _speed + acceleration; } + i = floor(distance); } - i = floor(distance); - phase[channel] = distance - floor(distance); - return i; } |