X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fcpl_metadata_test.cc;h=a811e56f2ff29e10d63c0fd2835f292d6f3d18cb;hb=ddb999544ab9da2a3a4760baf241a5ef8520c37e;hp=b141d271d4a85483a625f2ca6c7aea584bce09fd;hpb=784020963f518aaba48b18b3fcff55d5c28a1f28;p=libdcp.git diff --git a/test/cpl_metadata_test.cc b/test/cpl_metadata_test.cc index b141d271..a811e56f 100644 --- a/test/cpl_metadata_test.cc +++ b/test/cpl_metadata_test.cc @@ -33,11 +33,14 @@ #include "certificate_chain.h" +#include "compose.hpp" #include "cpl.h" #include "exceptions.h" #include "language_tag.h" #include "reel.h" +#include "reel_mono_picture_asset.h" #include "reel_smpte_subtitle_asset.h" +#include "reel_sound_asset.h" #include "stream_operators.h" #include "test.h" #include @@ -151,6 +154,26 @@ BOOST_AUTO_TEST_CASE (main_sound_configuration_test5) } +/* 482-12 says that implementations may use case-insensitive comparisons for the channel identifiers, + * and there is one DCP in the private test suite (made by Disney) that uses LS for left surround. + */ +BOOST_AUTO_TEST_CASE(main_sound_configuration_test_case_insensitive) +{ + dcp::MainSoundConfiguration msc("51/L,-,C,LFE,LS,RS,HI,VIN"); + BOOST_CHECK_EQUAL(msc.to_string(), "51/L,-,C,LFE,Ls,Rs,HI,VIN"); + BOOST_CHECK_EQUAL(msc.channels(), 8); + BOOST_CHECK_EQUAL(msc.field(), dcp::MCASoundField::FIVE_POINT_ONE); + BOOST_CHECK_EQUAL(msc.mapping(0).get(), dcp::Channel::LEFT); + BOOST_CHECK(!msc.mapping(1)); + BOOST_CHECK_EQUAL(msc.mapping(2).get(), dcp::Channel::CENTRE); + BOOST_CHECK_EQUAL(msc.mapping(3).get(), dcp::Channel::LFE); + BOOST_CHECK_EQUAL(msc.mapping(4).get(), dcp::Channel::LS); + BOOST_CHECK_EQUAL(msc.mapping(5).get(), dcp::Channel::RS); + BOOST_CHECK_EQUAL(msc.mapping(6).get(), dcp::Channel::HI); + BOOST_CHECK_EQUAL(msc.mapping(7).get(), dcp::Channel::VI); +} + + BOOST_AUTO_TEST_CASE (luminance_test1) { BOOST_CHECK_NO_THROW (dcp::Luminance(4, dcp::Luminance::Unit::CANDELA_PER_SQUARE_METRE)); @@ -280,7 +303,7 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_write_test1) msc.set_mapping (2, dcp::Channel::CENTRE); msc.set_mapping (3, dcp::Channel::LFE); msc.set_mapping (13, dcp::Channel::SYNC_SIGNAL); - cpl.set_main_sound_configuration (msc.to_string()); + cpl.set_main_sound_configuration(msc); cpl.set_main_sound_sample_rate (48000); cpl.set_main_picture_stored_area (dcp::Size(1998, 1080)); @@ -351,7 +374,7 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_write_test2) msc.set_mapping (2, dcp::Channel::CENTRE); msc.set_mapping (3, dcp::Channel::LFE); msc.set_mapping (13, dcp::Channel::SYNC_SIGNAL); - cpl.set_main_sound_configuration (msc.to_string()); + cpl.set_main_sound_configuration(msc); cpl.set_main_sound_sample_rate (48000); cpl.set_main_picture_stored_area (dcp::Size(1998, 1080)); @@ -422,3 +445,42 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_roundtrip_test_2) ); } + +BOOST_AUTO_TEST_CASE(check_that_missing_full_content_title_text_is_tolerated) +{ + dcp::CPL cpl("test/ref/cpl_metadata_test3.xml"); +} + + +BOOST_AUTO_TEST_CASE(check_sign_language_video_language) +{ + dcp::CPL cpl("test/ref/cpl_metadata_test3.xml"); + cpl.set_sign_language_video_language(dcp::LanguageTag("es-PT")); + cpl.write_xml("build/test/check_sign_language_video_language.xml", {}); + check_xml( + dcp::file_to_string("test/ref/cpl_metadata_test4.xml"), + dcp::file_to_string("build/test/check_sign_language_video_language.xml"), + {"Id"} + ); + + dcp::CPL check("build/test/check_sign_language_video_language.xml"); + BOOST_CHECK_EQUAL(check.sign_language_video_language().get_value_or(""), "es-PT"); + +} + + +BOOST_AUTO_TEST_CASE(check_dolby_edr_metadata) +{ + dcp::CPL cpl("test/ref/cpl_metadata_test3.xml"); + cpl.set_dolby_edr_image_transfer_function("PQ10K"); + cpl.write_xml("build/test/check_dolby_edr_metadata.xml", {}); + check_xml( + dcp::file_to_string("test/ref/cpl_metadata_test5.xml"), + dcp::file_to_string("build/test/check_dolby_edr_metadata.xml"), + {"Id"} + ); + + dcp::CPL check("build/test/check_dolby_edr_metadata.xml"); + BOOST_CHECK_EQUAL(check.dolby_edr_image_transfer_function().get_value_or(""), "PQ10K"); +} +