diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-04-23 00:11:38 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-04-24 00:46:31 +0200 |
| commit | cef7a679a59044a5c807768042deecfd56ec6fc2 (patch) | |
| tree | b0e020a2a70db228df0e96fd85b63a84d7d69b64 /src/lib/job_manager.cc | |
| parent | 87d5a977da0696fbe73b96b2679b7cbb471e7255 (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.cc | 39 |
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) { |
