summaryrefslogtreecommitdiff
path: root/src/lib/job_manager.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-04-23 00:11:38 +0200
committerCarl Hetherington <cth@carlh.net>2020-04-24 00:46:31 +0200
commitcef7a679a59044a5c807768042deecfd56ec6fc2 (patch)
treeb0e020a2a70db228df0e96fd85b63a84d7d69b64 /src/lib/job_manager.cc
parent87d5a977da0696fbe73b96b2679b7cbb471e7255 (diff)
Add subtitle analysis so that the outline of all subtitles
in a piece of content can be overlaid onto the preview (#1233).
Diffstat (limited to 'src/lib/job_manager.cc')
-rw-r--r--src/lib/job_manager.cc39
1 files changed, 38 insertions, 1 deletions
diff --git a/src/lib/job_manager.cc b/src/lib/job_manager.cc
index d95f95a24..c40178f41 100644
--- a/src/lib/job_manager.cc
+++ b/src/lib/job_manager.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2020 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -26,6 +26,7 @@
#include "job.h"
#include "cross.h"
#include "analyse_audio_job.h"
+#include "analyse_subtitles_job.h"
#include "film.h"
#include <boost/thread.hpp>
#include <boost/foreach.hpp>
@@ -250,6 +251,42 @@ JobManager::analyse_audio (
emit (boost::bind (boost::ref (JobAdded), weak_ptr<Job> (job)));
}
+
+void
+JobManager::analyse_subtitles (
+ shared_ptr<const Film> film,
+ shared_ptr<Content> content,
+ boost::signals2::connection& connection,
+ function<void()> ready
+ )
+{
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+
+ BOOST_FOREACH (shared_ptr<Job> i, _jobs) {
+ shared_ptr<AnalyseSubtitlesJob> a = dynamic_pointer_cast<AnalyseSubtitlesJob> (i);
+ if (a && a->path() == film->subtitle_analysis_path(content)) {
+ i->when_finished (connection, ready);
+ return;
+ }
+ }
+ }
+
+ shared_ptr<AnalyseSubtitlesJob> job;
+
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+
+ job.reset (new AnalyseSubtitlesJob(film, content));
+ connection = job->Finished.connect (ready);
+ _jobs.push_back (job);
+ _empty_condition.notify_all ();
+ }
+
+ emit (boost::bind (boost::ref (JobAdded), weak_ptr<Job> (job)));
+}
+
+
void
JobManager::increase_priority (shared_ptr<Job> job)
{