From 391a2852b6e73792882df5ea0d65238d840ab894 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 1 Jan 2023 22:41:57 +0100 Subject: [PATCH] Bump libdcp for fixes to font handling in combine operations. --- cscript | 2 +- src/lib/dcp_examiner.cc | 4 ++-- src/lib/dcp_subtitle_content.cc | 8 ++++---- src/wx/verify_dcp_dialog.cc | 6 ++++++ test/subtitle_font_id_test.cc | 12 ++++++------ 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/cscript b/cscript index 0127aa423..48f20995c 100644 --- 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')) diff --git a/src/lib/dcp_examiner.cc b/src/lib/dcp_examiner.cc index af9e38873..6f02f3ae5 100644 --- a/src/lib/dcp_examiner.cc +++ b/src/lib/dcp_examiner.cc @@ -203,8 +203,8 @@ DCPExaminer::DCPExaminer (shared_ptr 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(font.first, font.second)); + for (auto const& font: i->main_subtitle()->asset()->fonts()) { + reel_fonts.push_back(make_shared(font.load_id, font.data)); } } diff --git a/src/lib/dcp_subtitle_content.cc b/src/lib/dcp_subtitle_content.cc index 8908d34e6..832d9bafd 100644 --- a/src/lib/dcp_subtitle_content.cc +++ b/src/lib/dcp_subtitle_content.cc @@ -74,11 +74,11 @@ DCPSubtitleContent::examine (shared_ptr film, shared_ptr 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(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(node->id, font->data)); } else { only_text()->add_font(make_shared(node->id)); } diff --git a/src/wx/verify_dcp_dialog.cc b/src/wx/verify_dcp_dialog.cc index bd36334cd..81f8e2d5f 100644 --- a/src/wx/verify_dcp_dialog.cc +++ b/src/wx/verify_dcp_dialog.cc @@ -383,6 +383,12 @@ VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, shared_ptr job case dcp::VerificationNote::Code::INVALID_MAIN_PICTURE_ACTIVE_AREA: add(i, _("The 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; } } diff --git a/test/subtitle_font_id_test.cc b/test/subtitle_font_id_test.cc index 42ed8858f..0e651f5f4 100644 --- a/test/subtitle_font_id_test.cc +++ b/test/subtitle_font_id_test.cc @@ -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())); } -- 2.30.2