This new test makes sure that a large segment is handled correctly and
also with reasonable performance. The timeout of 10ms is still
relatively slow (on a mid-class laptop it takes 0.001ms currently) but
the test shouldn't fail when e.g. the build machine is under (mild to
heavy) load.
The curves generated by the new code are much smoother than the old
curves and align much better with what (at least gnuplot) says are the
"correct curves". Some values therefore needed updating.
The Values vector should only be accessed from the outside through the
GetValue() function. The Points vector should only be accessed using
the AddPoint(), RemovePoint(), .. functions.
This helps maintain internal invariants (e.g. keeping Points sorted)
and allows for future removal / lazy evaluation of Values.
The size() of the vectors had been accessed from various parts of the
code; the GetLength() (for Values) and GetCount() (for Points) member
functions provide access to this information and are already part of
the public API.
* Refactor of Coorindate and Keyframe optimized for performance (much faster than previously). Also refactored FrameMapper to not use a Keyframe, and to only process frame mapping when needed... speeding up Json loading of project files.
* Fixing FrameMapper linear calculation to match existing Keyframe calculation
* Fixing Keyframe to pass original unit tests, and correctly calculate the Keyframe repeat fractions and deltas.
* Small refactor of time mapped logic in Clip.cpp