summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-09-17 22:32:04 +0200
committerCarl Hetherington <cth@carlh.net>2022-09-17 22:32:04 +0200
commitb0fc1ec3b159b7a7fa917f2e338485921800374e (patch)
tree2ba6fe1ba0d92e818b782b85cfd59c5856948693
parent0792f10d395c90532e8c778eab22145e746257e6 (diff)
Allow specification of the CPL ID to use in a DCP with _create (#2302).
-rw-r--r--src/lib/create_cli.cc4
-rw-r--r--src/lib/create_cli.h1
-rw-r--r--src/tools/dcpomatic_create.cc3
-rw-r--r--test/create_cli_test.cc6
4 files changed, 14 insertions, 0 deletions
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 <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 <id> CPL ID to use from the next piece of content (which is a DCP)\n"
" --kdm <file> KDM for next piece of content\n";
@@ -138,6 +139,7 @@ CreateCLI::CreateCLI (int argc, char* argv[])
optional<dcp::Channel> channel;
optional<float> gain;
optional<boost::filesystem::path> kdm;
+ optional<std::string> 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<dcp::Channel> channel;
boost::optional<float> gain;
boost::optional<boost::filesystem::path> kdm;
+ boost::optional<std::string> 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<bool>(cc.content[0].cpl));
+ BOOST_CHECK_EQUAL(*cc.content[0].cpl, "123456-789-0");
}