diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-03-27 01:43:05 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-03-27 01:43:05 +0100 |
| commit | 059f68ed9d6d74fc6dd28e034db8a4f743c7a76c (patch) | |
| tree | 5b41149768ec75e0ea60f00dcb70f0ba21558b1a | |
| parent | d880fa106cd803e400aeb246fb4db757a9a87677 (diff) | |
Bump libdcp for Bv2.0 fixes (#2988).
| -rw-r--r-- | cscript | 2 | ||||
| -rw-r--r-- | src/lib/writer.cc | 5 | ||||
| -rw-r--r-- | test/bv20_test.cc | 59 |
3 files changed, 63 insertions, 3 deletions
@@ -436,7 +436,7 @@ def build_with_cpp17(target): def dependencies(target, options): - deps = [('libdcp', 'v1.10.17', {'c++17': build_with_cpp17(target)})] + deps = [('libdcp', 'v1.10.18', {'c++17': build_with_cpp17(target)})] deps.append(('libsub', 'v1.6.53')) deps.append(('leqm-nrt', '30dcaea1373ac62fba050e02ce5b0c1085797a23')) deps.append(('rtaudio', 'f619b76')) diff --git a/src/lib/writer.cc b/src/lib/writer.cc index 7a933724c..9f64a1686 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -595,7 +595,8 @@ Writer::finish() auto cpl = make_shared<dcp::CPL>( film()->dcp_name(), film()->dcp_content_type()->libdcp_kind(), - film()->interop() ? dcp::Standard::INTEROP : dcp::Standard::SMPTE + film()->interop() ? dcp::Standard::INTEROP : dcp::Standard::SMPTE, + film()->limit_to_smpte_bv20() ? dcp::Profile::SMPTE_BV20 : dcp::Profile::SMPTE_BV21 ); dcp.add (cpl); @@ -705,7 +706,7 @@ Writer::finish() if (dcpomatic::film::is_vf(film())) { group_id = dcp::make_uuid(); } - dcp.write_xml(signer, !film()->limit_to_smpte_bv20(), Config::instance()->dcp_metadata_filename_format(), group_id); + dcp.write_xml(signer, Config::instance()->dcp_metadata_filename_format(), group_id); LOG_GENERAL ( N_("Wrote %1 FULL, %2 FAKE, %3 REPEAT, %4 pushed to disk"), _full_written, _fake_written, _repeat_written, _pushed_to_disk diff --git a/test/bv20_test.cc b/test/bv20_test.cc index d41868601..796445075 100644 --- a/test/bv20_test.cc +++ b/test/bv20_test.cc @@ -32,6 +32,7 @@ LIBDCP_ENABLE_WARNINGS using std::shared_ptr; +using std::string; bool @@ -68,6 +69,61 @@ has_mxf_mca_subdescriptors(shared_ptr<const Film> film) } +string +constraints_profile(shared_ptr<const Film> film) +{ + auto cpl = dcp::file_to_string(find_file(film->dir(film->dcp_name()), "cpl_")); + cxml::Document xml("CompositionPlaylist"); + xml.read_string(cpl); + + auto reel_list = xml.node_child("ReelList"); + if (!reel_list) { + return {}; + } + + auto reel = reel_list->node_child("Reel"); + if (!reel) { + return {}; + } + + auto asset_list = reel->node_child("AssetList"); + if (!asset_list) { + return {}; + } + + auto meta_asset = asset_list->node_child("CompositionMetadataAsset"); + if (!meta_asset) { + return {}; + } + + auto extension = meta_asset->node_child("ExtensionMetadataList"); + if (!extension) { + return {}; + } + + auto metadata = extension->node_child("ExtensionMetadata"); + if (!metadata) { + return {}; + } + + auto property_list = metadata->node_child("PropertyList"); + if (!property_list) { + return {}; + } + + auto property = property_list->node_child("Property"); + if (!property) { + return {}; + } + + if (auto value = property->optional_string_child("Value")) { + return *value; + } + + return {}; +} + + BOOST_AUTO_TEST_CASE(bv21_extensions_used_when_not_limited) { auto picture = content_factory("test/data/flat_red.png"); @@ -78,6 +134,8 @@ BOOST_AUTO_TEST_CASE(bv21_extensions_used_when_not_limited) BOOST_CHECK(has_cpl_mca_subdescriptors(film)); BOOST_CHECK(has_mxf_mca_subdescriptors(film)); + BOOST_CHECK(constraints_profile(film) == "SMPTE-RDD-52:2020-Bv2.1"); + } @@ -92,5 +150,6 @@ BOOST_AUTO_TEST_CASE(bv21_extensions_not_used_when_limited) BOOST_CHECK(!has_cpl_mca_subdescriptors(film)); BOOST_CHECK(!has_mxf_mca_subdescriptors(film)); + BOOST_CHECK(constraints_profile(film) == "SMPTE-RDD-52:2020-Bv2.0"); } |
