2 Copyright (C) 2020 Carl Hetherington <cth@carlh.net>
4 This file is part of DCP-o-matic.
6 DCP-o-matic is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 DCP-o-matic is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
21 #include "lib/frame_interval_checker.h"
22 #include <boost/test/unit_test.hpp>
24 using namespace dcpomatic;
26 /** Test of 2D-ish frame timings */
27 BOOST_AUTO_TEST_CASE (frame_interval_checker_test1)
29 FrameIntervalChecker checker;
32 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
33 t += ContentTime(4012);
35 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
36 t += ContentTime(4000);
38 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
39 t += ContentTime(4000);
41 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
42 t += ContentTime(3776);
44 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
45 t += ContentTime(3779);
47 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
48 t += ContentTime(4010);
50 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
51 t += ContentTime(4085);
53 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
54 t += ContentTime(4085);
56 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
57 t += ContentTime(4012);
59 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
60 t += ContentTime(4000);
62 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
63 t += ContentTime(4000);
65 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
66 t += ContentTime(3776);
68 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
69 t += ContentTime(3779);
71 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
72 t += ContentTime(4010);
74 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
75 t += ContentTime(4085);
77 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
78 t += ContentTime(4085);
80 BOOST_CHECK (checker.guess() == FrameIntervalChecker::PROBABLY_NOT_3D);
83 /** Test of 3D-ish frame timings */
84 BOOST_AUTO_TEST_CASE (frame_interval_checker_test2)
86 FrameIntervalChecker checker;
89 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
92 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
93 t += ContentTime(4000);
95 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
98 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
99 t += ContentTime(3776);
100 checker.feed (t, 24);
101 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
102 t += ContentTime(50);
103 checker.feed (t, 24);
104 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
105 t += ContentTime(4010);
106 checker.feed (t, 24);
107 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
109 checker.feed (t, 24);
110 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
111 t += ContentTime(4011);
112 checker.feed (t, 24);
113 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
115 checker.feed (t, 24);
116 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
117 t += ContentTime(4000);
118 checker.feed (t, 24);
119 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
121 checker.feed (t, 24);
122 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
123 t += ContentTime(3776);
124 checker.feed (t, 24);
125 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
126 t += ContentTime(50);
127 checker.feed (t, 24);
128 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
129 t += ContentTime(4010);
130 checker.feed (t, 24);
131 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
133 checker.feed (t, 24);
134 BOOST_CHECK (checker.guess() == FrameIntervalChecker::AGAIN);
135 t += ContentTime(4011);
136 checker.feed (t, 24);
137 BOOST_CHECK (checker.guess() == FrameIntervalChecker::PROBABLY_3D);