summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/dcpomatic_time.h8
-rw-r--r--test/dcpomatic_time_test.cc3
2 files changed, 7 insertions, 4 deletions
diff --git a/src/lib/dcpomatic_time.h b/src/lib/dcpomatic_time.h
index 5f00807bd..204af3c1e 100644
--- a/src/lib/dcpomatic_time.h
+++ b/src/lib/dcpomatic_time.h
@@ -117,12 +117,12 @@ public:
* at some sampling rate.
* @param r Sampling rate.
*/
- Time<S, O> ceil (float r) const {
- return Time<S, O> (llrint (HZ * frames_ceil(r) / double(r)));
+ Time<S, O> ceil (double r) const {
+ return Time<S, O> (llrint (HZ * frames_ceil(r) / r));
}
- Time<S, O> floor (float r) const {
- return Time<S, O> (llrint (HZ * frames_floor(r) / double(r)));
+ Time<S, O> floor (double r) const {
+ return Time<S, O> (llrint (HZ * frames_floor(r) / r));
}
double seconds () const {
diff --git a/test/dcpomatic_time_test.cc b/test/dcpomatic_time_test.cc
index 94d515035..1637738ad 100644
--- a/test/dcpomatic_time_test.cc
+++ b/test/dcpomatic_time_test.cc
@@ -316,6 +316,9 @@ BOOST_AUTO_TEST_CASE (dcpomatic_time_ceil_test)
/* Check that rounding up to non-integer frame rates works */
BOOST_CHECK_EQUAL (DCPTime(45312).ceil(29.976).get(), 48038);
+
+ /* Check another tricky case that used to fail */
+ BOOST_CHECK_EQUAL (DCPTime(212256039).ceil(23.976).get(), 212256256);
}
/* Straightforward test of DCPTime::floor */