Bump libdcp for fix to crash with interop subtitles (#2536).
authorCarl Hetherington <cth@carlh.net>
Sat, 27 May 2023 21:44:52 +0000 (23:44 +0200)
committerCarl Hetherington <cth@carlh.net>
Sun, 28 May 2023 18:58:47 +0000 (20:58 +0200)
cscript
test/2536_regression_test.cc [new file with mode: 0644]
test/wscript

diff --git a/cscript b/cscript
index 58f5be90e6528fddaa58cab04cc3127e0d257f38..c0346cc7df08e81c66060a2a91118fa4f2085997 100644 (file)
--- 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 (file)
index 0000000..5d2bc3b
--- /dev/null
@@ -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()) {}
+}
+
index 88cee9b076d3ea61e34a9bc24b339ee7662ccf66..3cfe22799c918443fc1ede0d87f3bc137d821e10 100644 (file)
@@ -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