Add --twok option to dcpomatic2_create.
authorCarl Hetherington <cth@carlh.net>
Sun, 16 Jan 2022 19:50:23 +0000 (20:50 +0100)
committerCarl Hetherington <cth@carlh.net>
Sun, 16 Jan 2022 20:00:36 +0000 (21:00 +0100)
src/lib/create_cli.cc
src/lib/create_cli.h
src/tools/dcpomatic_create.cc
test/create_cli_test.cc

index 9453cc1671964614c70d6d51eb096a355ff6c74a..26f3dbcae0b80b2ba9cc7235658590fd1eb857c8 100644 (file)
@@ -49,7 +49,8 @@ string CreateCLI::_help =
        "      --no-use-isdcf-name       do not use an ISDCF name; use the specified name unmodified\n"
        "      --no-sign                 do not sign the DCP\n"
        "      --config <dir>            directory containing config.xml and cinemas.xml\n"
-       "      --fourk                   make a 4K DCP rather than a 2K one\n"
+       "      --twok                    make a 2K DCP instead of choosing a resolution based on the content\n"
+       "      --fourk                   make a 4K DCP instead of choosing a resolution based on the content\n"
        "  -o, --output <dir>            output directory\n"
        "      --threed                  make a 3D DCP\n"
        "      --j2k-bandwidth <Mbit/s>  J2K bandwidth in Mbit/s\n"
@@ -124,6 +125,7 @@ CreateCLI::CreateCLI (int argc, char* argv[])
        , still_length (10)
        , standard (dcp::Standard::SMPTE)
        , no_use_isdcf_name (false)
+       , twok (false)
        , fourk (false)
 {
        string dcp_content_type_string = "TST";
@@ -163,6 +165,9 @@ CreateCLI::CreateCLI (int argc, char* argv[])
                } else if (a == "--right-eye") {
                        next_frame_type = VideoFrameType::THREE_D_RIGHT;
                        claimed = true;
+               } else if (a == "--twok") {
+                       twok = true;
+                       claimed = true;
                } else if (a == "--fourk") {
                        fourk = true;
                        claimed = true;
index ed42e669ca81ce9f6d1565ee5124942ddd2b5a15..177d56f7b908c83d16efec67b51e3c93ae40e05d 100644 (file)
@@ -57,6 +57,7 @@ public:
        boost::optional<boost::filesystem::path> output_dir;
        boost::optional<std::string> error;
        std::vector<Content> content;
+       bool twok;
        bool fourk;
        boost::optional<int> j2k_bandwidth;
 
index e6c948d2d509895986db5efdae1a08262d526416..e298f238c05bd929ad7aace916c0aed749ecb8ac 100644 (file)
@@ -105,6 +105,9 @@ main (int argc, char* argv[])
                film->set_use_isdcf_name (!cc.no_use_isdcf_name);
                film->set_encrypted (cc.encrypt);
                film->set_three_d (cc.threed);
+               if (cc.twok) {
+                       film->set_resolution (Resolution::TWO_K);
+               }
                if (cc.fourk) {
                        film->set_resolution (Resolution::FOUR_K);
                }
index acc3f64b0eb6eb31de56de6c40ff632578b395ea..523fd75e667ca9cd09f0334ae5957510bd68d7f3 100644 (file)
@@ -144,6 +144,12 @@ BOOST_AUTO_TEST_CASE (create_cli_test)
        BOOST_CHECK_EQUAL (cc.content[1].frame_type, VideoFrameType::THREE_D_RIGHT);
        BOOST_CHECK_EQUAL (cc.fourk, false);
 
+       cc = run ("dcpomatic2_create --twok foo.mp4");
+       BOOST_REQUIRE_EQUAL (cc.content.size(), 1U);
+       BOOST_CHECK_EQUAL (cc.content[0].path, "foo.mp4");
+       BOOST_CHECK_EQUAL (cc.twok, true);
+       BOOST_CHECK (!cc.error);
+
        cc = run ("dcpomatic2_create --fourk foo.mp4");
        BOOST_REQUIRE_EQUAL (cc.content.size(), 1U);
        BOOST_CHECK_EQUAL (cc.content[0].path, "foo.mp4");