projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New test.
[ardour.git]
/
libs
/
ardour
/
interpolation.cc
diff --git
a/libs/ardour/interpolation.cc
b/libs/ardour/interpolation.cc
index 1393d8aae81e659c1e4c87b9954307e44c5ce8b3..20ab584885e7f19dd6bd348c2648b5d429c08c1b 100644
(file)
--- a/
libs/ardour/interpolation.cc
+++ b/
libs/ardour/interpolation.cc
@@
-6,11
+6,11
@@
using namespace ARDOUR;
using namespace ARDOUR;
-
nframes
_t
-LinearInterpolation::interpolate (int channel,
nframes
_t nframes, Sample *input, Sample *output)
+
framecnt
_t
+LinearInterpolation::interpolate (int channel,
framecnt
_t nframes, Sample *input, Sample *output)
{
// index in the input buffers
{
// index in the input buffers
-
nframes
_t i = 0;
+
framecnt
_t i = 0;
double acceleration;
double distance = 0.0;
double acceleration;
double distance = 0.0;
@@
-22,7
+22,7
@@
LinearInterpolation::interpolate (int channel, nframes_t nframes, Sample *input,
}
distance = phase[channel];
}
distance = phase[channel];
- for (
nframes
_t outsample = 0; outsample < nframes; ++outsample) {
+ for (
framecnt
_t outsample = 0; outsample < nframes; ++outsample) {
i = floor(distance);
Sample fractional_phase_part = distance - i;
if (fractional_phase_part >= 1.0) {
i = floor(distance);
Sample fractional_phase_part = distance - i;
if (fractional_phase_part >= 1.0) {
@@
-45,11
+45,11
@@
LinearInterpolation::interpolate (int channel, nframes_t nframes, Sample *input,
return i;
}
return i;
}
-
nframes
_t
-CubicInterpolation::interpolate (int channel,
nframes
_t nframes, Sample *input, Sample *output)
+
framecnt
_t
+CubicInterpolation::interpolate (int channel,
framecnt
_t nframes, Sample *input, Sample *output)
{
// index in the input buffers
{
// index in the input buffers
-
nframes
_t i = 0;
+
framecnt
_t i = 0;
double acceleration;
double distance = 0.0;
double acceleration;
double distance = 0.0;
@@
-57,7
+57,7
@@
CubicInterpolation::interpolate (int channel, nframes_t nframes, Sample *input,
if (_speed != _target_speed) {
acceleration = _target_speed - _speed;
} else {
if (_speed != _target_speed) {
acceleration = _target_speed - _speed;
} else {
- acceleration = 0.0;
+
acceleration = 0.0;
}
distance = phase[channel];
}
distance = phase[channel];
@@
-73,13
+73,13
@@
CubicInterpolation::interpolate (int channel, nframes_t nframes, Sample *input,
}
/* keep this condition out of the inner loop */
}
/* keep this condition out of the inner loop */
-
+
if (input && output) {
Sample inm1;
if (input && output) {
Sample inm1;
-
+
if (floor (distance) == 0.0) {
if (floor (distance) == 0.0) {
- /* best guess for the fake point we have to add to be able to interpolate at i == 0:
+ /* best guess for the fake point we have to add to be able to interpolate at i == 0:
.... maintain slope of first actual segment ...
*/
inm1 = input[i] - (input[i+1] - input[i]);
.... maintain slope of first actual segment ...
*/
inm1 = input[i] - (input[i+1] - input[i]);
@@
-87,7
+87,7
@@
CubicInterpolation::interpolate (int channel, nframes_t nframes, Sample *input,
inm1 = input[i-1];
}
inm1 = input[i-1];
}
- for (
nframes
_t outsample = 0; outsample < nframes; ++outsample) {
+ for (
framecnt
_t outsample = 0; outsample < nframes; ++outsample) {
float f = floor (distance);
float fractional_phase_part = distance - f;
float f = floor (distance);
float fractional_phase_part = distance - f;
@@
-106,7
+106,7
@@
CubicInterpolation::interpolate (int channel, nframes_t nframes, Sample *input,
if (fractional_phase_part >= 1.0) {
fractional_phase_part -= 1.0;
++i;
if (fractional_phase_part >= 1.0) {
fractional_phase_part -= 1.0;
++i;
- }
+ }
// Cubically interpolate into the output buffer: keep this inlined for speed and rely on compiler
// optimization to take care of the rest
// Cubically interpolate into the output buffer: keep this inlined for speed and rely on compiler
// optimization to take care of the rest
@@
-124,7
+124,7
@@
CubicInterpolation::interpolate (int channel, nframes_t nframes, Sample *input,
/* not sure that this is ever utilized - it implies that one of the input/output buffers is missing */
/* not sure that this is ever utilized - it implies that one of the input/output buffers is missing */
- for (
nframes
_t outsample = 0; outsample < nframes; ++outsample) {
+ for (
framecnt
_t outsample = 0; outsample < nframes; ++outsample) {
distance += _speed + acceleration;
}
}
distance += _speed + acceleration;
}
}