From: Carl Hetherington Date: Sat, 27 May 2023 21:44:52 +0000 (+0200) Subject: Bump libdcp for fix to crash with interop subtitles (#2536). X-Git-Tag: v2.16.57~5 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=5c318bb706e34333831a7c839e6fb1c3d042533f Bump libdcp for fix to crash with interop subtitles (#2536). --- diff --git a/cscript b/cscript index 58f5be90e..c0346cc7d 100644 --- a/cscript +++ b/cscript @@ -480,7 +480,7 @@ def dependencies(target, options): # Use distro-provided FFmpeg on Arch deps = [] - deps.append(('libdcp', 'v1.8.69')) + deps.append(('libdcp', 'v1.8.70')) deps.append(('libsub', 'v1.6.44')) deps.append(('leqm-nrt', '4560105773c66ac9216b62313a24093bb0a027ae')) deps.append(('rtaudio', 'f619b76')) diff --git a/test/2536_regression_test.cc b/test/2536_regression_test.cc new file mode 100644 index 000000000..5d2bc3bbb --- /dev/null +++ b/test/2536_regression_test.cc @@ -0,0 +1,75 @@ +/* + Copyright (C) 2023 Carl Hetherington + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see . + +*/ + + +#include "lib/content_factory.h" +#include "lib/dcp_content.h" +#include "lib/film.h" +#include "lib/image.h" +#include "lib/player.h" +#include "lib/text_content.h" +#include "test.h" +#include + + +using std::make_shared; + + +BOOST_AUTO_TEST_CASE(crash_rendering_vf_interop_subs_test) +{ + auto prefix = std::string("crash_rendering_vf_interop_subs_test"); + + auto video = content_factory("test/data/flat_red.png"); + auto ov = new_test_film2(prefix + "_ov", video); + ov->set_interop(true); + + make_and_verify_dcp( + ov, + { + dcp::VerificationNote::Code::INVALID_STANDARD, + }); + + auto ov_dcp = make_shared(ov->dir(ov->dcp_name())); + auto subtitles = content_factory("test/data/short.srt"); + auto vf = new_test_film2(prefix + "_vf", { ov_dcp, subtitles.front() }); + vf->set_interop(true); + vf->set_reel_type(ReelType::BY_VIDEO_CONTENT); + ov_dcp->set_reference_video(true); + ov_dcp->set_reference_audio(true); + + make_and_verify_dcp( + vf, + { + dcp::VerificationNote::Code::INVALID_STANDARD, + dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE, + dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME, + dcp::VerificationNote::Code::EXTERNAL_ASSET, + }); + + auto vf_dcp = make_shared(vf->dir(vf->dcp_name())); + vf_dcp->add_ov(ov->dir(ov->dcp_name())); + auto test = new_test_film2(prefix + "_test", { vf_dcp }); + vf_dcp->text[0]->set_use(true); + + auto player = make_shared(test, Image::Alignment::COMPACT); + player->set_always_burn_open_subtitles(); + while (!player->pass()) {} +} + diff --git a/test/wscript b/test/wscript index 88cee9b07..3cfe22799 100644 --- a/test/wscript +++ b/test/wscript @@ -44,6 +44,7 @@ def build(bld): obj.uselib += 'DL ' obj.use = 'libdcpomatic2' obj.source = """ + 2536_regression_test.cc 4k_test.cc atmos_test.cc audio_analysis_test.cc