diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-11-05 15:58:50 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-11-05 15:58:50 +0000 |
| commit | f75cc4ebbffea7a7953af20e8a2ea124767bf949 (patch) | |
| tree | b483ddcf71280b73bdc11bc4865748e76b3857ff /src/lib/util.cc | |
| parent | 994ef64ef0cecd69898ab81432e5c5efef7ef97b (diff) | |
Various fixes to make tests pass again.
Diffstat (limited to 'src/lib/util.cc')
| -rw-r--r-- | src/lib/util.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/lib/util.cc b/src/lib/util.cc index 15efcc099..96b834fcc 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -763,12 +763,17 @@ FrameRateConversion::FrameRateConversion (float source, int dcp) , repeat (1) , change_speed (false) { - if (source > (dcp * 2)) { + if (fabs (source / 2.0 - dcp) < fabs (source - dcp)) { + /* The difference between source and DCP frame rate will be lower + (i.e. better) if we skip. + */ skip = true; - } - - if (source < dcp) { - repeat = floor (dcp / source); + } else if (fabs (source * 2 - dcp) < fabs (source - dcp)) { + /* The difference between source and DCP frame rate would be better + if we repeated each frame once; it may be better still if we + repeated more than once. Work out the required repeat. + */ + repeat = round (dcp / source); } change_speed = !about_equal (source * factor(), dcp); |
