summaryrefslogtreecommitdiff
path: root/test/content_test.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-05-20 20:20:47 +0200
committerCarl Hetherington <cth@carlh.net>2020-05-20 21:56:28 +0200
commit48841aa4a4aa4704e1e054b294bac23996be6dd0 (patch)
treecad367f33783a03f9216fe59d641c73e2043b5c9 /test/content_test.cc
parentce29d071ad8b420d3d4ba6d06487b3513cc86bef (diff)
Round the length of video-containing content to the nearest frame.
It seems reasonable, and is in the spirit of how positions are rounded to frame boundaries. It also fixes problems with unnecessary frames of black being created at the end of trimmed files, where there can be rounding-error-based confusion about where the content stops and the black begins.
Diffstat (limited to 'test/content_test.cc')
-rw-r--r--test/content_test.cc28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/content_test.cc b/test/content_test.cc
index fb66b2e08..1e143f8e4 100644
--- a/test/content_test.cc
+++ b/test/content_test.cc
@@ -122,3 +122,31 @@ BOOST_AUTO_TEST_CASE (content_test3)
BOOST_CHECK (content->trim_start() == ContentTime::from_seconds (15.0 / 25.0));
}
+
+
+/** Content containing video will have its length rounded to the nearest video frame */
+BOOST_AUTO_TEST_CASE (content_test4)
+{
+ shared_ptr<Film> film = new_test_film2 ("content_test4");
+
+ shared_ptr<Content> video = content_factory("test/data/count300bd24.m2ts").front();
+ film->examine_and_add_content (video);
+ BOOST_REQUIRE (!wait_for_jobs());
+
+ video->set_trim_end (dcpomatic::ContentTime(3000));
+ BOOST_CHECK (video->length_after_trim(film) == DCPTime::from_frames(299, 24));
+}
+
+
+/** Content containing no video will not have its length rounded to the nearest video frame */
+BOOST_AUTO_TEST_CASE (content_test5)
+{
+ shared_ptr<Film> film = new_test_film2 ("content_test5");
+
+ shared_ptr<Content> audio = content_factory("test/data/sine_16_48_220_10.wav").front();
+ film->examine_and_add_content (audio);
+ BOOST_REQUIRE (!wait_for_jobs());
+
+ audio->set_trim_end (dcpomatic::ContentTime(3000));
+ BOOST_CHECK (audio->length_after_trim(film) == DCPTime(957000));
+}