Bump libdcp for fixes to font handling in combine operations. multi-fonts-in-pkl
authorCarl Hetherington <cth@carlh.net>
Sun, 1 Jan 2023 21:41:57 +0000 (22:41 +0100)
committerCarl Hetherington <cth@carlh.net>
Sun, 1 Jan 2023 22:15:31 +0000 (23:15 +0100)
cscript
src/lib/dcp_examiner.cc
src/lib/dcp_subtitle_content.cc
src/wx/verify_dcp_dialog.cc
test/subtitle_font_id_test.cc

diff --git a/cscript b/cscript
index 0127aa423844654dd48b41b08a91166c5f69f3f9..48f20995c95f5a91c27ef21b780c51cac1f3b50b 100644 (file)
--- a/cscript
+++ b/cscript
@@ -453,7 +453,7 @@ def dependencies(target, options):
         # Use distro-provided FFmpeg on Arch
         deps = []
 
-    deps.append(('libdcp', 'v1.8.49'))
+    deps.append(('libdcp', '05d1f72e835b90b42298a33d83ae9e618f9f54f5'))
     deps.append(('libsub', 'v1.6.42'))
     deps.append(('leqm-nrt', '93ae9e6'))
     deps.append(('rtaudio', 'f619b76'))
index af9e38873f83688c989e55ab226f4ad9cb326e99..6f02f3ae50748cfc5ab3d9eb06b1611b626c7477 100644 (file)
@@ -203,8 +203,8 @@ DCPExaminer::DCPExaminer (shared_ptr<const DCPContent> content, bool tolerant)
                        _text_count[TextType::OPEN_SUBTITLE] = 1;
                        _open_subtitle_language = try_to_parse_language (i->main_subtitle()->language());
 
-                       for (auto const& font: i->main_subtitle()->asset()->font_data()) {
-                               reel_fonts.push_back(make_shared<dcpomatic::Font>(font.first, font.second));
+                       for (auto const& font: i->main_subtitle()->asset()->fonts()) {
+                               reel_fonts.push_back(make_shared<dcpomatic::Font>(font.load_id, font.data));
                        }
                }
 
index 8908d34e6d49a4b5d18f6fb631d55a15f6dbc7a9..832d9bafd3efde8ae026061b46b6d88cb0b92e7a 100644 (file)
@@ -74,11 +74,11 @@ DCPSubtitleContent::examine (shared_ptr<const Film> film, shared_ptr<Job> job)
 
        sc->fix_empty_font_ids ();
 
-       auto font_data = sc->font_data();
+       auto fonts = sc->fonts();
        for (auto node: sc->load_font_nodes()) {
-               auto data = font_data.find(node->id);
-               if (data != font_data.end()) {
-                       only_text()->add_font(make_shared<Font>(node->id, data->second));
+               auto font = std::find_if(fonts.begin(), fonts.end(), [node](dcp::SubtitleAsset::Font const& font) { return font.load_id == node->id; });
+               if (font != fonts.end()) {
+                       only_text()->add_font(make_shared<Font>(node->id, font->data));
                } else {
                        only_text()->add_font(make_shared<Font>(node->id));
                }
index bd36334cdcc12a56d8ce05ba781e4aa1fa4bef7a..81f8e2d5f85290ac222b7af9be7533a10f9b0890 100644 (file)
@@ -383,6 +383,12 @@ VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, shared_ptr<VerifyDCPJob> job
                case dcp::VerificationNote::Code::INVALID_MAIN_PICTURE_ACTIVE_AREA:
                        add(i, _("The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than an asset."));
                        break;
+               case dcp::VerificationNote::Code::DUPLICATE_ASSET_ID_IN_PKL:
+                       add(i, _("The PKL %n has more than one asset with the same ID"));
+                       break;
+               case dcp::VerificationNote::Code::DUPLICATE_ASSET_ID_IN_ASSETMAP:
+                       add(i, _("The ASSETMAP %n has more than one asset with the same ID"));
+                       break;
                }
        }
 
index 42ed8858f022aadc4128af149c382b5b459c8607..0e651f5f4dfdf935dec0733a115561d6e40538e6 100644 (file)
@@ -123,9 +123,9 @@ BOOST_AUTO_TEST_CASE(make_dcp_with_subs_without_font_tag)
        auto check_file = subtitle_file(film);
        dcp::SMPTESubtitleAsset check_asset(check_file);
        BOOST_CHECK_EQUAL(check_asset.load_font_nodes().size(), 1U);
-       auto check_font_data = check_asset.font_data();
-       BOOST_CHECK_EQUAL(check_font_data.size(), 1U);
-       BOOST_CHECK(check_font_data.begin()->second == dcp::ArrayData(default_font_file()));
+       auto check_fonts = check_asset.fonts();
+       BOOST_CHECK_EQUAL(check_fonts.size(), 1U);
+       BOOST_CHECK(check_fonts[0].data == dcp::ArrayData(default_font_file()));
 }
 
 
@@ -182,8 +182,8 @@ BOOST_AUTO_TEST_CASE(make_dcp_with_subs_in_dcp_without_font_tag)
        auto check_file = subtitle_file(film);
        dcp::SMPTESubtitleAsset check_asset(check_file);
        BOOST_CHECK_EQUAL(check_asset.load_font_nodes().size(), 1U);
-       auto check_font_data = check_asset.font_data();
-       BOOST_CHECK_EQUAL(check_font_data.size(), 1U);
-       BOOST_CHECK(check_font_data.begin()->second == dcp::ArrayData(default_font_file()));
+       auto check_fonts = check_asset.fonts();
+       BOOST_CHECK_EQUAL(check_fonts.size(), 1U);
+       BOOST_CHECK(check_fonts[0].data == dcp::ArrayData(default_font_file()));
 }