Bump libdcp for Bv2.0 fixes (#2988).
authorCarl Hetherington <cth@carlh.net>
Thu, 27 Mar 2025 00:43:05 +0000 (01:43 +0100)
committerCarl Hetherington <cth@carlh.net>
Thu, 27 Mar 2025 00:43:05 +0000 (01:43 +0100)
cscript
src/lib/writer.cc
test/bv20_test.cc

diff --git a/cscript b/cscript
index 0f09ae3bf2055b886cba346fad193cbcaf888bc5..d3beaf92bcb512e40f9bdddb5d6ca95e393651c2 100644 (file)
--- a/cscript
+++ b/cscript
@@ -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'))
index 7a933724c45f50153111e7b5e15b4f893d9716ab..9f64a16865dad3a72c65bca6c824453951f1c185 100644 (file)
@@ -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
index d41868601257182e05a93fc316dae0c9d2b2cb27..796445075832e2ae58830d38aad3f3f0a4b0299c 100644 (file)
@@ -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");
 }