Extract common code out into kdm_for_screen()
[dcpomatic.git] / src / lib / create_cli.cc
index e1c5f1233cc45790fa12e918c23109cdd0cf6fca..878ee6fddd7fb7ce8ff6719366028164a577b802 100644 (file)
@@ -21,6 +21,7 @@
 #include "create_cli.h"
 #include "dcp_content_type.h"
 #include "ratio.h"
+#include "config.h"
 #include "compose.hpp"
 #include <dcp/raw_convert.h>
 #include <string>
@@ -50,6 +51,7 @@ string CreateCLI::_help =
        "      --fourk                   make a 4K DCP rather than a 2K one\n"
        "  -o, --output <dir>            output directory\n"
        "      --threed                  make a 3D DCP\n"
+       "      --j2k-bandwidth <Mbit/s>  J2K bandwidth in Mbit/s\n"
        "      --left-eye                next piece of content is for the left eye\n"
        "      --right-eye               next piece of content is for the right eye\n";
 
@@ -76,7 +78,6 @@ CreateCLI::CreateCLI (int argc, char* argv[])
        , encrypt (false)
        , threed (false)
        , dcp_content_type (0)
-       , dcp_frame_rate (24)
        , container_ratio (0)
        , content_ratio (0)
        , still_length (10)
@@ -93,6 +94,7 @@ CreateCLI::CreateCLI (int argc, char* argv[])
        string template_name_string;
        string config_dir_string;
        string output_dir_string;
+       int j2k_bandwidth_int = 0;
        VideoFrameType next_frame_type = VIDEO_FRAME_TYPE_2D;
 
        int i = 1;
@@ -139,6 +141,7 @@ CreateCLI::CreateCLI (int argc, char* argv[])
                argument_option(i, argc, argv, "",   "--standard",         &claimed, &error, &standard_string);
                argument_option(i, argc, argv, "",   "--config",           &claimed, &error, &config_dir_string);
                argument_option(i, argc, argv, "-o", "--output",           &claimed, &error, &output_dir_string);
+               argument_option(i, argc, argv, "",   "--j2k-bandwidth",    &claimed, &error, &j2k_bandwidth_int);
 
                if (!claimed) {
                        if (a.length() > 2 && a.substr(0, 2) == "--") {
@@ -172,6 +175,10 @@ CreateCLI::CreateCLI (int argc, char* argv[])
                dcp_frame_rate = dcp_frame_rate_int;
        }
 
+       if (j2k_bandwidth_int) {
+               j2k_bandwidth = j2k_bandwidth_int * 1000000;
+       }
+
        dcp_content_type = DCPContentType::from_isdcf_name(dcp_content_type_string);
        if (!dcp_content_type) {
                error = String::compose("%1: unrecognised DCP content type '%2'", argv[0], dcp_content_type_string);
@@ -212,4 +219,9 @@ CreateCLI::CreateCLI (int argc, char* argv[])
        if (name.empty()) {
                name = content[0].path.leaf().string();
        }
+
+       if (j2k_bandwidth && (*j2k_bandwidth < 10000000 || *j2k_bandwidth > Config::instance()->maximum_j2k_bandwidth())) {
+               error = String::compose("%1: j2k-bandwidth must be between 10 and %2 Mbit/s", argv[0], (Config::instance()->maximum_j2k_bandwidth() / 1000000));
+               return;
+       }
 }