Supporters update.
[dcpomatic.git] / test / reels_test.cc
index 10fdc6c1ba440d845273dc724f64d4bcff1369af..d4a783f91a72a30acd2e08b5ec8385f2d4d5995e 100644 (file)
@@ -110,21 +110,21 @@ BOOST_AUTO_TEST_CASE (reels_test2)
        film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TST"));
 
        {
-               shared_ptr<ImageContent> c (new ImageContent("test/data/flat_red.png"));
+               auto c = make_shared<ImageContent>("test/data/flat_red.png");
                film->examine_and_add_content (c);
                BOOST_REQUIRE (!wait_for_jobs());
                c->video->set_length (24);
        }
 
        {
-               shared_ptr<ImageContent> c (new ImageContent("test/data/flat_green.png"));
+               auto c = make_shared<ImageContent>("test/data/flat_green.png");
                film->examine_and_add_content (c);
                BOOST_REQUIRE (!wait_for_jobs());
                c->video->set_length (24);
        }
 
        {
-               shared_ptr<ImageContent> c (new ImageContent("test/data/flat_blue.png"));
+               auto c = make_shared<ImageContent>("test/data/flat_blue.png");
                film->examine_and_add_content (c);
                BOOST_REQUIRE (!wait_for_jobs());
                c->video->set_length (24);
@@ -134,6 +134,8 @@ BOOST_AUTO_TEST_CASE (reels_test2)
        BOOST_CHECK_EQUAL (film->reels().size(), 3U);
        BOOST_REQUIRE (!wait_for_jobs());
 
+       film->set_audio_channels(16);
+
        make_and_verify_dcp (film);
 
        check_dcp ("test/data/reels_test2", film->dir (film->dcp_name()));
@@ -141,6 +143,7 @@ BOOST_AUTO_TEST_CASE (reels_test2)
        auto c = make_shared<DCPContent>(film->dir(film->dcp_name()));
        auto film2 = new_test_film2 ("reels_test2b", {c});
        film2->set_reel_type (ReelType::BY_VIDEO_CONTENT);
+       film2->set_audio_channels(16);
 
        auto r = film2->reels ();
        BOOST_CHECK_EQUAL (r.size(), 3U);
@@ -157,7 +160,7 @@ BOOST_AUTO_TEST_CASE (reels_test2)
        c->set_reference_video (true);
        c->set_reference_audio (true);
 
-       make_and_verify_dcp (film2, {dcp::VerificationNote::Code::EXTERNAL_ASSET});
+       make_and_verify_dcp(film2, {dcp::VerificationNote::Code::EXTERNAL_ASSET}, false);
 }
 
 
@@ -200,7 +203,7 @@ BOOST_AUTO_TEST_CASE (reels_test4)
        /* 4 piece of 1s-long content */
        shared_ptr<ImageContent> content[4];
        for (int i = 0; i < 4; ++i) {
-               content[i].reset (new ImageContent("test/data/flat_green.png"));
+               content[i] = make_shared<ImageContent>("test/data/flat_green.png");
                film->examine_and_add_content (content[i]);
                BOOST_REQUIRE (!wait_for_jobs());
                content[i]->video->set_length (24);
@@ -210,6 +213,8 @@ BOOST_AUTO_TEST_CASE (reels_test4)
        film->examine_and_add_content (subs);
        BOOST_REQUIRE (!wait_for_jobs());
 
+       film->set_audio_channels(16);
+
        auto reels = film->reels();
        BOOST_REQUIRE_EQUAL (reels.size(), 4U);
        auto i = reels.begin ();
@@ -240,6 +245,7 @@ BOOST_AUTO_TEST_CASE (reels_test4)
 BOOST_AUTO_TEST_CASE (reels_test5)
 {
        auto dcp = make_shared<DCPContent>("test/data/reels_test4");
+       dcp->check_font_ids();
        auto film = new_test_film2 ("reels_test5", {dcp});
        film->set_sequence (false);
 
@@ -257,7 +263,7 @@ BOOST_AUTO_TEST_CASE (reels_test5)
        }
 
        {
-               dcp->set_trim_start (ContentTime::from_seconds (0.5));
+               dcp->set_trim_start(film, ContentTime::from_seconds(0.5));
                auto p = dcp->reels (film);
                BOOST_REQUIRE_EQUAL (p.size(), 4U);
                auto i = p.begin();
@@ -279,7 +285,7 @@ BOOST_AUTO_TEST_CASE (reels_test5)
        }
 
        {
-               dcp->set_trim_start (ContentTime::from_seconds (1.5));
+               dcp->set_trim_start(film, ContentTime::from_seconds(1.5));
                auto p = dcp->reels (film);
                BOOST_REQUIRE_EQUAL (p.size(), 3U);
                auto i = p.begin();
@@ -300,12 +306,16 @@ BOOST_AUTO_TEST_CASE (reels_test6)
        film->set_reel_type (ReelType::BY_LENGTH);
        /* This is just over 2.5s at 100Mbit/s; should correspond to 60 frames */
        film->set_reel_length (31253154);
+       /* dcp_inspect and clairmeta both give errors about reel <1s in length */
        make_and_verify_dcp (
                film,
                {
                        dcp::VerificationNote::Code::INVALID_INTRINSIC_DURATION,
                        dcp::VerificationNote::Code::INVALID_DURATION,
-               });
+               },
+               false,
+               false
+               );
 }
 
 
@@ -314,8 +324,8 @@ BOOST_AUTO_TEST_CASE (reels_test6)
  */
 BOOST_AUTO_TEST_CASE (reels_test7)
 {
-       auto A = content_factory("test/data/flat_red.png").front();
-       auto B = content_factory("test/data/awkward_length.wav").front();
+       auto A = content_factory("test/data/flat_red.png")[0];
+       auto B = content_factory("test/data/awkward_length.wav")[0];
        auto film = new_test_film2 ("reels_test7", { A, B });
        film->set_video_frame_rate (24);
        A->video->set_length (2 * 24);
@@ -350,7 +360,7 @@ BOOST_AUTO_TEST_CASE (reels_test9)
        make_and_verify_dcp (film);
 
        auto B = make_shared<DCPContent>(film->dir(film->dcp_name()));
-       auto film2 = new_test_film2("reels_test9b", {B, content_factory("test/data/dcp_sub4.xml").front()});
+       auto film2 = new_test_film2("reels_test9b", {B, content_factory("test/data/dcp_sub4.xml")[0]});
        B->set_reference_video(true);
        B->set_reference_audio(true);
        film2->set_reel_type(ReelType::BY_VIDEO_CONTENT);
@@ -385,7 +395,7 @@ BOOST_AUTO_TEST_CASE (reels_test10)
 
        /* Now try to make the VF; this used to fail */
        auto ov_dcp = make_shared<DCPContent>(ov->dir(ov->dcp_name()));
-       auto vf = new_test_film2("reels_test10_vf", {ov_dcp, content_factory("test/data/15s.srt").front()});
+       auto vf = new_test_film2("reels_test10_vf", {ov_dcp, content_factory("test/data/15s.srt")[0]});
        vf->set_reel_type (ReelType::BY_VIDEO_CONTENT);
        ov_dcp->set_reference_video (true);
        ov_dcp->set_reference_audio (true);
@@ -397,7 +407,8 @@ BOOST_AUTO_TEST_CASE (reels_test10)
                        dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE,
                        dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME,
                        dcp::VerificationNote::Code::INVALID_SUBTITLE_DURATION,
-               });
+               },
+               false);
 }
 
 
@@ -410,7 +421,7 @@ BOOST_AUTO_TEST_CASE (reels_test11)
        auto film = new_test_film2 ("reels_test11", {A});
        film->set_video_frame_rate (24);
        A->video->set_length (240);
-       A->set_video_frame_rate (24);
+       A->set_video_frame_rate(film, 24);
        A->set_position (film, DCPTime::from_seconds(1));
        film->set_reel_type (ReelType::BY_VIDEO_CONTENT);
        make_and_verify_dcp (film);
@@ -439,11 +450,11 @@ BOOST_AUTO_TEST_CASE (reels_test12)
        film->set_sequence (false);
 
        A->video->set_length (240);
-       A->set_video_frame_rate (24);
+       A->set_video_frame_rate(film, 24);
        A->set_position (film, DCPTime::from_seconds(1));
 
        B->video->set_length (120);
-       B->set_video_frame_rate (24);
+       B->set_video_frame_rate(film, 24);
        B->set_position (film, DCPTime::from_seconds(14));
 
        auto r = film->reels ();
@@ -497,7 +508,7 @@ BOOST_AUTO_TEST_CASE (reels_should_not_be_short1)
        make_and_verify_dcp (film);
 
        vector<boost::filesystem::path> dirs = { film->dir(film->dcp_name(false)) };
-       auto notes = dcp::verify(dirs, boost::bind(&no_op), boost::bind(&no_op), TestPaths::xsd());
+       auto notes = dcp::verify(dirs, {}, boost::bind(&no_op), boost::bind(&no_op), {}, TestPaths::xsd());
        dump_notes (notes);
        BOOST_REQUIRE (notes.empty());
 }
@@ -522,7 +533,7 @@ BOOST_AUTO_TEST_CASE (reels_should_not_be_short2)
        make_and_verify_dcp (film);
 
        vector<boost::filesystem::path> dirs = { film->dir(film->dcp_name(false)) };
-       auto const notes = dcp::verify(dirs, boost::bind(&no_op), boost::bind(&no_op), TestPaths::xsd());
+       auto const notes = dcp::verify(dirs, {}, boost::bind(&no_op), boost::bind(&no_op), {}, TestPaths::xsd());
        dump_notes (notes);
        BOOST_REQUIRE (notes.empty());
 }
@@ -543,7 +554,7 @@ BOOST_AUTO_TEST_CASE (reels_should_not_be_short3)
 
        make_and_verify_dcp (film);
 
-       auto const notes = dcp::verify({}, boost::bind(&no_op), boost::bind(&no_op), TestPaths::xsd());
+       auto const notes = dcp::verify({}, {}, boost::bind(&no_op), boost::bind(&no_op), {}, TestPaths::xsd());
        dump_notes (notes);
        BOOST_REQUIRE (notes.empty());
 }
@@ -573,7 +584,7 @@ BOOST_AUTO_TEST_CASE (reels_should_not_be_short4)
        BOOST_REQUIRE (!wait_for_jobs());
 
        vector<boost::filesystem::path> dirs = { film->dir(film->dcp_name(false)) };
-       auto const notes = dcp::verify(dirs, boost::bind(&no_op), boost::bind(&no_op), TestPaths::xsd());
+       auto const notes = dcp::verify(dirs, {}, boost::bind(&no_op), boost::bind(&no_op), {}, TestPaths::xsd());
        dump_notes (notes);
        BOOST_REQUIRE (notes.empty());
 }
@@ -616,13 +627,13 @@ BOOST_AUTO_TEST_CASE (repeated_dcp_into_reels)
 
        for (int i = 0; i < 4; ++i) {
                original_dcp[i]->set_position(film2, DCPTime::from_frames(total_frames * i / 4, frame_rate));
-               original_dcp[i]->set_trim_start(ContentTime::from_frames(total_frames * i / 4, frame_rate));
+               original_dcp[i]->set_trim_start(film2, ContentTime::from_frames(total_frames * i / 4, frame_rate));
                original_dcp[i]->set_trim_end  (ContentTime::from_frames(total_frames * (4 - i - 1) / 4, frame_rate));
                original_dcp[i]->set_reference_video(true);
                original_dcp[i]->set_reference_audio(true);
        }
 
-       make_and_verify_dcp(film2, { dcp::VerificationNote::Code::EXTERNAL_ASSET });
+       make_and_verify_dcp(film2, { dcp::VerificationNote::Code::EXTERNAL_ASSET }, false);
 
        dcp::DCP check1(film1->dir(film1->dcp_name()));
        check1.read();