summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-05-27 23:44:52 +0200
committerCarl Hetherington <cth@carlh.net>2023-05-28 20:58:47 +0200
commit5c318bb706e34333831a7c839e6fb1c3d042533f (patch)
treea8aa8adc332044e32a9009956cd36a91f07f22d2
parent4ae33e85fd1ebf1b8255723b0cb98d205a068fca (diff)
Bump libdcp for fix to crash with interop subtitles (#2536).
-rw-r--r--cscript2
-rw-r--r--test/2536_regression_test.cc75
-rw-r--r--test/wscript1
3 files changed, 77 insertions, 1 deletions
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 <cth@carlh.net>
+
+ 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 <http://www.gnu.org/licenses/>.
+
+*/
+
+
+#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 <boost/test/unit_test.hpp>
+
+
+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<DCPContent>(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<DCPContent>(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<Player>(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