}
+/* 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));
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));
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));
}
-static
-void
-check_audio_channel_label_sub_descriptors(int channels)
+BOOST_AUTO_TEST_CASE(check_sign_language_video_language)
{
- boost::filesystem::path path = dcp::String::compose("build/test/check_audio_channel_label_sub_descriptors_%1", channels);
- auto constexpr sample_rate = 48000;
-
- boost::filesystem::remove_all(path);
- boost::filesystem::create_directories(path);
- auto dcp = make_shared<dcp::DCP>(path);
- auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::ContentKind::TRAILER, dcp::Standard::SMPTE);
- cpl->set_main_sound_configuration("wrong");
- cpl->set_main_sound_sample_rate(48000);
- cpl->set_main_picture_stored_area(dcp::Size(1998, 1080));
- cpl->set_main_picture_active_area(dcp::Size(1998, 1080));
- cpl->set_version_number(1);
-
- auto mp = simple_picture(path, "", 240);
- auto ms = simple_sound(path, "", dcp::MXFMetadata(), "en-US", 240, sample_rate, boost::none, channels);
-
- auto reel = make_shared<dcp::Reel>(
- shared_ptr<dcp::ReelMonoPictureAsset>(new dcp::ReelMonoPictureAsset(mp, 0)),
- shared_ptr<dcp::ReelSoundAsset>(new dcp::ReelSoundAsset(ms, 0))
+ 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"}
);
- cpl->add(reel);
- dcp->add(cpl);
-
- cpl->write_xml(path / "cpl.xml", {});
-
- cxml::Document check("CompositionPlaylist");
- check.read_file(path / "cpl.xml");
-
- auto reel_list = check.node_child("ReelList");
- BOOST_REQUIRE(reel_list);
- auto check_reel = reel_list->node_child("Reel");
- BOOST_REQUIRE(reel);
- auto asset_list = check_reel->node_child("AssetList");
- BOOST_REQUIRE(asset_list);
- auto composition_metadata_asset = asset_list->node_child("CompositionMetadataAsset");
- BOOST_REQUIRE(composition_metadata_asset);
- auto mca_sub_descriptors = composition_metadata_asset->node_child("MCASubDescriptors");
- BOOST_REQUIRE(mca_sub_descriptors);
- auto channel_label_sub_descriptors = mca_sub_descriptors->node_children("AudioChannelLabelSubDescriptor");
-
- BOOST_CHECK_EQUAL(channel_label_sub_descriptors.size(), static_cast<size_t>(channels));
- int index = 1;
- for (auto sub: channel_label_sub_descriptors) {
- BOOST_CHECK_EQUAL(sub->number_child<int>("MCAChannelID"), index);
- ++index;
- }
+ 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(include_the_right_number_of_channel_label_sub_descriptors)
+BOOST_AUTO_TEST_CASE(check_dolby_edr_metadata)
{
- check_audio_channel_label_sub_descriptors(2);
- check_audio_channel_label_sub_descriptors(6);
- check_audio_channel_label_sub_descriptors(8);
+ 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");
}
+