summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2017-04-27 11:57:15 +0100
committerCarl Hetherington <cth@carlh.net>2017-04-27 11:57:15 +0100
commit1f7f758273eb3c98356438da897b7709f8cb87f0 (patch)
tree06fb17aa8ee01c91779402f1abb3c5d2a389ed7a /src
parent350c6ca06fd782917586d039850c93f8f9613707 (diff)
Distinguish master DoM encode threads count from the server count.
Diffstat (limited to 'src')
-rw-r--r--src/lib/config.cc14
-rw-r--r--src/lib/config.h26
-rw-r--r--src/lib/encoder.cc2
-rw-r--r--src/lib/film.cc2
-rw-r--r--src/lib/writer.cc2
-rw-r--r--src/tools/dcpomatic_cli.cc2
-rw-r--r--src/tools/dcpomatic_server.cc2
-rw-r--r--src/tools/dcpomatic_server_cli.cc2
-rw-r--r--src/wx/config_dialog.cc32
9 files changed, 58 insertions, 26 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc
index de44c5c77..9fdf57207 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -72,7 +72,8 @@ Config::Config ()
void
Config::set_defaults ()
{
- _num_local_encoding_threads = max (2U, boost::thread::hardware_concurrency ());
+ _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 ();
@@ -162,7 +163,13 @@ try
optional<int> version = f.optional_number_child<int> ("Version");
- _num_local_encoding_threads = f.number_child<int> ("NumLocalEncodingThreads");
+ if (f.optional_number_child<int>("NumLocalEncodingThreads")) {
+ _master_encoding_threads = _server_encoding_threads = f.optional_number_child<int>("NumLocalEncodingThreads").get();
+ } else {
+ _master_encoding_threads = f.number_child<int>("MasterEncodingThreads");
+ _server_encoding_threads = f.number_child<int>("ServerEncodingThreads");
+ }
+
_default_directory = f.optional_string_child ("DefaultDirectory");
if (_default_directory && _default_directory->empty ()) {
/* We used to store an empty value for this to mean "none set" */
@@ -392,7 +399,8 @@ Config::write_config () const
xmlpp::Element* root = doc.create_root_node ("Config");
root->add_child("Version")->add_child_text ("2");
- root->add_child("NumLocalEncodingThreads")->add_child_text (raw_convert<string> (_num_local_encoding_threads));
+ root->add_child("MasterEncodingThreads")->add_child_text (raw_convert<string> (_master_encoding_threads));
+ root->add_child("ServerEncodingThreads")->add_child_text (raw_convert<string> (_server_encoding_threads));
if (_default_directory) {
root->add_child("DefaultDirectory")->add_child_text (_default_directory->string ());
}
diff --git a/src/lib/config.h b/src/lib/config.h
index a574cc261..40380f825 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -47,9 +47,14 @@ class Film;
class Config : public boost::noncopyable
{
public:
- /** @return number of threads to use for J2K encoding on the local machine */
- int num_local_encoding_threads () const {
- return _num_local_encoding_threads;
+ /** @return number of threads which a master DoM should use for J2K encoding on the local machine */
+ int master_encoding_threads () const {
+ return _master_encoding_threads;
+ }
+
+ /** @return number of threads which a server should use for J2K encoding on the local machine */
+ int server_encoding_threads () const {
+ return _server_encoding_threads;
}
boost::optional<boost::filesystem::path> default_directory () const {
@@ -316,9 +321,12 @@ public:
return _preview_sound_output;
}
- /** @param n New number of local encoding threads */
- void set_num_local_encoding_threads (int n) {
- maybe_set (_num_local_encoding_threads, n);
+ void set_master_encoding_threads (int n) {
+ maybe_set (_master_encoding_threads, n);
+ }
+
+ void set_server_encoding_threads (int n) {
+ maybe_set (_server_encoding_threads, n);
}
void set_default_directory (boost::filesystem::path d) {
@@ -628,8 +636,10 @@ private:
changed (prop);
}
- /** number of threads to use for J2K encoding on the local machine */
- int _num_local_encoding_threads;
+ /** number of threads which a master DoM should use for J2K encoding on the local machine */
+ int _master_encoding_threads;
+ /** number of threads which a server should use for J2K encoding on the local machine */
+ int _server_encoding_threads;
/** default directory to put new films in */
boost::optional<boost::filesystem::path> _default_directory;
/** base port number to use for J2K encoding servers;
diff --git a/src/lib/encoder.cc b/src/lib/encoder.cc
index e43325f58..276ef8d3a 100644
--- a/src/lib/encoder.cc
+++ b/src/lib/encoder.cc
@@ -414,7 +414,7 @@ Encoder::servers_list_changed ()
#endif
if (!Config::instance()->only_servers_encode ()) {
- for (int i = 0; i < Config::instance()->num_local_encoding_threads (); ++i) {
+ for (int i = 0; i < Config::instance()->master_encoding_threads (); ++i) {
boost::thread* t = new boost::thread (boost::bind (&Encoder::encoder_thread, this, optional<EncodeServerDescription> ()));
_threads.push_back (t);
#ifdef BOOST_THREAD_PLATFORM_WIN32
diff --git a/src/lib/film.cc b/src/lib/film.cc
index 82a40d5c4..218dc58ef 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -335,7 +335,7 @@ Film::make_dcp ()
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 ("%1 threads", Config::instance()->master_encoding_threads());
}
LOG_GENERAL ("J2K bandwidth %1", j2k_bandwidth());
diff --git a/src/lib/writer.cc b/src/lib/writer.cc
index c507c5527..87cdac2d8 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -489,7 +489,7 @@ Writer::finish ()
shared_ptr<boost::asio::io_service::work> work (new boost::asio::io_service::work (service));
- int const threads = max (1, Config::instance()->num_local_encoding_threads ());
+ int const threads = max (1, Config::instance()->master_encoding_threads ());
for (int i = 0; i < threads; ++i) {
pool.create_thread (boost::bind (&boost::asio::io_service::run, &service));
diff --git a/src/tools/dcpomatic_cli.cc b/src/tools/dcpomatic_cli.cc
index 00087d6a0..cfd8b3eae 100644
--- a/src/tools/dcpomatic_cli.cc
+++ b/src/tools/dcpomatic_cli.cc
@@ -270,7 +270,7 @@ main (int argc, char* argv[])
}
if (threads) {
- Config::instance()->set_num_local_encoding_threads (threads.get ());
+ Config::instance()->set_master_encoding_threads (threads.get ());
}
shared_ptr<Film> film;
diff --git a/src/tools/dcpomatic_server.cc b/src/tools/dcpomatic_server.cc
index aff98912f..8e9ce7537 100644
--- a/src/tools/dcpomatic_server.cc
+++ b/src/tools/dcpomatic_server.cc
@@ -289,7 +289,7 @@ private:
void main_thread ()
try {
- EncodeServer server (server_log, false, Config::instance()->num_local_encoding_threads());
+ EncodeServer server (server_log, false, Config::instance()->server_encoding_threads());
server.run ();
} catch (...) {
store_current ();
diff --git a/src/tools/dcpomatic_server_cli.cc b/src/tools/dcpomatic_server_cli.cc
index fa13ebb5f..6dca8064c 100644
--- a/src/tools/dcpomatic_server_cli.cc
+++ b/src/tools/dcpomatic_server_cli.cc
@@ -64,7 +64,7 @@ main (int argc, char* argv[])
dcpomatic_setup_path_encoding ();
dcpomatic_setup ();
- int num_threads = Config::instance()->num_local_encoding_threads ();
+ int num_threads = Config::instance()->server_encoding_threads ();
bool verbose = false;
bool write_log = false;
diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc
index 613d8f6e1..570d5e448 100644
--- a/src/wx/config_dialog.cc
+++ b/src/wx/config_dialog.cc
@@ -194,9 +194,14 @@ private:
restart->SetFont (font);
++r;
- add_label_to_sizer (table, _panel, _("Threads to use for encoding on this host"), true, wxGBPosition (r, 0));
- _num_local_encoding_threads = new wxSpinCtrl (_panel);
- table->Add (_num_local_encoding_threads, wxGBPosition (r, 1));
+ add_label_to_sizer (table, _panel, _("Number of threads DCP-o-matic should use"), true, wxGBPosition (r, 0));
+ _master_encoding_threads = new wxSpinCtrl (_panel);
+ table->Add (_master_encoding_threads, wxGBPosition (r, 1));
+ ++r;
+
+ add_label_to_sizer (table, _panel, _("Number of threads DCP-o-matic encode server should use"), true, wxGBPosition (r, 0));
+ _server_encoding_threads = new wxSpinCtrl (_panel);
+ table->Add (_server_encoding_threads, wxGBPosition (r, 1));
++r;
add_label_to_sizer (table, _panel, _("Cinema and screen database file"), true, wxGBPosition (r, 0));
@@ -256,8 +261,10 @@ private:
_preview_sound->Bind (wxEVT_CHECKBOX, boost::bind (&GeneralPage::preview_sound_changed, this));
_preview_sound_output->Bind (wxEVT_CHOICE, boost::bind (&GeneralPage::preview_sound_output_changed, this));
- _num_local_encoding_threads->SetRange (1, 128);
- _num_local_encoding_threads->Bind (wxEVT_SPINCTRL, boost::bind (&GeneralPage::num_local_encoding_threads_changed, this));
+ _master_encoding_threads->SetRange (1, 128);
+ _master_encoding_threads->Bind (wxEVT_SPINCTRL, boost::bind (&GeneralPage::master_encoding_threads_changed, this));
+ _server_encoding_threads->SetRange (1, 128);
+ _server_encoding_threads->Bind (wxEVT_SPINCTRL, boost::bind (&GeneralPage::server_encoding_threads_changed, this));
#ifdef DCPOMATIC_HAVE_EBUR128_PATCHED_FFMPEG
_analyse_ebur128->Bind (wxEVT_CHECKBOX, boost::bind (&GeneralPage::analyse_ebur128_changed, this));
@@ -300,7 +307,8 @@ private:
checked_set (_language, lang);
- checked_set (_num_local_encoding_threads, config->num_local_encoding_threads ());
+ checked_set (_master_encoding_threads, config->master_encoding_threads ());
+ checked_set (_server_encoding_threads, config->server_encoding_threads ());
#ifdef DCPOMATIC_HAVE_EBUR128_PATCHED_FFMPEG
checked_set (_analyse_ebur128, config->analyse_ebur128 ());
#endif
@@ -398,9 +406,14 @@ private:
Config::instance()->set_check_for_test_updates (_check_for_test_updates->GetValue ());
}
- void num_local_encoding_threads_changed ()
+ void master_encoding_threads_changed ()
+ {
+ Config::instance()->set_master_encoding_threads (_master_encoding_threads->GetValue ());
+ }
+
+ void server_encoding_threads_changed ()
{
- Config::instance()->set_num_local_encoding_threads (_num_local_encoding_threads->GetValue ());
+ Config::instance()->set_server_encoding_threads (_server_encoding_threads->GetValue ());
}
void issuer_changed ()
@@ -436,7 +449,8 @@ private:
wxCheckBox* _set_language;
wxChoice* _language;
- wxSpinCtrl* _num_local_encoding_threads;
+ wxSpinCtrl* _master_encoding_threads;
+ wxSpinCtrl* _server_encoding_threads;
FilePickerCtrl* _cinemas_file;
wxCheckBox* _preview_sound;
wxChoice* _preview_sound_output;