X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fcontent_test.cc;h=5ab714b47ad8e46a5363eef8fc939417853a4b32;hb=HEAD;hp=ef3b710e76618d57e0c34545e2045fbd38299435;hpb=41262015eb2bb1fc3da8585883420975de381a65;p=dcpomatic.git diff --git a/test/content_test.cc b/test/content_test.cc index ef3b710e7..5ab714b47 100644 --- a/test/content_test.cc +++ b/test/content_test.cc @@ -35,7 +35,6 @@ #include -using std::shared_ptr; using namespace dcpomatic; @@ -46,8 +45,9 @@ BOOST_AUTO_TEST_CASE (content_test1) film->set_dcp_content_type (DCPContentType::from_isdcf_name ("FTR")); film->set_name ("content_test1"); film->set_container (Ratio::from_id ("185")); + film->set_audio_channels(16); - auto content = content_factory(TestPaths::private_data() / "demo_sound_bug.mkv").front (); + auto content = content_factory(TestPaths::private_data() / "demo_sound_bug.mkv")[0]; film->examine_and_add_content (content); BOOST_REQUIRE (!wait_for_jobs ()); make_and_verify_dcp ( @@ -55,15 +55,7 @@ BOOST_AUTO_TEST_CASE (content_test1) { dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE, dcp::VerificationNote::Code::MISSING_FFMC_IN_FEATURE } ); - boost::filesystem::path check; - - for (auto i: boost::filesystem::directory_iterator("build/test/content_test1/" + film->dcp_name())) { - if (i.path().leaf().string().substr(0, 4) == "pcm_") { - check = i; - } - } - - check_mxf_audio_file (TestPaths::private_data() / "content_test1.mxf", check); + check_mxf_audio_file(TestPaths::private_data() / "content_test1.mxf", dcp_file(film, "pcm_")); } @@ -72,9 +64,9 @@ BOOST_AUTO_TEST_CASE (content_test1) */ BOOST_AUTO_TEST_CASE (content_test2) { - auto content = content_factory("test/data/red_23976.mp4").front(); + auto content = content_factory("test/data/red_23976.mp4")[0]; auto film = new_test_film2 ("content_test2", {content}); - content->set_trim_start(ContentTime::from_seconds(0.5)); + content->set_trim_start(film, ContentTime::from_seconds(0.5)); make_and_verify_dcp (film); } @@ -82,22 +74,22 @@ BOOST_AUTO_TEST_CASE (content_test2) /** Check that position and start trim of video content is forced to a frame boundary */ BOOST_AUTO_TEST_CASE (content_test3) { - auto content = content_factory("test/data/red_24.mp4").front(); + auto content = content_factory("test/data/red_24.mp4")[0]; auto film = new_test_film2 ("content_test3", {content}); film->set_sequence (false); /* Trim */ /* 12 frames */ - content->set_trim_start (ContentTime::from_seconds (12.0 / 24.0)); + content->set_trim_start(film, ContentTime::from_seconds (12.0 / 24.0)); BOOST_CHECK (content->trim_start() == ContentTime::from_seconds (12.0 / 24.0)); /* 11.2 frames */ - content->set_trim_start (ContentTime::from_seconds (11.2 / 24.0)); + content->set_trim_start(film, ContentTime::from_seconds (11.2 / 24.0)); BOOST_CHECK (content->trim_start() == ContentTime::from_seconds (11.0 / 24.0)); /* 13.9 frames */ - content->set_trim_start (ContentTime::from_seconds (13.9 / 24.0)); + content->set_trim_start(film, ContentTime::from_seconds (13.9 / 24.0)); BOOST_CHECK (content->trim_start() == ContentTime::from_seconds (14.0 / 24.0)); /* Position */ @@ -114,7 +106,7 @@ BOOST_AUTO_TEST_CASE (content_test3) content->set_position (film, DCPTime::from_seconds(13.9 / 24.0)); BOOST_CHECK (content->position() == DCPTime::from_seconds (14.0 / 24.0)); - content->set_video_frame_rate (25); + content->set_video_frame_rate(film, 25); /* Check that trim is fixed when the content's video frame rate is `forced' */ @@ -127,7 +119,7 @@ BOOST_AUTO_TEST_CASE (content_test4) { auto film = new_test_film2 ("content_test4"); - auto video = content_factory("test/data/count300bd24.m2ts").front(); + auto video = content_factory("test/data/count300bd24.m2ts")[0]; film->examine_and_add_content (video); BOOST_REQUIRE (!wait_for_jobs()); @@ -139,12 +131,12 @@ BOOST_AUTO_TEST_CASE (content_test4) /** Content containing no video will not have its length rounded to the nearest video frame */ BOOST_AUTO_TEST_CASE (content_test5) { - auto audio = content_factory("test/data/sine_16_48_220_10.wav").front(); - auto film = new_test_film2 ("content_test5", {audio}); + auto audio = content_factory("test/data/sine_16_48_220_10.wav"); + auto film = new_test_film2 ("content_test5", audio); - audio->set_trim_end (dcpomatic::ContentTime(3000)); + audio[0]->set_trim_end(dcpomatic::ContentTime(3000)); - BOOST_CHECK (audio->length_after_trim(film) == DCPTime(957000)); + BOOST_CHECK(audio[0]->length_after_trim(film) == DCPTime(957000)); } @@ -155,10 +147,12 @@ BOOST_AUTO_TEST_CASE (content_test6) auto film = new_test_film2 ( "content_test6", - { content_factory(TestPaths::private_data() / "fha.mkv").front() }, + content_factory(TestPaths::private_data() / "fha.mkv"), &cl ); + film->set_audio_channels(16); + make_and_verify_dcp (film); check_dcp (TestPaths::private_data() / "fha", film); @@ -169,8 +163,17 @@ BOOST_AUTO_TEST_CASE (content_test6) /** Reel length error when making the test for #1833 */ BOOST_AUTO_TEST_CASE (content_test7) { - auto content = content_factory(TestPaths::private_data() / "clapperboard.mp4").front(); - auto film = new_test_film2 ("content_test7", {content}); - content->audio->set_delay (-1000); + auto content = content_factory(TestPaths::private_data() / "clapperboard.mp4"); + auto film = new_test_film2 ("content_test7", content); + content[0]->audio->set_delay(-1000); make_and_verify_dcp (film, { dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_RATE_FOR_2K }); } + + +/** WAVs with markers (I think) can end up making audio packets with no channels and no frames (#2617) */ +BOOST_AUTO_TEST_CASE(wav_with_markers_zero_channels_test) +{ + auto content = content_factory(TestPaths::private_data() / "wav_with_markers.wav"); + auto film = new_test_film2("wav_with_markers_zero_channels_test", content); + make_and_verify_dcp(film, { dcp::VerificationNote::Code::MISSING_CPL_METADATA }); +}