X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Foptimise_stills_test.cc;h=6374d5474015e027e8a3bfc31a3c6695ebc97783;hb=b1e22dff981fb86ae04b12bb5a064e61030793a8;hp=7bd7f3b8543aaf51e9f8ff574fffe7ed3c00f341;hpb=d0a0a4839f0e1e8d37f9f9ad41784c4d18210a6b;p=dcpomatic.git diff --git a/test/optimise_stills_test.cc b/test/optimise_stills_test.cc index 7bd7f3b85..6374d5474 100644 --- a/test/optimise_stills_test.cc +++ b/test/optimise_stills_test.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Carl Hetherington + Copyright (C) 2017-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,35 +18,40 @@ */ + +#include "lib/content.h" +#include "lib/content_factory.h" +#include "lib/dcp_content_type.h" #include "lib/dcp_encoder.h" -#include "lib/writer.h" -#include "lib/transcode_job.h" -#include "lib/job_manager.h" +#include "lib/dcpomatic_log.h" #include "lib/film.h" +#include "lib/job_manager.h" #include "lib/ratio.h" -#include "lib/content_factory.h" -#include "lib/dcp_content_type.h" -#include "lib/content.h" +#include "lib/transcode_job.h" #include "lib/video_content.h" +#include "lib/writer.h" #include "test.h" -#include #include +#include + +using std::dynamic_pointer_cast; using std::getline; using std::ifstream; +using std::shared_ptr; using std::string; using std::vector; using boost::starts_with; using boost::split; -using boost::dynamic_pointer_cast; -using boost::shared_ptr; + static void check (string name, int check_full, int check_repeat) { /* The encoder will have been destroyed so parse the logs */ - ifstream log ("build/test/" + name + "/log"); + string log_file = "build/test/" + name + "/log"; + ifstream log (log_file.c_str()); string line; int repeat = 0; int full = 0; @@ -67,36 +72,38 @@ check (string name, int check_full, int check_repeat) BOOST_CHECK_EQUAL (repeat, check_repeat); } + /** Make a 2D DCP out of a 2D still and check that the J2K encoding is only done once for each frame */ BOOST_AUTO_TEST_CASE (optimise_stills_test1) { - shared_ptr film = new_test_film ("optimise_stills_test1"); + auto film = new_test_film ("optimise_stills_test1"); + LogSwitcher ls (film->log()); film->set_container (Ratio::from_id ("185")); film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR")); film->set_name ("frobozz"); - shared_ptr content = content_factory(film, "test/data/flat_red.png").front (); + auto content = content_factory("test/data/flat_red.png")[0]; film->examine_and_add_content (content); BOOST_REQUIRE (!wait_for_jobs ()); - film->make_dcp (); - BOOST_REQUIRE (!wait_for_jobs ()); + make_and_verify_dcp (film); check ("optimise_stills_test1", 1, 10 * 24 - 1); } + /** Make a 3D DCP out of a 3D L/R still and check that the J2K encoding is only done once for L and R */ BOOST_AUTO_TEST_CASE (optimise_stills_test2) { - shared_ptr film = new_test_film ("optimise_stills_test2"); + auto film = new_test_film ("optimise_stills_test2"); + LogSwitcher ls (film->log()); film->set_container (Ratio::from_id ("185")); - film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR")); + film->set_dcp_content_type (DCPContentType::from_isdcf_name("TLR")); film->set_name ("frobozz"); - shared_ptr content = content_factory(film, "test/data/flat_red.png").front (); + auto content = content_factory("test/data/flat_red.png")[0]; film->examine_and_add_content (content); BOOST_REQUIRE (!wait_for_jobs ()); - content->video->set_frame_type (VIDEO_FRAME_TYPE_3D_LEFT_RIGHT); + content->video->set_frame_type (VideoFrameType::THREE_D_LEFT_RIGHT); film->set_three_d (true); - film->make_dcp (); - BOOST_REQUIRE (!wait_for_jobs ()); + make_and_verify_dcp (film); check ("optimise_stills_test2", 2, 10 * 48 - 2); }