X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fj2k_encoder.cc;h=daba87c5986ee6a62240ac78ecb1ec609df1da3a;hb=607b1b4d8061237e3c90368c73c58a172a69c950;hp=55961fc6be9683861922253953f2774443b2d474;hpb=d311043bf3c1e3e7f41b314f7ab7c91ed7e5aa7f;p=dcpomatic.git diff --git a/src/lib/j2k_encoder.cc b/src/lib/j2k_encoder.cc index 55961fc6b..daba87c59 100644 --- a/src/lib/j2k_encoder.cc +++ b/src/lib/j2k_encoder.cc @@ -34,7 +34,6 @@ #include "film.h" #include "j2k_encoder.h" #include "log.h" -#include "player.h" #include "player_video.h" #include "util.h" #include "writer.h" @@ -77,7 +76,7 @@ J2KEncoder::~J2KEncoder () void J2KEncoder::begin () { - auto wp = shared_from_this (); + weak_ptr wp = shared_from_this (); _server_found_connection = EncodeServerFinder::instance()->ServersListChanged.connect ( boost::bind (&J2KEncoder::call_servers_list_changed, wp) ); @@ -135,13 +134,13 @@ J2KEncoder::end () So just mop up anything left in the queue here. */ - for (auto i: _queue) { - LOG_GENERAL(N_("Encode left-over frame %1"), i->index()); + for (auto const& i: _queue) { + LOG_GENERAL(N_("Encode left-over frame %1"), i.index()); try { _writer->write ( - make_shared(i->encode_locally()), - i->index(), - i->eyes() + make_shared(i.encode_locally()), + i.index(), + i.eyes() ); frame_done (); } catch (std::exception& e) { @@ -230,14 +229,14 @@ J2KEncoder::encode (shared_ptr pv, DCPTime time) /* This frame already has J2K data, so just write it */ _writer->write (pv->j2k(), position, pv->eyes ()); frame_done (); - } else if (_last_player_video[static_cast(pv->eyes())] && _writer->can_repeat(position) && pv->same (_last_player_video[static_cast(pv->eyes())])) { + } else if (_last_player_video[pv->eyes()] && _writer->can_repeat(position) && pv->same(_last_player_video[pv->eyes()])) { LOG_DEBUG_ENCODE("Frame @ %1 REPEAT", to_string(time)); _writer->repeat (position, pv->eyes ()); } else { LOG_DEBUG_ENCODE("Frame @ %1 ENCODE", to_string(time)); /* Queue this new frame for encoding */ LOG_TIMING ("add-frame-to-queue queue=%1", _queue.size ()); - _queue.push_back (make_shared( + _queue.push_back (DCPVideo( pv, position, _film->video_frame_rate(), @@ -251,7 +250,7 @@ J2KEncoder::encode (shared_ptr pv, DCPTime time) _empty_condition.notify_all (); } - _last_player_video[static_cast(pv->eyes())] = pv; + _last_player_video[pv->eyes()] = pv; _last_player_video_time = time; } @@ -315,7 +314,7 @@ try { boost::this_thread::disable_interruption dis; - LOG_TIMING ("encoder-pop thread=%1 frame=%2 eyes=%3", thread_id(), vf->index(), (int) vf->eyes ()); + LOG_TIMING ("encoder-pop thread=%1 frame=%2 eyes=%3", thread_id(), vf.index(), static_cast(vf.eyes())); _queue.pop_front (); lock.unlock (); @@ -325,7 +324,7 @@ try /* We need to encode this input */ if (server) { try { - encoded = make_shared(vf->encode_remotely(server.get())); + encoded = make_shared(vf.encode_remotely(server.get())); if (remote_backoff > 0) { LOG_GENERAL ("%1 was lost, but now she is found; removing backoff", server->host_name ()); @@ -341,15 +340,15 @@ try } LOG_ERROR ( N_("Remote encode of %1 on %2 failed (%3); thread sleeping for %4s"), - vf->index(), server->host_name(), e.what(), remote_backoff + vf.index(), server->host_name(), e.what(), remote_backoff ); } } else { try { - LOG_TIMING ("start-local-encode thread=%1 frame=%2", thread_id(), vf->index()); - encoded = make_shared(vf->encode_locally()); - LOG_TIMING ("finish-local-encode thread=%1 frame=%2", thread_id(), vf->index()); + LOG_TIMING ("start-local-encode thread=%1 frame=%2", thread_id(), vf.index()); + encoded = make_shared(vf.encode_locally()); + LOG_TIMING ("finish-local-encode thread=%1 frame=%2", thread_id(), vf.index()); } catch (std::exception& e) { /* This is very bad, so don't cope with it, just pass it on */ LOG_ERROR (N_("Local encode failed (%1)"), e.what ()); @@ -358,11 +357,11 @@ try } if (encoded) { - _writer->write (encoded, vf->index(), vf->eyes()); + _writer->write (encoded, vf.index(), vf.eyes()); frame_done (); } else { lock.lock (); - LOG_GENERAL (N_("[%1] J2KEncoder thread pushes frame %2 back onto queue after failure"), thread_id(), vf->index()); + LOG_GENERAL (N_("[%1] J2KEncoder thread pushes frame %2 back onto queue after failure"), thread_id(), vf.index()); _queue.push_front (vf); lock.unlock (); }