X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=test%2Fthreed_test.cc;h=c749694c60d827c5cad409bf0251a63b41ce7022;hp=85dae3b6edc7c55e7db43bade3f92ce8b6060d21;hb=402aeb2d6301503f83f7912147b2d2ebe02354f5;hpb=303350a6bbea4b32441b9a6896379d5b6ebafecf diff --git a/test/threed_test.cc b/test/threed_test.cc index 85dae3b6e..c749694c6 100644 --- a/test/threed_test.cc +++ b/test/threed_test.cc @@ -35,13 +35,14 @@ using std::cout; using boost::shared_ptr; +/** Basic sanity check of 3D_LEFT_RIGHT */ BOOST_AUTO_TEST_CASE (threed_test1) { - shared_ptr film = new_test_film ("threed_test2"); - film->set_name ("test_film2"); - shared_ptr c (new FFmpegContent (film, "test/data/test.mp4")); + shared_ptr film = new_test_film ("threed_test1"); + film->set_name ("test_film1"); + shared_ptr c (new FFmpegContent("test/data/test.mp4")); film->examine_and_add_content (c); - wait_for_jobs (); + BOOST_REQUIRE (!wait_for_jobs()); c->video->set_frame_type (VIDEO_FRAME_TYPE_3D_LEFT_RIGHT); c->video->set_scale (VideoContentScale (Ratio::from_id ("185"))); @@ -55,16 +56,16 @@ BOOST_AUTO_TEST_CASE (threed_test1) BOOST_REQUIRE (!wait_for_jobs ()); } -/** Basic sanity check of 3D-alternate; at the moment this is just to make sure +/** Basic sanity check of 3D_ALTERNATE; at the moment this is just to make sure * that such a transcode completes without error. */ BOOST_AUTO_TEST_CASE (threed_test2) { shared_ptr film = new_test_film ("threed_test2"); film->set_name ("test_film2"); - shared_ptr c (new FFmpegContent (film, "test/data/test.mp4")); + shared_ptr c (new FFmpegContent("test/data/test.mp4")); film->examine_and_add_content (c); - wait_for_jobs (); + BOOST_REQUIRE (!wait_for_jobs()); c->video->set_frame_type (VIDEO_FRAME_TYPE_3D_ALTERNATE); c->video->set_scale (VideoContentScale (Ratio::from_id ("185"))); @@ -77,3 +78,100 @@ BOOST_AUTO_TEST_CASE (threed_test2) 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 = new_test_film2 ("threed_test3"); + shared_ptr L (new FFmpegContent("test/data/test.mp4")); + film->examine_and_add_content (L); + shared_ptr 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 = new_test_film2 ("threed_test4"); + shared_ptr L (new FFmpegContent(private_data / "LEFT_TEST_DCP3D4K.mov")); + film->examine_and_add_content (L); + shared_ptr R (new FFmpegContent(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); + + 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 = new_test_film2 ("threed_test5"); + shared_ptr L (new FFmpegContent(private_data / "boon_telly.mkv")); + film->examine_and_add_content (L); + shared_ptr R (new FFmpegContent(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); + + 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 = new_test_film2 ("threed_test6"); + shared_ptr L (new FFmpegContent("test/data/3dL.mp4")); + film->examine_and_add_content (L); + shared_ptr 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); + + film->set_three_d (true); + film->make_dcp (); + film->write_metadata (); + + BOOST_REQUIRE (!wait_for_jobs()); + check_dcp ("test/data/threed_test6", film->dir(film->dcp_name())); +} + +/** Check 2D content set as being 3D; this fails with a -114 in some versions */ +BOOST_AUTO_TEST_CASE (threed_test7) +{ + shared_ptr film = new_test_film2 ("threed_test7"); + shared_ptr c (new FFmpegContent("test/data/red_24.mp4")); + film->examine_and_add_content (c); + BOOST_REQUIRE (!wait_for_jobs()); + + c->video->set_frame_type (VIDEO_FRAME_TYPE_3D); + + film->set_three_d (true); + film->make_dcp (); + film->write_metadata (); + + BOOST_REQUIRE (!wait_for_jobs()); +}