X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fburnt_subtitle_test.cc;h=054eddb31228eb86ecc8a7152e4a64d73eebd422;hb=67a68bd971ebe1b35daa3f75873b4ccb53c00ba0;hp=d7ccbc6590e3788362da8e620e14fbf364dc916f;hpb=3828baf56467224f5d44049bf1e7a7ed11f43a05;p=dcpomatic.git diff --git a/test/burnt_subtitle_test.cc b/test/burnt_subtitle_test.cc index d7ccbc659..054eddb31 100644 --- a/test/burnt_subtitle_test.cc +++ b/test/burnt_subtitle_test.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014 Carl Hetherington + Copyright (C) 2014-2016 Carl Hetherington This file is part of DCP-o-matic. @@ -20,19 +20,34 @@ /** @file test/burnt_subtitle_test.cc * @brief Test the burning of subtitles into the DCP. + * @ingroup specific */ -#include #include "lib/text_subtitle_content.h" #include "lib/dcp_subtitle_content.h" #include "lib/film.h" #include "lib/ratio.h" #include "lib/dcp_content_type.h" +#include "lib/subtitle_content.h" +#include "lib/content_factory.h" #include "test.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include using std::cout; +using std::map; using boost::shared_ptr; +using boost::dynamic_pointer_cast; /** Build a small DCP with no picture and a single subtitle overlaid onto it from a SubRip file */ BOOST_AUTO_TEST_CASE (burnt_subtitle_test_subrip) @@ -69,3 +84,48 @@ BOOST_AUTO_TEST_CASE (burnt_subtitle_test_dcp) check_dcp ("test/data/burnt_subtitle_test_dcp", film->dir (film->dcp_name ())); } + +/** Burn some subtitles into an existing DCP to check the colour conversion */ +BOOST_AUTO_TEST_CASE (burnt_subtitle_test_onto_dcp) +{ + shared_ptr film = new_test_film ("burnt_subtitle_test_onto_dcp"); + film->set_container (Ratio::from_id ("185")); + film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR")); + film->set_name ("frobozz"); + film->examine_and_add_content (content_factory(film, "test/data/flat_white.png").front()); + wait_for_jobs (); + film->make_dcp (); + wait_for_jobs (); + + shared_ptr film2 = new_test_film ("burnt_subtitle_test_onto_dcp2"); + film2->set_container (Ratio::from_id ("185")); + film2->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR")); + film2->set_name ("frobozz"); + film2->examine_and_add_content (content_factory(film2, film->dir (film->dcp_name ())).front()); + shared_ptr sub = dynamic_pointer_cast ( + content_factory (film2, "test/data/subrip2.srt") + ); + sub->subtitle->set_burn (true); + sub->subtitle->set_outline (true); + film2->examine_and_add_content (sub); + wait_for_jobs (); + film2->make_dcp (); + wait_for_jobs (); + + dcp::DCP dcp (film2->dir (film2->dcp_name ())); + dcp.read (); + BOOST_REQUIRE_EQUAL (dcp.cpls().size(), 1); + BOOST_REQUIRE_EQUAL (dcp.cpls().front()->reels().size(), 1); + BOOST_REQUIRE (dcp.cpls().front()->reels().front()->main_picture()); + BOOST_REQUIRE (dcp.cpls().front()->reels().front()->main_picture()->asset()); + shared_ptr pic = dynamic_pointer_cast ( + dcp.cpls().front()->reels().front()->main_picture() + )->mono_asset(); + BOOST_REQUIRE (pic); + shared_ptr frame = pic->start_read()->get_frame (12); + shared_ptr xyz = frame->xyz_image (); + BOOST_CHECK_EQUAL (xyz->size().width, 1998); + BOOST_CHECK_EQUAL (xyz->size().height, 1080); + + /* XXX: check the output ... */ +}