X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fencoder.cc;h=7a0295e4c52dc9a85e7d20980cd7fa6840eb7eab;hb=e80732c66bb8907836eafeb816d695f96e063843;hp=0c9faa70d331bb722d70ffd17ba924456e344133;hpb=88065ad7e9070c7c6a0f9b15202c392084e9e8ba;p=dcpomatic.git diff --git a/src/lib/encoder.cc b/src/lib/encoder.cc index 0c9faa70d..7a0295e4c 100644 --- a/src/lib/encoder.cc +++ b/src/lib/encoder.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2014 Carl Hetherington + Copyright (C) 2012-2015 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 @@ -21,9 +21,6 @@ * @brief Parent class for classes which can encode video and audio frames. */ -#include -#include -#include #include "encoder.h" #include "util.h" #include "film.h" @@ -36,6 +33,9 @@ #include "server_finder.h" #include "player.h" #include "player_video.h" +#include +#include +#include #include "i18n.h" @@ -80,10 +80,12 @@ Encoder::~Encoder () void Encoder::add_worker_threads (ServerDescription d) { - LOG_GENERAL (N_("Adding %1 worker threads for remote %2"), d.host_name ()); + LOG_GENERAL (N_("Adding %1 worker threads for remote %2"), d.threads(), d.host_name ()); for (int i = 0; i < d.threads(); ++i) { _threads.push_back (new boost::thread (boost::bind (&Encoder::encoder_thread, this, d))); } + + _writer->set_encoder_threads (_threads.size ()); } void @@ -93,7 +95,11 @@ Encoder::begin () _threads.push_back (new boost::thread (boost::bind (&Encoder::encoder_thread, this, optional ()))); } - ServerFinder::instance()->connect (boost::bind (&Encoder::server_found, this, _1)); + _writer->set_encoder_threads (_threads.size ()); + + if (!ServerFinder::instance()->disabled ()) { + _server_found_connection = ServerFinder::instance()->connect (boost::bind (&Encoder::server_found, this, _1)); + } } void @@ -127,7 +133,11 @@ Encoder::end () for (list >::iterator i = _queue.begin(); i != _queue.end(); ++i) { LOG_GENERAL (N_("Encode left-over frame %1"), (*i)->index ()); try { - _writer->write ((*i)->encode_locally(), (*i)->index (), (*i)->eyes ()); + _writer->write ( + (*i)->encode_locally (boost::bind (&Log::dcp_log, _film->log().get(), _1, _2)), + (*i)->index (), + (*i)->eyes () + ); frame_done (); } catch (std::exception& e) { LOG_ERROR (N_("Local encode failed (%1)"), e.what ()); @@ -322,7 +332,7 @@ try } else { try { LOG_TIMING ("[%1] encoder thread begins local encode of %2", boost::this_thread::get_id(), vf->index()); - encoded = vf->encode_locally (); + encoded = vf->encode_locally (boost::bind (&Log::dcp_log, _film->log().get(), _1, _2)); LOG_TIMING ("[%1] encoder thread finishes local encode of %2", boost::this_thread::get_id(), vf->index()); } catch (std::exception& e) { LOG_ERROR (N_("Local encode failed (%1)"), e.what ());