+ _master_encoding_threads = max (2U, boost::thread::hardware_concurrency ());
+ _server_encoding_threads = max (2U, boost::thread::hardware_concurrency ());
+ _server_port_base = 6192;
+ _use_any_servers = true;
+ _servers.clear ();
+ _only_servers_encode = false;
+ _tms_protocol = FileTransferProtocol::SCP;
+ _tms_ip = "";
+ _tms_path = ".";
+ _tms_user = "";
+ _tms_password = "";
+ _allow_any_dcp_frame_rate = false;
+ _allow_any_container = false;
+ _allow_96khz_audio = false;
+ _use_all_audio_channels = false;
+ _show_experimental_audio_processors = false;
+ _language = optional<string> ();
+ _default_still_length = 10;
+ _default_container = Ratio::from_id ("185");
+ _default_dcp_content_type = DCPContentType::from_isdcf_name ("FTR");
+ _default_dcp_audio_channels = 6;
+ _default_j2k_bandwidth = 150000000;
+ _default_audio_delay = 0;
+ _default_interop = false;
+ _default_metadata.clear ();
+ _upload_after_make_dcp = false;
+ _mail_server = "";
+ _mail_port = 25;
+ _mail_protocol = EmailProtocol::AUTO;
+ _mail_user = "";
+ _mail_password = "";
+ _kdm_from = "";
+ _kdm_cc.clear ();
+ _kdm_bcc = "";
+ _notification_from = "";
+ _notification_to = "";
+ _notification_cc.clear ();
+ _notification_bcc = "";
+ _check_for_updates = false;
+ _check_for_test_updates = false;
+ _maximum_j2k_bandwidth = 250000000;
+ _log_types = LogEntry::TYPE_GENERAL | LogEntry::TYPE_WARNING | LogEntry::TYPE_ERROR | LogEntry::TYPE_DISK;
+ _analyse_ebur128 = true;
+ _automatic_audio_analysis = false;
+#ifdef DCPOMATIC_WINDOWS
+ _win32_console = false;
+#endif
+ /* At the moment we don't write these files anywhere new after a version change, so they will be read from
+ * ~/.config/dcpomatic2 (or equivalent) and written back there.
+ */
+ _cinemas_file = read_path ("cinemas.xml");
+ _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");
+ _dcp_metadata_filename_format = dcp::NameFormat ("%t");
+ _dcp_asset_filename_format = dcp::NameFormat ("%t");
+ _jump_to_selected = true;
+ for (int i = 0; i < NAG_COUNT; ++i) {
+ _nagged[i] = false;
+ }
+ _sound = true;
+ _sound_output = optional<string> ();
+ _last_kdm_write_type = KDM_WRITE_FLAT;
+ _last_dkdm_write_type = DKDM_WRITE_INTERNAL;
+
+ /* 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
+ and the shortest time S we could encode L/S frames per thread whilst waiting
+ for the L frame to encode so we might have to store LT/S frames.
+
+ However we don't want to use too much memory, so keep it a bit lower than we'd
+ perhaps like. A J2K frame is typically about 1Mb so 3 here will mean we could
+ use about 240Mb with 72 encoding threads.
+ */
+ _frames_in_memory_multiplier = 3;
+ _decode_reduction = optional<int>();
+ _default_notify = false;
+ for (int i = 0; i < NOTIFICATION_COUNT; ++i) {
+ _notification[i] = false;
+ }
+ _barco_username = optional<string>();
+ _barco_password = optional<string>();
+ _christie_username = optional<string>();
+ _christie_password = optional<string>();
+ _gdc_username = optional<string>();
+ _gdc_password = optional<string>();
+ _player_mode = PLAYER_MODE_WINDOW;
+ _image_display = 0;
+ _video_view_type = VIDEO_VIEW_SIMPLE;
+ _respect_kdm_validity_periods = true;
+ _player_debug_log_file = boost::none;
+ _player_content_directory = boost::none;
+ _player_playlist_directory = boost::none;
+ _player_kdm_directory = boost::none;
+ _audio_mapping = boost::none;
+ _custom_languages.clear ();
+ _add_files_path = boost::none;
+ _use_isdcf_name_by_default = true;
+ _write_kdms_to_disk = true;
+ _email_kdms = false;
+ _default_kdm_type = dcp::Formulation::MODIFIED_TRANSITIONAL_1;
+ _default_kdm_duration = RoughDuration(1, RoughDuration::Unit::WEEKS);
+ _auto_crop_threshold = 0.1;
+ _last_release_notes_version = boost::none;
+
+ _allowed_dcp_frame_rates.clear ();