std::shared_ptr
[dcpomatic.git] / test / threed_test.cc
index 473cc00d310df716601daf77b3255d92fef5818c..e6a91a91060439d705e14785bb009b1be4a7f401 100644 (file)
@@ -37,7 +37,7 @@
 #include <iostream>
 
 using std::cout;
-using boost::shared_ptr;
+using std::shared_ptr;
 
 /** Basic sanity check of 3D_LEFT_RIGHT */
 BOOST_AUTO_TEST_CASE (threed_test1)
@@ -49,7 +49,6 @@ BOOST_AUTO_TEST_CASE (threed_test1)
        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")));
 
        film->set_container (Ratio::from_id ("185"));
        film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TST"));
@@ -72,7 +71,6 @@ BOOST_AUTO_TEST_CASE (threed_test2)
        BOOST_REQUIRE (!wait_for_jobs());
 
        c->video->set_frame_type (VIDEO_FRAME_TYPE_3D_ALTERNATE);
-       c->video->set_scale (VideoContentScale (Ratio::from_id ("185")));
 
        film->set_container (Ratio::from_id ("185"));
        film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TST"));
@@ -107,48 +105,51 @@ BOOST_AUTO_TEST_CASE (threed_test3)
 
 BOOST_AUTO_TEST_CASE (threed_test4)
 {
-       Config::instance()->set_master_encoding_threads (8);
-
        shared_ptr<Film> film = new_test_film2 ("threed_test4");
-       shared_ptr<FFmpegContent> L (new FFmpegContent(TestPaths::private_data / "LEFT_TEST_DCP3D4K.mov"));
+       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"));
+       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 ());
-
-       Config::instance()->set_master_encoding_threads (8);
 }
 
 BOOST_AUTO_TEST_CASE (threed_test5)
 {
-       Config::instance()->set_master_encoding_threads (8);
-
        shared_ptr<Film> film = new_test_film2 ("threed_test5");
-       shared_ptr<FFmpegContent> L (new FFmpegContent(TestPaths::private_data / "boon_telly.mkv"));
+       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"));
+       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 ());
-
-       Config::instance()->set_master_encoding_threads (1);
 }
 
 BOOST_AUTO_TEST_CASE (threed_test6)
@@ -174,8 +175,11 @@ BOOST_AUTO_TEST_CASE (threed_test6)
 /** Check 2D content set as being 3D; this should give an informative error */
 BOOST_AUTO_TEST_CASE (threed_test7)
 {
+       using boost::filesystem::path;
+
        shared_ptr<Film> film = new_test_film2 ("threed_test7");
-       shared_ptr<FFmpegContent> c (new FFmpegContent("test/data/red_24.mp4"));
+       path const content_path = "test/data/red_24.mp4";
+       shared_ptr<FFmpegContent> c (new FFmpegContent(content_path));
        film->examine_and_add_content (c);
        BOOST_REQUIRE (!wait_for_jobs());
 
@@ -207,7 +211,7 @@ BOOST_AUTO_TEST_CASE (threed_test7)
                }
        }
        BOOST_REQUIRE (failed);
-       BOOST_CHECK_EQUAL (failed->error_summary(), "The content file test/data/red_24.mp4 is set as 3D but does not appear to contain 3D images.  Please set it to 2D.  You can still make a 3D DCP from this content by ticking the 3D option in the DCP video tab.");
+       BOOST_CHECK_EQUAL (failed->error_summary(), String::compose("The content file %1 is set as 3D but does not appear to contain 3D images.  Please set it to 2D.  You can still make a 3D DCP from this content by ticking the 3D option in the DCP video tab.", content_path.string()));
 
        while (signal_manager->ui_idle ()) {}