summaryrefslogtreecommitdiff
path: root/src/lib/film.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/film.cc')
-rw-r--r--src/lib/film.cc29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc
index f8a3b192d..583a15e19 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -19,6 +19,7 @@
#include <stdexcept>
#include <iostream>
+#include <algorithm>
#include <fstream>
#include <cstdlib>
#include <sstream>
@@ -47,6 +48,7 @@
#include "scaler.h"
#include "decoder_factory.h"
#include "config.h"
+#include "check_hashes_job.h"
using namespace std;
using namespace boost;
@@ -68,7 +70,7 @@ Film::Film (string d, bool must_exist)
filesystem::path p (filesystem::system_complete (d));
filesystem::path result;
- for(filesystem::path::iterator i = p.begin(); i != p.end(); ++i) {
+ for (filesystem::path::iterator i = p.begin(); i != p.end(); ++i) {
if (*i == "..") {
if (filesystem::is_symlink (result) || result.filename() == "..") {
result /= *i;
@@ -88,7 +90,7 @@ Film::Film (string d, bool must_exist)
read_metadata ();
- _log = new Log (_state.file ("log"));
+ _log = new FileLog (_state.file ("log"));
}
/** Copy constructor */
@@ -122,6 +124,10 @@ Film::read_metadata ()
continue;
}
+ if (line[line.size() - 1] == '\r') {
+ line = line.substr (0, line.size() - 1);
+ }
+
size_t const s = line.find (' ');
if (s == string::npos) {
continue;
@@ -429,7 +435,6 @@ Film::j2k_dir () const
filesystem::path p;
-
/* Start with j2c */
p /= "j2c";
@@ -540,7 +545,8 @@ Film::make_dcp (bool transcode, int freq)
JobManager::instance()->add (shared_ptr<Job> (new TranscodeJob (fs, o, log ())));
}
}
-
+
+ JobManager::instance()->add (shared_ptr<Job> (new CheckHashesJob (fs, o, log ())));
JobManager::instance()->add (shared_ptr<Job> (new MakeDCPJob (fs, o, log ())));
}
@@ -641,3 +647,18 @@ Film::copy_from_dvd ()
JobManager::instance()->add (j);
}
+int
+Film::encoded_frames () const
+{
+ if (format() == 0) {
+ return 0;
+ }
+
+ int N = 0;
+ for (filesystem::directory_iterator i = filesystem::directory_iterator (j2k_dir ()); i != filesystem::directory_iterator(); ++i) {
+ ++N;
+ this_thread::interruption_point ();
+ }
+
+ return N;
+}