summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-06-24 00:54:28 +0200
committerCarl Hetherington <cth@carlh.net>2023-06-24 00:54:28 +0200
commite8d05ab1c7c8ea1cc9d653540bf3cf2acb2c9669 (patch)
tree21c1c28808717a1b817ef2594b5114faa41e07e3 /src/lib
parentc9c1b5e7edce7f7fd531b448323c3b2b2f5c7e65 (diff)
Add config option to allow long ISDCF name parts.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/config.cc4
-rw-r--r--src/lib/config.h10
-rw-r--r--src/lib/film.cc2
3 files changed, 15 insertions, 1 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc
index 6a61aae46..3366a2bbc 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -199,6 +199,7 @@ Config::set_defaults ()
_auto_crop_threshold = 0.1;
_last_release_notes_version = boost::none;
_allow_smpte_bv20 = false;
+ _isdcf_name_part_length = 14;
_allowed_dcp_frame_rates.clear ();
_allowed_dcp_frame_rates.push_back (24);
@@ -631,6 +632,7 @@ try
}
_allow_smpte_bv20 = f.optional_bool_child("AllowSMPTEBv20").get_value_or(false);
+ _isdcf_name_part_length = f.optional_number_child<int>("ISDCFNamePartLength").get_value_or(14);
_export.read(f.optional_node_child("Export"));
}
@@ -1115,6 +1117,8 @@ Config::write_config () const
/* [XML] AllowSMPTEBv20 1 to allow the user to choose SMPTE (Bv2.0 only) as a standard, otherwise 0 */
root->add_child("AllowSMPTEBv20")->add_child_text(_allow_smpte_bv20 ? "1" : "0");
+ /* [XML] ISDCFNamePartLength Maximum length of the "name" part of an ISDCF name, which should be 14 according to the standard */
+ root->add_child("ISDCFNamePartLength")->add_child_text(raw_convert<string>(_isdcf_name_part_length));
_export.write(root->add_child("Export"));
diff --git a/src/lib/config.h b/src/lib/config.h
index 91d779b7a..0a332bcbb 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -94,6 +94,7 @@ public:
AUDIO_MAPPING,
AUTO_CROP_THRESHOLD,
ALLOW_SMPTE_BV20,
+ ISDCF_NAME_PART_LENGTH,
OTHER
};
@@ -617,6 +618,10 @@ public:
return _allow_smpte_bv20;
}
+ int isdcf_name_part_length() const {
+ return _isdcf_name_part_length;
+ }
+
/* SET (mostly) */
void set_master_encoding_threads (int n) {
@@ -1194,6 +1199,10 @@ public:
maybe_set(_allow_smpte_bv20, allow, ALLOW_SMPTE_BV20);
}
+ void set_isdcf_name_part_length(int length) {
+ maybe_set(_isdcf_name_part_length, length, ISDCF_NAME_PART_LENGTH);
+ }
+
void changed (Property p = OTHER);
boost::signals2::signal<void (Property)> Changed;
/** Emitted if read() failed on an existing Config file. There is nothing
@@ -1432,6 +1441,7 @@ private:
boost::optional<int> _main_content_divider_sash_position;
DefaultAddFileLocation _default_add_file_location;
bool _allow_smpte_bv20;
+ int _isdcf_name_part_length;
ExportConfig _export;
diff --git a/src/lib/film.cc b/src/lib/film.cc
index ff0569aa5..4ed1f0f8b 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -863,7 +863,7 @@ Film::isdcf_name (bool if_created_now) const
}
}
- fixed_name = fixed_name.substr(0, 14);
+ fixed_name = fixed_name.substr(0, Config::instance()->isdcf_name_part_length());
isdcf_name += fixed_name;