+ film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TST"));
+ film->set_three_d (true);
+ film->make_dcp ();
+ film->write_metadata ();
+
+ BOOST_REQUIRE (!wait_for_jobs ());
+}
+
+/** Basic sanity check of 3D_LEFT and 3D_RIGHT; at the moment this is just to make sure
+ * that such a transcode completes without error.
+ */
+BOOST_AUTO_TEST_CASE (threed_test3)
+{
+ shared_ptr<Film> film = new_test_film2 ("threed_test3");
+ shared_ptr<FFmpegContent> L (new FFmpegContent("test/data/test.mp4"));
+ film->examine_and_add_content (L);
+ shared_ptr<FFmpegContent> R (new FFmpegContent("test/data/test.mp4"));
+ film->examine_and_add_content (R);
+ BOOST_REQUIRE (!wait_for_jobs());
+
+ L->video->set_frame_type (VIDEO_FRAME_TYPE_3D_LEFT);
+ R->video->set_frame_type (VIDEO_FRAME_TYPE_3D_RIGHT);
+
+ film->set_three_d (true);
+ film->make_dcp ();
+ film->write_metadata ();
+
+ BOOST_REQUIRE (!wait_for_jobs ());
+}
+
+BOOST_AUTO_TEST_CASE (threed_test4)
+{
+ shared_ptr<Film> film = new_test_film2 ("threed_test4");
+ shared_ptr<FFmpegContent> L (new FFmpegContent(TestPaths::private_data / "LEFT_TEST_DCP3D4K.mov"));
+ film->examine_and_add_content (L);
+ shared_ptr<FFmpegContent> R (new FFmpegContent(TestPaths::private_data / "RIGHT_TEST_DCP3D4K.mov"));
+ film->examine_and_add_content (R);
+ BOOST_REQUIRE (!wait_for_jobs());
+
+ L->video->set_frame_type (VIDEO_FRAME_TYPE_3D_LEFT);
+ R->video->set_frame_type (VIDEO_FRAME_TYPE_3D_RIGHT);
+ /* There doesn't seem much point in encoding the whole input, especially as we're only
+ * checking for errors during the encode and not the result. Also decoding these files
+ * (4K HQ Prores) is very slow.
+ */
+ L->set_trim_end (dcpomatic::ContentTime::from_seconds(22));
+ R->set_trim_end (dcpomatic::ContentTime::from_seconds(22));
+
+ film->set_three_d (true);
+ film->make_dcp ();
+ film->write_metadata ();
+
+ BOOST_REQUIRE (!wait_for_jobs ());
+}
+
+BOOST_AUTO_TEST_CASE (threed_test5)
+{
+ shared_ptr<Film> film = new_test_film2 ("threed_test5");
+ shared_ptr<FFmpegContent> L (new FFmpegContent(TestPaths::private_data / "boon_telly.mkv"));
+ film->examine_and_add_content (L);
+ shared_ptr<FFmpegContent> R (new FFmpegContent(TestPaths::private_data / "boon_telly.mkv"));
+ film->examine_and_add_content (R);
+ BOOST_REQUIRE (!wait_for_jobs());
+
+ L->video->set_frame_type (VIDEO_FRAME_TYPE_3D_LEFT);
+ R->video->set_frame_type (VIDEO_FRAME_TYPE_3D_RIGHT);
+ /* There doesn't seem much point in encoding the whole input, especially as we're only
+ * checking for errors during the encode and not the result.
+ */
+ L->set_trim_end (dcpomatic::ContentTime::from_seconds(3 * 60 + 20));
+ R->set_trim_end (dcpomatic::ContentTime::from_seconds(3 * 60 + 20));
+
+ film->set_three_d (true);
+ film->make_dcp ();
+ film->write_metadata ();
+
+ BOOST_REQUIRE (!wait_for_jobs ());
+}
+
+BOOST_AUTO_TEST_CASE (threed_test6)
+{
+ shared_ptr<Film> film = new_test_film2 ("threed_test6");
+ shared_ptr<FFmpegContent> L (new FFmpegContent("test/data/3dL.mp4"));
+ film->examine_and_add_content (L);
+ shared_ptr<FFmpegContent> R (new FFmpegContent("test/data/3dR.mp4"));
+ film->examine_and_add_content (R);
+ BOOST_REQUIRE (!wait_for_jobs());
+
+ L->video->set_frame_type (VIDEO_FRAME_TYPE_3D_LEFT);
+ R->video->set_frame_type (VIDEO_FRAME_TYPE_3D_RIGHT);
+