From: Carl Hetherington Date: Sat, 17 Sep 2022 20:32:04 +0000 (+0200) Subject: Allow specification of the CPL ID to use in a DCP with _create (#2302). X-Git-Tag: v2.16.27~14 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=b0fc1ec3b159b7a7fa917f2e338485921800374e Allow specification of the CPL ID to use in a DCP with _create (#2302). --- diff --git a/src/lib/create_cli.cc b/src/lib/create_cli.cc index 2ca17f91b..a6e13c8bc 100644 --- a/src/lib/create_cli.cc +++ b/src/lib/create_cli.cc @@ -57,6 +57,7 @@ string CreateCLI::_help = " --right-eye next piece of content is for the right eye\n" " --channel next piece of content should be mapped to audio channel L, R, C, Lfe, Ls or Rs\n" " --gain next piece of content should have the given audio gain (in dB)\n" + " --cpl CPL ID to use from the next piece of content (which is a DCP)\n" " --kdm KDM for next piece of content\n"; @@ -138,6 +139,7 @@ CreateCLI::CreateCLI (int argc, char* argv[]) optional channel; optional gain; optional kdm; + optional cpl; int i = 1; while (i < argc) { @@ -210,6 +212,7 @@ CreateCLI::CreateCLI (int argc, char* argv[]) argument_option(i, argc, argv, "", "--channel", &claimed, &error, &channel, convert_channel); argument_option(i, argc, argv, "", "--gain", &claimed, &error, &gain); argument_option(i, argc, argv, "", "--kdm", &claimed, &error, &kdm, string_to_path); + argument_option(i, argc, argv, "", "--cpl", &claimed, &error, &cpl); if (!claimed) { if (a.length() > 2 && a.substr(0, 2) == "--") { @@ -222,6 +225,7 @@ CreateCLI::CreateCLI (int argc, char* argv[]) c.channel = channel; c.gain = gain; c.kdm = kdm; + c.cpl = cpl; content.push_back (c); next_frame_type = VideoFrameType::TWO_D; channel = {}; diff --git a/src/lib/create_cli.h b/src/lib/create_cli.h index e6fa69378..a5e0c3941 100644 --- a/src/lib/create_cli.h +++ b/src/lib/create_cli.h @@ -41,6 +41,7 @@ public: boost::optional channel; boost::optional gain; boost::optional kdm; + boost::optional cpl; }; bool version; diff --git a/src/tools/dcpomatic_create.cc b/src/tools/dcpomatic_create.cc index 345c0182b..62428b1a2 100644 --- a/src/tools/dcpomatic_create.cc +++ b/src/tools/dcpomatic_create.cc @@ -128,6 +128,9 @@ main (int argc, char* argv[]) if (cli_content.kdm) { dcp->add_kdm (dcp::EncryptedKDM(dcp::file_to_string(*cli_content.kdm))); } + if (cli_content.cpl) { + dcp->set_cpl(*cli_content.cpl); + } } else { /* I guess it's not a DCP */ film_content_list = content_factory (can); diff --git a/test/create_cli_test.cc b/test/create_cli_test.cc index 97ac25374..71281a63e 100644 --- a/test/create_cli_test.cc +++ b/test/create_cli_test.cc @@ -184,4 +184,10 @@ BOOST_AUTO_TEST_CASE (create_cli_test) BOOST_CHECK_CLOSE (*cc.content[1].gain, -6, 0.001); BOOST_CHECK_EQUAL (cc.content[2].path, "sheila.wav"); BOOST_CHECK_CLOSE (*cc.content[2].gain, 2, 0.001); + + cc = run("dcpomatic2_create --cpl 123456-789-0 dcp"); + BOOST_REQUIRE_EQUAL(cc.content.size(), 1U); + BOOST_CHECK_EQUAL(cc.content[0].path, "dcp"); + BOOST_REQUIRE(static_cast(cc.content[0].cpl)); + BOOST_CHECK_EQUAL(*cc.content[0].cpl, "123456-789-0"); }