summaryrefslogtreecommitdiff
path: root/src/lib/util.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-11-05 15:58:50 +0000
committerCarl Hetherington <cth@carlh.net>2013-11-05 15:58:50 +0000
commitf75cc4ebbffea7a7953af20e8a2ea124767bf949 (patch)
treeb483ddcf71280b73bdc11bc4865748e76b3857ff /src/lib/util.cc
parent994ef64ef0cecd69898ab81432e5c5efef7ef97b (diff)
Various fixes to make tests pass again.
Diffstat (limited to 'src/lib/util.cc')
-rw-r--r--src/lib/util.cc15
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);