X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fencoder.cc;fp=src%2Flib%2Fencoder.cc;h=2364b67a7ceccb5a1ced874efad51b83228fdcaa;hp=b83cbc10a71a46ad434615d2bc83a0d8e303e384;hb=39bc73fe192f932ed6695eb87b19de446e8b4f55;hpb=bb0a36c3a6bea9cd1ebdde7b8a3a04765e317569 diff --git a/src/lib/encoder.cc b/src/lib/encoder.cc index b83cbc10a..2364b67a7 100644 --- a/src/lib/encoder.cc +++ b/src/lib/encoder.cc @@ -35,7 +35,7 @@ #include "writer.h" #include "server_finder.h" #include "player.h" -#include "dcp_video.h" +#include "player_video_frame.h" #include "i18n.h" @@ -123,9 +123,9 @@ Encoder::process_end () */ for (list >::iterator i = _queue.begin(); i != _queue.end(); ++i) { - _film->log()->log (String::compose (N_("Encode left-over frame %1"), (*i)->frame ())); + _film->log()->log (String::compose (N_("Encode left-over frame %1"), (*i)->index ())); try { - _writer->write ((*i)->encode_locally(), (*i)->frame (), (*i)->eyes ()); + _writer->write ((*i)->encode_locally(), (*i)->index (), (*i)->eyes ()); frame_done (); } catch (std::exception& e) { _film->log()->log (String::compose (N_("Local encode failed (%1)"), e.what ())); @@ -178,7 +178,7 @@ Encoder::frame_done () } void -Encoder::process_video (shared_ptr frame) +Encoder::process_video (shared_ptr pvf) { _waker.nudge (); @@ -205,17 +205,15 @@ Encoder::process_video (shared_ptr frame) rethrow (); if (_writer->can_fake_write (_video_frames_out)) { - _writer->fake_write (_video_frames_out, frame->eyes ()); + _writer->fake_write (_video_frames_out, pvf->eyes ()); frame_done (); } else { /* Queue this new frame for encoding */ TIMING ("adding to queue of %1", _queue.size ()); _queue.push_back (shared_ptr ( new DCPVideoFrame ( - frame->image(PIX_FMT_RGB24, false), + pvf, _video_frames_out, - frame->eyes(), - frame->conversion(), _film->video_frame_rate(), _film->j2k_bandwidth(), _film->resolution(), @@ -226,7 +224,7 @@ Encoder::process_video (shared_ptr frame) _condition.notify_all (); } - if (frame->eyes() != EYES_LEFT) { + if (pvf->eyes() != EYES_LEFT) { ++_video_frames_out; } } @@ -280,7 +278,7 @@ try TIMING ("encoder thread %1 wakes with queue of %2", boost::this_thread::get_id(), _queue.size()); shared_ptr vf = _queue.front (); - TIMING ("encoder thread %1 pops frame %2 (%3) from queue", boost::this_thread::get_id(), vf->frame(), vf->eyes ()); + TIMING ("encoder thread %1 pops frame %2 (%3) from queue", boost::this_thread::get_id(), vf->index(), vf->eyes ()); _queue.pop_front (); lock.unlock (); @@ -306,27 +304,27 @@ try _film->log()->log ( String::compose ( N_("Remote encode of %1 on %2 failed (%3); thread sleeping for %4s"), - vf->frame(), server->host_name(), e.what(), remote_backoff) + vf->index(), server->host_name(), e.what(), remote_backoff) ); } } else { try { - TIMING ("encoder thread %1 begins local encode of %2", boost::this_thread::get_id(), vf->frame()); + TIMING ("encoder thread %1 begins local encode of %2", boost::this_thread::get_id(), vf->index()); encoded = vf->encode_locally (); - TIMING ("encoder thread %1 finishes local encode of %2", boost::this_thread::get_id(), vf->frame()); + TIMING ("encoder thread %1 finishes local encode of %2", boost::this_thread::get_id(), vf->index()); } catch (std::exception& e) { _film->log()->log (String::compose (N_("Local encode failed (%1)"), e.what ())); } } if (encoded) { - _writer->write (encoded, vf->frame (), vf->eyes ()); + _writer->write (encoded, vf->index (), vf->eyes ()); frame_done (); } else { lock.lock (); _film->log()->log ( - String::compose (N_("Encoder thread %1 pushes frame %2 back onto queue after failure"), boost::this_thread::get_id(), vf->frame()) + String::compose (N_("Encoder thread %1 pushes frame %2 back onto queue after failure"), boost::this_thread::get_id(), vf->index()) ); _queue.push_front (vf); lock.unlock ();