print('/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :', file=f)
def dependencies(target, options):
- deps = [('libdcp', 'v1.9.9', {'c++17': target.platform == 'osx'})]
-
- if target.platform == 'linux':
- ffmpeg_options = { 'shared': False }
- else:
- ffmpeg_options = {}
-
- if target.platform != 'linux' or target.distro != 'arch':
- deps = [('ffmpeg', '7276e269a93c2ae30e302c34708e8095ac5475e8', ffmpeg_options)]
- else:
- # Use distro-provided FFmpeg on Arch
- deps = []
-
- deps.append(('libdcp', 'v1.8.101'))
++ deps = [('libdcp', 'v1.9.10', {'c++17': target.platform == 'osx'})]
deps.append(('libsub', 'v1.6.49'))
deps.append(('leqm-nrt', '30dcaea1373ac62fba050e02ce5b0c1085797a23'))
deps.append(('rtaudio', 'f619b76'))
FontIDAllocator::font_id(int reel_index, string asset_id, string font_id) const
{
auto iter = _map.find(Font(reel_index, asset_id, font_id));
- DCPOMATIC_ASSERT(iter != _map.end());
+ if (iter == _map.end()) {
+ return default_font_id();
+ }
- return String::compose("%1_%2", iter->second, font_id);
+ return iter->second;
}
- Subproject commit 02050bb9632658f0ce85ace219302b534f81eecc
-Subproject commit 6a4fa8b7c13e4f09fcee995191a2c86e1eff9d6d
++Subproject commit 3a3b29c0f1e9e2654ddee2028be623e1e1b3a33f
}
- dcp::VerificationNote::Code::MISSING_CPL_METADATA,
+BOOST_AUTO_TEST_CASE(subtitle_font_ids_survive_project_save)
+{
+ std::string const name = "subtitle_font_ids_survive_project_save";
+
+ auto subs = content_factory("test/data/short.srt")[0];
+ auto film = new_test_film(name + "_film", { subs });
+ film->set_interop(false);
+ make_and_verify_dcp(
+ film,
+ {
+ dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE,
+ dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME,
+ dcp::VerificationNote::Code::MISSING_CPL_METADATA
+ });
+
+ auto dcp = std::make_shared<DCPContent>(film->dir(film->dcp_name()));
+ auto film2 = new_test_film(name + "_film2", { dcp });
+ film2->write_metadata();
+
+ auto film3 = std::make_shared<Film>(film2->dir("."));
+ film3->read_metadata();
+ BOOST_REQUIRE(!film3->content().empty());
+ auto check_dcp = std::dynamic_pointer_cast<DCPContent>(film3->content()[0]);
+ BOOST_REQUIRE(check_dcp);
+
+ check_dcp->check_font_ids();
+}
+
++
+ BOOST_AUTO_TEST_CASE(cope_with_unloaded_font_id)
+ {
+ /* This file has a <Font> with an ID that corresponds to no <LoadFont> */
+ auto subs = content_factory("test/data/unloaded_font.xml")[0];
+ auto film = new_test_film2("cope_with_unloaded_font_id", { subs });
++
+ make_and_verify_dcp(
+ film,
+ {
+ dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE,
++ dcp::VerificationNote::Code::MISSING_CPL_METADATA
+ });
+ }
+