diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-08-22 14:26:28 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-08-22 14:26:28 +0100 |
| commit | ba7f8c6363e881fdc0044fbbbb36535996d6dbf7 (patch) | |
| tree | 33728ba2d3317edabd14af14b53001a511729088 /test | |
| parent | d4dbedb4b532cb0403c6686f0f5e9bed755221fb (diff) | |
Do full gamma correction etc. when alpha-blending subtitles
onto XYZ images. This fixes colour tints on subtitles burnt
into existing DCPs.
Diffstat (limited to 'test')
| -rw-r--r-- | test/burnt_subtitle_test.cc | 63 | ||||
| m--------- | test/data | 0 |
2 files changed, 61 insertions, 2 deletions
diff --git a/test/burnt_subtitle_test.cc b/test/burnt_subtitle_test.cc index d7ccbc659..01e80c783 100644 --- a/test/burnt_subtitle_test.cc +++ b/test/burnt_subtitle_test.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014 Carl Hetherington <cth@carlh.net> + Copyright (C) 2014-2016 Carl Hetherington <cth@carlh.net> This file is part of DCP-o-matic. @@ -22,17 +22,31 @@ * @brief Test the burning of subtitles into the DCP. */ -#include <boost/test/unit_test.hpp> #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 <dcp/dcp.h> +#include <dcp/cpl.h> +#include <dcp/reel.h> +#include <dcp/j2k.h> +#include <dcp/mono_picture_asset.h> +#include <dcp/mono_picture_asset_reader.h> +#include <dcp/mono_picture_frame.h> +#include <dcp/openjpeg_image.h> +#include <dcp/reel_picture_asset.h> +#include <dcp/reel_mono_picture_asset.h> +#include <boost/test/unit_test.hpp> #include <iostream> 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 +83,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> 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")); + wait_for_jobs (); + film->make_dcp (); + wait_for_jobs (); + + shared_ptr<Film> 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 ()))); + shared_ptr<TextSubtitleContent> sub = dynamic_pointer_cast<TextSubtitleContent> ( + 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<const dcp::MonoPictureAsset> pic = dynamic_pointer_cast<dcp::ReelMonoPictureAsset> ( + dcp.cpls().front()->reels().front()->main_picture() + )->mono_asset(); + BOOST_REQUIRE (pic); + shared_ptr<const dcp::MonoPictureFrame> frame = pic->start_read()->get_frame (12); + shared_ptr<dcp::OpenJPEGImage> xyz = frame->xyz_image (); + BOOST_CHECK_EQUAL (xyz->size().width, 1998); + BOOST_CHECK_EQUAL (xyz->size().height, 1080); + + /* XXX: check the output ... */ +} diff --git a/test/data b/test/data -Subproject a6a8263ed232d8a9a2dc478b073f835d256d05b +Subproject 6966026bc74f121a681b24b04d69c97a196b135 |
