Rename j2k_bandwidth -> video_bit_rate.
[dcpomatic.git] / test / reels_test.cc
index 092c206f072e1b9a58dbcacf1572e0fe177d781a..5fcddfe781378ade48ce2ad86be6d5f4efeee13f 100644 (file)
@@ -54,6 +54,14 @@ using std::vector;
 using namespace dcpomatic;
 
 
+static
+void
+filter_ok(std::vector<dcp::VerificationNote>& notes)
+{
+       notes.erase(std::remove_if(notes.begin(), notes.end(), [](dcp::VerificationNote const& note) { return note.type() == dcp::VerificationNote::Type::OK; }), notes.end());
+}
+
+
 /** Test Film::reels() */
 BOOST_AUTO_TEST_CASE (reels_test1)
 {
@@ -80,7 +88,7 @@ BOOST_AUTO_TEST_CASE (reels_test1)
        BOOST_CHECK_EQUAL (r.back().from.get(), 288000);
        BOOST_CHECK_EQUAL (r.back().to.get(), 288000 * 2);
 
-       film->set_j2k_bandwidth (100000000);
+       film->set_video_bit_rate(100000000);
        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);
@@ -110,21 +118,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 +142,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 +151,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 +168,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 +211,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 +221,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 ();
@@ -297,16 +310,20 @@ BOOST_AUTO_TEST_CASE (reels_test6)
        auto A = make_shared<FFmpegContent>("test/data/test2.mp4");
        auto film = new_test_film2 ("reels_test6", {A});
 
-       film->set_j2k_bandwidth (100000000);
+       film->set_video_bit_rate(100000000);
        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
+               );
 }
 
 
@@ -398,7 +415,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);
 }
 
 
@@ -498,9 +516,10 @@ 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());
-       dump_notes (notes);
-       BOOST_REQUIRE (notes.empty());
+       auto result = dcp::verify(dirs, {}, boost::bind(&no_op), boost::bind(&no_op), {}, TestPaths::xsd());
+       filter_ok(result.notes);
+       dump_notes(result.notes);
+       BOOST_REQUIRE(result.notes.empty());
 }
 
 
@@ -523,9 +542,10 @@ 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());
-       dump_notes (notes);
-       BOOST_REQUIRE (notes.empty());
+       auto result = dcp::verify(dirs, {}, boost::bind(&no_op), boost::bind(&no_op), {}, TestPaths::xsd());
+       filter_ok(result.notes);
+       dump_notes(result.notes);
+       BOOST_REQUIRE(result.notes.empty());
 }
 
 
@@ -544,9 +564,10 @@ 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());
-       dump_notes (notes);
-       BOOST_REQUIRE (notes.empty());
+       auto result = dcp::verify({}, {}, boost::bind(&no_op), boost::bind(&no_op), {}, TestPaths::xsd());
+       filter_ok(result.notes);
+       dump_notes(result.notes);
+       BOOST_REQUIRE(result.notes.empty());
 }
 
 
@@ -574,9 +595,10 @@ 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());
-       dump_notes (notes);
-       BOOST_REQUIRE (notes.empty());
+       auto result = dcp::verify(dirs, {}, boost::bind(&no_op), boost::bind(&no_op), {}, TestPaths::xsd());
+       filter_ok(result.notes);
+       dump_notes(result.notes);
+       BOOST_REQUIRE(result.notes.empty());
 }
 
 
@@ -623,7 +645,7 @@ BOOST_AUTO_TEST_CASE (repeated_dcp_into_reels)
                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();