summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-07-15 14:20:23 +0100
committerCarl Hetherington <cth@carlh.net>2013-07-15 14:20:23 +0100
commitc044402e6c0262b4813ffee6e8df53469cef8487 (patch)
treeda4ec232521cce993df40fd337764ac93314d0a8 /src
parentbbd20953701383dddc4c45d2ab317d55845d8b89 (diff)
Decide best DCP rate based on the largest difference between a particular content's frame rate and the DCP one, rather than a sum of all the differences.
Diffstat (limited to 'src')
-rw-r--r--src/lib/playlist.cc5
-rw-r--r--src/lib/video_content.h3
2 files changed, 5 insertions, 3 deletions
diff --git a/src/lib/playlist.cc b/src/lib/playlist.cc
index 9e7f7f5f5..703a14663 100644
--- a/src/lib/playlist.cc
+++ b/src/lib/playlist.cc
@@ -221,7 +221,7 @@ Playlist::best_dcp_frame_rate () const
candidates.push_back (FrameRateCandidate (float (*i) * 2, *i));
}
- /* Pick the best one, bailing early if we hit an exact match */
+ /* Pick the best one */
float error = std::numeric_limits<float>::max ();
optional<FrameRateCandidate> best;
list<FrameRateCandidate>::iterator i = candidates.begin();
@@ -234,7 +234,8 @@ Playlist::best_dcp_frame_rate () const
continue;
}
- this_error += fabs (i->source - vc->video_frame_rate ());
+ /* Use the largest difference between DCP and source as the "error" */
+ this_error = max (this_error, float (fabs (i->source - vc->video_frame_rate ())));
}
if (this_error < error) {
diff --git a/src/lib/video_content.h b/src/lib/video_content.h
index 5b9a17b57..697a0ecc3 100644
--- a/src/lib/video_content.h
+++ b/src/lib/video_content.h
@@ -88,7 +88,8 @@ protected:
private:
friend class ffmpeg_pts_offset_test;
- friend class best_dcp_frame_rate_test;
+ friend class best_dcp_frame_rate_test_single;
+ friend class best_dcp_frame_rate_test_double;
friend class audio_sampling_rate_test;
libdcp::Size _video_size;