From: Carl Hetherington Date: Tue, 18 Aug 2015 23:21:43 +0000 (+0100) Subject: Add only-servers-encode option for debugging / optimisation / testing of servers. X-Git-Tag: v2.1.42~7 X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=c450fb19ea21dba0a6cade81e829262e7078e9df Add only-servers-encode option for debugging / optimisation / testing of servers. --- diff --git a/src/lib/config.cc b/src/lib/config.cc index 5f59d8e6c..211637ede 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -69,6 +69,7 @@ Config::set_defaults () _server_port_base = 6192; _use_any_servers = true; _servers.clear (); + _only_servers_encode = false; _tms_protocol = PROTOCOL_SCP; _tms_ip = ""; _tms_path = "."; @@ -155,6 +156,7 @@ Config::read () } } + _only_servers_encode = f.optional_bool_child ("OnlyServersEncode").get_value_or (false); _tms_protocol = static_cast (f.optional_number_child ("TMSProtocol").get_value_or (static_cast (PROTOCOL_SCP))); _tms_ip = f.string_child ("TMSIP"); _tms_path = f.string_child ("TMSPath"); @@ -322,6 +324,7 @@ Config::write () const root->add_child("Server")->add_child_text (*i); } + root->add_child("OnlyServersEncode")->add_child_text (_only_servers_encode ? "1" : "0"); root->add_child("TMSProtocol")->add_child_text (raw_convert (_tms_protocol)); root->add_child("TMSIP")->add_child_text (_tms_ip); root->add_child("TMSPath")->add_child_text (_tms_path); diff --git a/src/lib/config.h b/src/lib/config.h index 40b655342..0839ea994 100644 --- a/src/lib/config.h +++ b/src/lib/config.h @@ -90,6 +90,10 @@ public: return _servers; } + bool only_servers_encode () const { + return _only_servers_encode; + } + Protocol tms_protocol () const { return _tms_protocol; } @@ -251,6 +255,10 @@ public: maybe_set (_server_port_base, p); } + void set_only_servers_encode (bool o) { + maybe_set (_only_servers_encode, o); + } + void set_tms_protocol (Protocol p) { maybe_set (_tms_protocol, p); } @@ -455,6 +463,7 @@ private: bool _use_any_servers; /** J2K encoding servers that should definitely be used */ std::vector _servers; + bool _only_servers_encode; Protocol _tms_protocol; /** The IP address of a TMS that we can copy DCPs to */ std::string _tms_ip; diff --git a/src/lib/encoder.cc b/src/lib/encoder.cc index 09788d3fa..917f313a2 100644 --- a/src/lib/encoder.cc +++ b/src/lib/encoder.cc @@ -89,8 +89,10 @@ Encoder::add_worker_threads (ServerDescription d) void Encoder::begin () { - for (int i = 0; i < Config::instance()->num_local_encoding_threads (); ++i) { - _threads.push_back (new boost::thread (boost::bind (&Encoder::encoder_thread, this, optional ()))); + if (!Config::instance()->only_servers_encode ()) { + for (int i = 0; i < Config::instance()->num_local_encoding_threads (); ++i) { + _threads.push_back (new boost::thread (boost::bind (&Encoder::encoder_thread, this, optional ()))); + } } _writer->set_encoder_threads (_threads.size ()); diff --git a/src/lib/film.cc b/src/lib/film.cc index 9066b7c5a..8cd9f9548 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -266,7 +266,11 @@ Film::make_dcp () LOG_GENERAL ("Content: %1", i->technical_summary()); } LOG_GENERAL ("DCP video rate %1 fps", video_frame_rate()); - LOG_GENERAL ("%1 threads", Config::instance()->num_local_encoding_threads()); + if (Config::instance()->only_servers_encode ()) { + LOG_GENERAL_NC ("0 threads: ONLY SERVERS SET TO ENCODE"); + } else { + LOG_GENERAL ("%1 threads", Config::instance()->num_local_encoding_threads()); + } LOG_GENERAL ("J2K bandwidth %1", j2k_bandwidth()); if (container() == 0) { diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index f7053d1c2..e1ffd393c 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -1179,6 +1179,7 @@ public: : StockPage (Kind_Advanced, panel_size, border) , _maximum_j2k_bandwidth (0) , _allow_any_dcp_frame_rate (0) + , _only_servers_encode (0) , _log_general (0) , _log_warning (0) , _log_error (0) @@ -1207,6 +1208,10 @@ private: table->Add (_allow_any_dcp_frame_rate, 1, wxEXPAND | wxALL); table->AddSpacer (0); + _only_servers_encode = new wxCheckBox (_panel, wxID_ANY, _("Only servers encode")); + table->Add (_only_servers_encode, 1, wxEXPAND | wxALL); + table->AddSpacer (0); + #ifdef __WXOSX__ wxStaticText* m = new wxStaticText (_panel, wxID_ANY, _("Log:")); table->Add (m, 0, wxALIGN_TOP | wxLEFT | wxRIGHT | wxEXPAND | wxALL | wxALIGN_RIGHT, 6); @@ -1241,6 +1246,7 @@ private: _maximum_j2k_bandwidth->SetRange (1, 1000); _maximum_j2k_bandwidth->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&AdvancedPage::maximum_j2k_bandwidth_changed, this)); _allow_any_dcp_frame_rate->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::allow_any_dcp_frame_rate_changed, this)); + _only_servers_encode->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::only_servers_encode_changed, this)); _log_general->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this)); _log_warning->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this)); _log_error->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this)); @@ -1258,6 +1264,7 @@ private: checked_set (_maximum_j2k_bandwidth, config->maximum_j2k_bandwidth() / 1000000); checked_set (_allow_any_dcp_frame_rate, config->allow_any_dcp_frame_rate ()); + checked_set (_only_servers_encode, config->only_servers_encode ()); checked_set (_log_general, config->log_types() & Log::TYPE_GENERAL); checked_set (_log_warning, config->log_types() & Log::TYPE_WARNING); checked_set (_log_error, config->log_types() & Log::TYPE_ERROR); @@ -1279,6 +1286,11 @@ private: Config::instance()->set_allow_any_dcp_frame_rate (_allow_any_dcp_frame_rate->GetValue ()); } + void only_servers_encode_changed () + { + Config::instance()->set_only_servers_encode (_only_servers_encode->GetValue ()); + } + void log_changed () { int types = 0; @@ -1312,6 +1324,7 @@ private: wxSpinCtrl* _maximum_j2k_bandwidth; wxCheckBox* _allow_any_dcp_frame_rate; + wxCheckBox* _only_servers_encode; wxCheckBox* _log_general; wxCheckBox* _log_warning; wxCheckBox* _log_error;