diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-11-02 00:32:33 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-11-02 00:32:33 +0000 |
| commit | 3c5c59b5244d8948f05a3251ec14cb20fbcc0d7c (patch) | |
| tree | 42ed0027aa240f492c4428afc8109428f36c962a | |
| parent | c9338a9960d363c86020dcb17fef7de40b72c061 (diff) | |
Forward-port time rounding fix from 0.x.
| -rw-r--r-- | src/dcp_time.cc | 2 | ||||
| -rw-r--r-- | test/dcp_time_test.cc | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/dcp_time.cc b/src/dcp_time.cc index e2803a53..9ce36764 100644 --- a/src/dcp_time.cc +++ b/src/dcp_time.cc @@ -56,8 +56,8 @@ Time::Time (int64_t ticks) void Time::set (double ss) { - t = (int (round (ss * 1000)) % 1000) / 4; s = floor (ss); + t = int (round (1000 * (ss - s) / 4)); if (s >= 60) { m = s / 60; diff --git a/test/dcp_time_test.cc b/test/dcp_time_test.cc index 2a5bca1b..9f0072ab 100644 --- a/test/dcp_time_test.cc +++ b/test/dcp_time_test.cc @@ -59,4 +59,17 @@ BOOST_AUTO_TEST_CASE (dcp_time) BOOST_CHECK_EQUAL (dcp::Time (4128391203LL).to_ticks(), 4128391203LL); BOOST_CHECK_EQUAL (dcp::Time (60000).to_ticks(), 60000); + + /* Check rounding; 3424 is 142.666666666... seconds or 0.166666666... ticks */ + a = dcp::Time (3424, 24); + BOOST_CHECK_EQUAL (a.h, 0); + BOOST_CHECK_EQUAL (a.m, 2); + BOOST_CHECK_EQUAL (a.s, 22); + BOOST_CHECK_EQUAL (a.t, 167); + + a = dcp::Time (3425, 24); + BOOST_CHECK_EQUAL (a.h, 0); + BOOST_CHECK_EQUAL (a.m, 2); + BOOST_CHECK_EQUAL (a.s, 22); + BOOST_CHECK_EQUAL (a.t, 177); } |
