Patch from Aaron.
[dcpomatic.git] / src / lib / config.cc
index e3325859f017d98b10a5b39f4e2f4cd40293e83c..2287cd592bb069d3e3bf024f7a230673250a0b39 100644 (file)
@@ -140,9 +140,9 @@ Config::set_defaults ()
        _dkdm_recipients_file = read_path ("dkdm_recipients.xml");
        _show_hints_before_make_dcp = true;
        _confirm_kdm_email = true;
-       _kdm_container_name_format = dcp::NameFormat ("KDM %f %c");
-       _kdm_filename_format = dcp::NameFormat ("KDM %f %c %s");
-       _dkdm_filename_format = dcp::NameFormat ("DKDM %f %c %s");
+       _kdm_container_name_format = dcp::NameFormat("KDM_%f_%c");
+       _kdm_filename_format = dcp::NameFormat("KDM_%f_%c_%s");
+       _dkdm_filename_format = dcp::NameFormat("DKDM_%f_%c_%s");
        _dcp_metadata_filename_format = dcp::NameFormat ("%t");
        _dcp_asset_filename_format = dcp::NameFormat ("%t");
        _jump_to_selected = true;
@@ -153,6 +153,7 @@ Config::set_defaults ()
        _sound_output = optional<string> ();
        _last_kdm_write_type = KDM_WRITE_FLAT;
        _last_dkdm_write_type = DKDM_WRITE_INTERNAL;
+       _default_add_file_location = DefaultAddFileLocation::SAME_AS_LAST_TIME;
 
        /* I think the scaling factor here should be the ratio of the longest frame
           encode time to the shortest; if the thread count is T, longest time is L
@@ -197,6 +198,8 @@ Config::set_defaults ()
        _default_kdm_duration = RoughDuration(1, RoughDuration::Unit::WEEKS);
        _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);
@@ -210,6 +213,13 @@ Config::set_defaults ()
        set_notification_email_to_default ();
        set_cover_sheet_to_default ();
 
+       _gpu_binary_location = "";
+       _enable_gpu = false;
+       _selected_gpu = 0;
+       _gpu_license_server = "";
+       _gpu_license_port = 5000;
+       _gpu_license = "";
+
        _main_divider_sash_position = {};
        _main_content_divider_sash_position = {};
 
@@ -620,6 +630,24 @@ try
        _main_divider_sash_position = f.optional_number_child<int>("MainDividerSashPosition");
        _main_content_divider_sash_position = f.optional_number_child<int>("MainContentDividerSashPosition");
 
+       if (auto loc = f.optional_string_child("DefaultAddFileLocation")) {
+               if (*loc == "last") {
+                       _default_add_file_location = DefaultAddFileLocation::SAME_AS_LAST_TIME;
+               } else if (*loc == "project") {
+                       _default_add_file_location = DefaultAddFileLocation::SAME_AS_PROJECT;
+               }
+       }
+
+       _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);
+
+       _enable_gpu = f.optional_bool_child("EnableGpu").get_value_or(false);
+       _gpu_binary_location = f.string_child("GpuBinaryLocation");
+       _selected_gpu = f.number_child<int>("SelectedGpu");
+       _gpu_license_server = f.string_child ("GpuLicenseServer");
+       _gpu_license_port = f.number_child<int> ("GpuLicensePort");
+       _gpu_license = f.string_child("GpuLicense");
+
        _export.read(f.optional_node_child("Export"));
 }
 catch (...) {
@@ -1097,6 +1125,22 @@ Config::write_config () const
                root->add_child("MainContentDividerSashPosition")->add_child_text(raw_convert<string>(*_main_content_divider_sash_position));
        }
 
+       root->add_child("DefaultAddFileLocation")->add_child_text(
+               _default_add_file_location == DefaultAddFileLocation::SAME_AS_LAST_TIME ? "last" : "project"
+               );
+
+       /* [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));
+
+       root->add_child("GpuBinaryLocation")->add_child_text (_gpu_binary_location);
+       root->add_child("EnableGpu")->add_child_text ((_enable_gpu ? "1" : "0"));
+       root->add_child("SelectedGpu")->add_child_text (raw_convert<string> (_selected_gpu));
+       root->add_child("GpuLicenseServer")->add_child_text (_gpu_license_server);
+       root->add_child("GpuLicensePort")->add_child_text (raw_convert<string> (_gpu_license_port));
+       root->add_child("GpuLicense")->add_child_text (_gpu_license);
+
        _export.write(root->add_child("Export"));
 
        auto target = config_write_file();
@@ -1273,7 +1317,7 @@ Config::add_to_player_history (boost::filesystem::path p)
        add_to_history_internal (_player_history, p);
 }
 
-/** Remove non-existant items from the player history */
+/** Remove non-existent items from the player history */
 void
 Config::clean_player_history ()
 {