From 0194092f7f2b4a6ceb3e69c470fae8c92bdca077 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 26 Apr 2013 22:25:09 +0100 Subject: [PATCH] Rename server and makedcp (temporarily?) so that it is parallel installable with dvd-o-matic. --- src/tools/makedcp.cc | 217 ------------------------------------ src/tools/servomatic_cli.cc | 97 ---------------- src/tools/servomatic_gui.cc | 174 ----------------------------- src/tools/wscript | 4 +- 4 files changed, 2 insertions(+), 490 deletions(-) delete mode 100644 src/tools/makedcp.cc delete mode 100644 src/tools/servomatic_cli.cc delete mode 100644 src/tools/servomatic_gui.cc diff --git a/src/tools/makedcp.cc b/src/tools/makedcp.cc deleted file mode 100644 index e2e1874c4..000000000 --- a/src/tools/makedcp.cc +++ /dev/null @@ -1,217 +0,0 @@ -/* - Copyright (C) 2012 Carl Hetherington - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#include -#include -#include -#include -#include -#include "format.h" -#include "film.h" -#include "filter.h" -#include "transcode_job.h" -#include "job_manager.h" -#include "ab_transcode_job.h" -#include "util.h" -#include "scaler.h" -#include "version.h" -#include "cross.h" -#include "config.h" -#include "log.h" - -using std::string; -using std::cerr; -using std::cout; -using std::vector; -using std::pair; -using std::list; -using boost::shared_ptr; - -static void -help (string n) -{ - cerr << "Syntax: " << n << " [OPTION] \n" - << " -v, --version show DCP-o-matic version\n" - << " -h, --help show this help\n" - << " -d, --deps list DCP-o-matic dependency details and quit\n" - << " -t, --test run in test mode (repeatable UUID generation, timestamps etc.)\n" - << " -n, --no-progress do not print progress to stdout\n" - << " -r, --no-remote do not use any remote servers\n" - << "\n" - << " is the film directory.\n"; -} - -int -main (int argc, char* argv[]) -{ - string film_dir; - bool test_mode = false; - bool progress = true; - bool no_remote = false; - int log_level = 1; - - int option_index = 0; - while (1) { - static struct option long_options[] = { - { "version", no_argument, 0, 'v'}, - { "help", no_argument, 0, 'h'}, - { "deps", no_argument, 0, 'd'}, - { "test", no_argument, 0, 't'}, - { "no-progress", no_argument, 0, 'n'}, - { "no-remote", no_argument, 0, 'r'}, - { "log-level", required_argument, 0, 'l' }, - { 0, 0, 0, 0 } - }; - - int c = getopt_long (argc, argv, "vhdtnrl:", long_options, &option_index); - - if (c == -1) { - break; - } - - switch (c) { - case 'v': - cout << "dcpomatic version " << dcpomatic_version << " " << dcpomatic_git_commit << "\n"; - exit (EXIT_SUCCESS); - case 'h': - help (argv[0]); - exit (EXIT_SUCCESS); - case 'd': - cout << dependency_version_summary () << "\n"; - exit (EXIT_SUCCESS); - case 't': - test_mode = true; - break; - case 'n': - progress = false; - break; - case 'r': - no_remote = true; - break; - case 'l': - log_level = atoi (optarg); - break; - } - } - - if (optind >= argc) { - help (argv[0]); - exit (EXIT_FAILURE); - } - - film_dir = argv[optind]; - - dcpomatic_setup (); - - if (no_remote) { - Config::instance()->set_servers (vector ()); - } - - cout << "DCP-o-matic " << dcpomatic_version << " git " << dcpomatic_git_commit; - char buf[256]; - if (gethostname (buf, 256) == 0) { - cout << " on " << buf; - } - cout << "\n"; - - if (test_mode) { - libdcp::enable_test_mode (); - cout << dependency_version_summary() << "\n"; - } - - shared_ptr film; - try { - film.reset (new Film (film_dir, true)); - } catch (std::exception& e) { - cerr << argv[0] << ": error reading film `" << film_dir << "' (" << e.what() << ")\n"; - exit (EXIT_FAILURE); - } - - film->log()->set_level ((Log::Level) log_level); - - cout << "\nMaking "; - if (film->ab()) { - cout << "A/B "; - } - cout << "DCP for " << film->name() << "\n"; - cout << "Test mode: " << (test_mode ? "yes" : "no") << "\n"; -// cout << "Content: " << film->content() << "\n"; - pair const f = Filter::ffmpeg_strings (film->filters ()); - cout << "Filters: " << f.first << " " << f.second << "\n"; - - film->make_dcp (); - - bool should_stop = false; - bool first = true; - bool error = false; - while (!should_stop) { - - dcpomatic_sleep (5); - - list > jobs = JobManager::instance()->get (); - - if (!first && progress) { - cout << "\033[" << jobs.size() << "A"; - cout.flush (); - } - - first = false; - - int unfinished = 0; - int finished_in_error = 0; - - for (list >::iterator i = jobs.begin(); i != jobs.end(); ++i) { - if (progress) { - cout << (*i)->name() << ": "; - - float const p = (*i)->overall_progress (); - - if (p >= 0) { - cout << (*i)->status() << " \n"; - } else { - cout << ": Running \n"; - } - } - - if (!(*i)->finished ()) { - ++unfinished; - } - - if ((*i)->finished_in_error ()) { - ++finished_in_error; - error = true; - } - - if (!progress && (*i)->finished_in_error ()) { - /* We won't see this error if we haven't been showing progress, - so show it now. - */ - cout << (*i)->status() << "\n"; - } - } - - if (unfinished == 0 || finished_in_error != 0) { - should_stop = true; - } - } - - return error ? EXIT_FAILURE : EXIT_SUCCESS; -} - - diff --git a/src/tools/servomatic_cli.cc b/src/tools/servomatic_cli.cc deleted file mode 100644 index 76d085034..000000000 --- a/src/tools/servomatic_cli.cc +++ /dev/null @@ -1,97 +0,0 @@ -/* - Copyright (C) 2012 Carl Hetherington - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#include "lib/server.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "config.h" -#include "dcp_video_frame.h" -#include "exceptions.h" -#include "util.h" -#include "config.h" -#include "scaler.h" -#include "image.h" -#include "log.h" -#include "version.h" - -using std::cerr; -using std::string; -using std::cout; -using boost::shared_ptr; - -static void -help (string n) -{ - cerr << "Syntax: " << n << " [OPTION]\n" - << " -v, --version show DCP-o-matic version\n" - << " -h, --help show this help\n" - << " -t, --threads number of parallel encoding threads to use\n"; -} - -int -main (int argc, char* argv[]) -{ - int num_threads = Config::instance()->num_local_encoding_threads (); - - int option_index = 0; - while (1) { - static struct option long_options[] = { - { "version", no_argument, 0, 'v'}, - { "help", no_argument, 0, 'h'}, - { "threads", required_argument, 0, 't'}, - { 0, 0, 0, 0 } - }; - - int c = getopt_long (argc, argv, "vht:", long_options, &option_index); - - if (c == -1) { - break; - } - - switch (c) { - case 'v': - cout << "dcpomatic version " << dcpomatic_version << " " << dcpomatic_git_commit << "\n"; - exit (EXIT_SUCCESS); - case 'h': - help (argv[0]); - exit (EXIT_SUCCESS); - case 't': - num_threads = atoi (optarg); - break; - } - } - - Scaler::setup_scalers (); - shared_ptr log (new FileLog ("servomatic.log")); - Server server (log); - server.run (num_threads); - return 0; -} diff --git a/src/tools/servomatic_gui.cc b/src/tools/servomatic_gui.cc deleted file mode 100644 index 152e063c1..000000000 --- a/src/tools/servomatic_gui.cc +++ /dev/null @@ -1,174 +0,0 @@ -/* - Copyright (C) 2012 Carl Hetherington - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#include -#include -#include -#include "wx_util.h" -#include "lib/util.h" -#include "lib/server.h" -#include "lib/config.h" - -using std::cout; -using std::string; -using boost::shared_ptr; -using boost::thread; -using boost::bind; - -enum { - ID_status = 1, - ID_quit, - ID_timer -}; - -class MemoryLog : public Log -{ -public: - - string get () const { - boost::mutex::scoped_lock (_mutex); - return _log; - } - -private: - void do_log (string m) - { - _log = m; - } - - string _log; -}; - -static shared_ptr memory_log (new MemoryLog); - -class StatusDialog : public wxDialog -{ -public: - StatusDialog () - : wxDialog (0, wxID_ANY, _("DCP-o-matic encode server"), wxDefaultPosition, wxSize (600, 80), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) - , _timer (this, ID_timer) - { - _sizer = new wxFlexGridSizer (1, 6, 6); - _sizer->AddGrowableCol (0, 1); - - _text = new wxTextCtrl (this, wxID_ANY, _(""), wxDefaultPosition, wxDefaultSize, wxTE_READONLY); - _sizer->Add (_text, 1, wxEXPAND); - - SetSizer (_sizer); - _sizer->Layout (); - - Connect (ID_timer, wxEVT_TIMER, wxTimerEventHandler (StatusDialog::update)); - _timer.Start (1000); - } - -private: - void update (wxTimerEvent &) - { - _text->ChangeValue (std_to_wx (memory_log->get ())); - _sizer->Layout (); - } - - wxFlexGridSizer* _sizer; - wxTextCtrl* _text; - wxTimer _timer; -}; - -class TaskBarIcon : public wxTaskBarIcon -{ -public: - TaskBarIcon () - { -#ifdef __WXMSW__ - wxIcon icon (std_to_wx ("taskbar_icon")); -#endif -#ifdef __WXGTK__ - wxInitAllImageHandlers(); - wxBitmap bitmap (wxString::Format (wxT ("%s/taskbar_icon.png"), POSIX_ICON_PREFIX), wxBITMAP_TYPE_PNG); - wxIcon icon; - icon.CopyFromBitmap (bitmap); -#endif - SetIcon (icon, std_to_wx ("DCP-o-matic encode server")); - - Connect (ID_status, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (TaskBarIcon::status)); - Connect (ID_quit, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (TaskBarIcon::quit)); - } - - wxMenu* CreatePopupMenu () - { - wxMenu* menu = new wxMenu; - menu->Append (ID_status, std_to_wx ("Status...")); - menu->Append (ID_quit, std_to_wx ("Quit")); - return menu; - } - -private: - void status (wxCommandEvent &) - { - StatusDialog* d = new StatusDialog; - d->Show (); - } - - void quit (wxCommandEvent &) - { - wxTheApp->ExitMainLoop (); - } -}; - -class App : public wxApp -{ -public: - App () - : wxApp () - , _thread (0) - , _icon (0) - {} - -private: - - bool OnInit () - { - if (!wxApp::OnInit ()) { - return false; - } - - dcpomatic_setup (); - - _icon = new TaskBarIcon; - _thread = new thread (bind (&App::main_thread, this)); - - return true; - } - - int OnExit () - { - delete _icon; - return wxApp::OnExit (); - } - - void main_thread () - { - Server server (memory_log); - server.run (Config::instance()->num_local_encoding_threads ()); - } - - boost::thread* _thread; - TaskBarIcon* _icon; -}; - -IMPLEMENT_APP (App) diff --git a/src/tools/wscript b/src/tools/wscript index f0ffb8e89..466f29031 100644 --- a/src/tools/wscript +++ b/src/tools/wscript @@ -4,7 +4,7 @@ from waflib import Logs import i18n def build(bld): - for t in ['makedcp', 'servomatic_cli', 'servomatictest']: + for t in ['dcpomatic_cli', 'dcpomatic_server_cli']: obj = bld(features = 'cxx cxxprogram') obj.uselib = 'BOOST_THREAD OPENJPEG DCP CXML AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC' obj.includes = ['..'] @@ -13,7 +13,7 @@ def build(bld): obj.target = t if not bld.env.DISABLE_GUI: - for t in ['dcpomatic', 'servomatic_gui']: + for t in ['dcpomatic', 'dcpomatic_server']: obj = bld(features = 'cxx cxxprogram') obj.uselib = 'DCP CXML OPENJPEG AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC' obj.includes = ['..'] -- 2.30.2