summaryrefslogtreecommitdiff
path: root/src/lib/create_cli.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-05-12 20:34:42 +0200
committerCarl Hetherington <cth@carlh.net>2020-05-12 20:34:42 +0200
commit4edc14c8b1410e24f68b510cc14409b96c0338a3 (patch)
tree20669816386ba0cd28d1cef2c4c7836cb47098f5 /src/lib/create_cli.cc
parent3e96f929fdf740f414b114c5d9765e22fcc46de6 (diff)
parentc6475f24a7b21fe2291ebc809431ecc2654d3355 (diff)
Re-work scaling following excellent insights by Carsten Kurz, described
on #1669. Now the scaling of video content is guessed based on its aspect ratio (taking into account pixel aspect ratio) and there is a "custom" option for overriding incorrectly-marked-up content or content which actually needs its shape to be changed. Essentially we are defaulting to what used to be called "no stretch". This commit also adds buttons to change left/right and top/bottom crop together, and auto-guessing of DCP container size when any change results in there being just one piece of video content in a project. These changes include breaking changes to metadata.xml; old projects should load (with new settings that preserve the project's apperance) but once saved they will not load into 2.14.x. DCP-o-matic saves a backup file (metadata.37.xml) when 2.15.x loads an old project.
Diffstat (limited to 'src/lib/create_cli.cc')
-rw-r--r--src/lib/create_cli.cc29
1 files changed, 6 insertions, 23 deletions
diff --git a/src/lib/create_cli.cc b/src/lib/create_cli.cc
index 878ee6fdd..b670282b4 100644
--- a/src/lib/create_cli.cc
+++ b/src/lib/create_cli.cc
@@ -42,7 +42,6 @@ string CreateCLI::_help =
" -c, --dcp-content-type <type> FTR, SHR, TLR, TST, XSN, RTG, TSR, POL, PSA or ADV\n"
" -f, --dcp-frame-rate <rate> set DCP video frame rate (otherwise guessed from content)\n"
" --container-ratio <ratio> 119, 133, 137, 138, 166, 178, 185 or 239\n"
- " --content-ratio <ratio> 119, 133, 137, 138, 166, 178, 185 or 239\n"
" -s, --still-length <n> number of seconds that still content should last\n"
" --standard <standard> SMPTE or interop (default SMPTE)\n"
" --no-use-isdcf-name do not use an ISDCF name; use the specified name unmodified\n"
@@ -79,7 +78,6 @@ CreateCLI::CreateCLI (int argc, char* argv[])
, threed (false)
, dcp_content_type (0)
, container_ratio (0)
- , content_ratio (0)
, still_length (10)
, standard (dcp::SMPTE)
, no_use_isdcf_name (false)
@@ -87,7 +85,6 @@ CreateCLI::CreateCLI (int argc, char* argv[])
, fourk (false)
{
string dcp_content_type_string = "TST";
- string content_ratio_string;
string container_ratio_string;
string standard_string = "SMPTE";
int dcp_frame_rate_int = 0;
@@ -136,7 +133,6 @@ CreateCLI::CreateCLI (int argc, char* argv[])
argument_option(i, argc, argv, "-c", "--dcp-content-type", &claimed, &error, &dcp_content_type_string);
argument_option(i, argc, argv, "-f", "--dcp-frame-rate", &claimed, &error, &dcp_frame_rate_int);
argument_option(i, argc, argv, "", "--container-ratio", &claimed, &error, &container_ratio_string);
- argument_option(i, argc, argv, "", "--content-ratio", &claimed, &error, &content_ratio_string);
argument_option(i, argc, argv, "-s", "--still-length", &claimed, &error, &still_length);
argument_option(i, argc, argv, "", "--standard", &claimed, &error, &standard_string);
argument_option(i, argc, argv, "", "--config", &claimed, &error, &config_dir_string);
@@ -185,25 +181,12 @@ CreateCLI::CreateCLI (int argc, char* argv[])
return;
}
- if (content_ratio_string.empty()) {
- error = String::compose("%1: missing required option --content-ratio", argv[0]);
- return;
- }
-
- content_ratio = Ratio::from_id (content_ratio_string);
- if (!content_ratio) {
- error = String::compose("%1: unrecognised content ratio %2", content_ratio_string);
- return;
- }
-
- if (container_ratio_string.empty()) {
- container_ratio_string = content_ratio_string;
- }
-
- container_ratio = Ratio::from_id (container_ratio_string);
- if (!container_ratio) {
- error = String::compose("%1: unrecognised container ratio %2", argv[0], container_ratio_string);
- return;
+ if (!container_ratio_string.empty()) {
+ container_ratio = Ratio::from_id (container_ratio_string);
+ if (!container_ratio) {
+ error = String::compose("%1: unrecognised container ratio %2", argv[0], container_ratio_string);
+ return;
+ }
}
if (standard_string != "SMPTE" && standard_string != "interop") {