summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-05-29 00:58:36 +0100
committerCarl Hetherington <cth@carlh.net>2016-05-29 00:59:58 +0100
commitcccf38a8c058ee45b4e2ea0d453a29c793ca274d (patch)
treea5931ce7e89ffd64dd04e6cdd997a912e0ba32ba /src
parent2495aa7fb0867609245664375dccd0234235102d (diff)
Move transcode progress updating.
Do this in the transcoder rather than the writer so that it updates even if video is being referenced.
Diffstat (limited to 'src')
-rw-r--r--src/lib/transcoder.cc9
-rw-r--r--src/lib/transcoder.h1
-rw-r--r--src/lib/writer.cc17
3 files changed, 10 insertions, 17 deletions
diff --git a/src/lib/transcoder.cc b/src/lib/transcoder.cc
index eb787dee8..8afd64709 100644
--- a/src/lib/transcoder.cc
+++ b/src/lib/transcoder.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -40,6 +40,8 @@
#include <boost/foreach.hpp>
#include <iostream>
+#include "i18n.h"
+
using std::string;
using std::cout;
using std::list;
@@ -53,6 +55,7 @@ using boost::dynamic_pointer_cast;
*/
Transcoder::Transcoder (shared_ptr<const Film> film, shared_ptr<Job> j)
: _film (film)
+ , _job (j)
, _player (new Player (film, film->playlist ()))
, _writer (new Writer (film, j))
, _encoder (new Encoder (film, _writer))
@@ -67,6 +70,8 @@ Transcoder::go ()
_writer->start ();
_encoder->begin ();
+ _job->sub (_("Encoding picture and sound"));
+
DCPTime const frame = DCPTime::from_frames (1, _film->video_frame_rate ());
DCPTime const length = _film->length ();
@@ -93,6 +98,8 @@ Transcoder::go ()
if (non_burnt_subtitles) {
_writer->write (_player->get_subtitles (t, frame, true, false, true));
}
+
+ _job->set_progress (float(t.get()) / length.get());
}
BOOST_FOREACH (ReferencedReelAsset i, _player->get_reel_assets ()) {
diff --git a/src/lib/transcoder.h b/src/lib/transcoder.h
index 01446dccd..a01b6a64a 100644
--- a/src/lib/transcoder.h
+++ b/src/lib/transcoder.h
@@ -44,6 +44,7 @@ public:
private:
boost::shared_ptr<const Film> _film;
+ boost::shared_ptr<Job> _job;
boost::shared_ptr<Player> _player;
boost::shared_ptr<Writer> _writer;
boost::shared_ptr<Encoder> _encoder;
diff --git a/src/lib/writer.cc b/src/lib/writer.cc
index 8c01afe7c..4a99b0793 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -96,8 +96,6 @@ Writer::Writer (shared_ptr<const Film> film, weak_ptr<Job> j)
if (_film->is_signed() && !Config::instance()->signer_chain()->valid ()) {
throw InvalidSignerError ();
}
-
- job->sub (_("Encoding image data"));
}
void
@@ -360,19 +358,6 @@ try
}
lock.lock ();
-
- shared_ptr<Job> job = _job.lock ();
- DCPOMATIC_ASSERT (job);
- int64_t total = _film->length().frames_round (_film->video_frame_rate ());
- if (_film->three_d ()) {
- /* _full_written and so on are incremented for each eye, so we need to double the total
- frames to get the correct progress.
- */
- total *= 2;
- }
- if (total) {
- job->set_progress (float (_full_written + _fake_written + _repeat_written) / total);
- }
}
while (_queued_full_in_memory > _maximum_frames_in_memory) {