X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fplayer_test.cc;h=e78e0ee355329035c5124beec2ff5df3cbb2cbac;hb=cacb0750b9e6efbefa5ffa33a0df9552db5483db;hp=cafb14586a1e56421449c7e97b5b0c3366c4a5fc;hpb=0e896f9f37db001f34c876ed5fc50e874f96ae09;p=dcpomatic.git diff --git a/test/player_test.cc b/test/player_test.cc index cafb14586..e78e0ee35 100644 --- a/test/player_test.cc +++ b/test/player_test.cc @@ -210,7 +210,7 @@ BOOST_AUTO_TEST_CASE (player_interleave_test) player->Audio.connect (bind (&audio, _1, _2)); video_frames = audio_frames = 0; while (!player->pass ()) { - BOOST_CHECK (abs(video_frames - (audio_frames / 2000)) < 8); + BOOST_CHECK (abs(video_frames - (audio_frames / 2000)) <= 8); } } @@ -233,15 +233,16 @@ BOOST_AUTO_TEST_CASE (player_seek_test) player->set_always_burn_open_subtitles (); player->set_play_referenced (); - auto butler = std::make_shared(film, player, AudioMapping(), 2, bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false); - butler->disable_audio(); + auto butler = std::make_shared( + film, player, AudioMapping(), 2, bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::DISABLED + ); for (int i = 0; i < 10; ++i) { auto t = DCPTime::from_frames (i, 24); butler->seek (t, true); auto video = butler->get_video(Butler::Behaviour::BLOCKING, 0); BOOST_CHECK_EQUAL(video.second.get(), t.get()); - write_image(video.first->image(bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, true), String::compose("build/test/player_seek_test_%1.png", i)); + write_image(video.first->image(bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, true), String::compose("build/test/player_seek_test_%1.png", i)); /* This 14.08 is empirically chosen (hopefully) to accept changes in rendering between the reference and a test machine (17.10 and 16.04 seem to anti-alias a little differently) but to reject gross errors e.g. missing fonts or missing text altogether. @@ -265,8 +266,9 @@ BOOST_AUTO_TEST_CASE (player_seek_test2) player->set_always_burn_open_subtitles (); player->set_play_referenced (); - auto butler = std::make_shared(film, player, AudioMapping(), 2, bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false); - butler->disable_audio(); + auto butler = std::make_shared + (film, player, AudioMapping(), 2, bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::DISABLED + ); butler->seek(DCPTime::from_seconds(5), true); @@ -276,7 +278,7 @@ BOOST_AUTO_TEST_CASE (player_seek_test2) auto video = butler->get_video(Butler::Behaviour::BLOCKING, 0); BOOST_CHECK_EQUAL(video.second.get(), t.get()); write_image( - video.first->image(bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, true), String::compose("build/test/player_seek_test2_%1.png", i) + video.first->image(bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, true), String::compose("build/test/player_seek_test2_%1.png", i) ); check_image(TestPaths::private_data() / String::compose("player_seek_test2_%1.png", i), String::compose("build/test/player_seek_test2_%1.png", i), 14.08); } @@ -356,7 +358,9 @@ BOOST_AUTO_TEST_CASE (player_trim_crash) auto player = std::make_shared(film, Image::Alignment::COMPACT); player->set_fast (); - auto butler = std::make_shared(film, player, AudioMapping(), 6, bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::COMPACT, true, false); + auto butler = std::make_shared( + film, player, AudioMapping(), 6, bind(&PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::COMPACT, true, false, Butler::Audio::ENABLED + ); /* Wait for the butler to fill */ dcpomatic_sleep_seconds (5); @@ -466,3 +470,34 @@ BOOST_AUTO_TEST_CASE (player_silence_at_end_crash) film2->set_video_frame_rate (24); make_and_verify_dcp (film2); } + + +/** #2257 */ +BOOST_AUTO_TEST_CASE (encrypted_dcp_with_no_kdm_gives_no_butler_error) +{ + auto content = content_factory("test/data/flat_red.png").front(); + auto film = new_test_film2 ("encrypted_dcp_with_no_kdm_gives_no_butler_error", { content }); + int constexpr length = 24 * 25; + content->video->set_length(length); + film->set_encrypted (true); + make_and_verify_dcp ( + film, + { + dcp::VerificationNote::Code::MISSING_CPL_METADATA, + }); + + auto content2 = std::make_shared(film->dir(film->dcp_name())); + auto film2 = new_test_film2 ("encrypted_dcp_with_no_kdm_gives_no_butler_error2", { content2 }); + + auto player = std::make_shared(film2, Image::Alignment::COMPACT); + Butler butler(film2, player, AudioMapping(), 2, bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::ENABLED); + + float buffer[2000 * 6]; + for (int i = 0; i < length; ++i) { + butler.get_video(Butler::Behaviour::BLOCKING, 0); + butler.get_audio(Butler::Behaviour::BLOCKING, buffer, 2000); + } + + BOOST_CHECK_NO_THROW(butler.rethrow()); +} +