summaryrefslogtreecommitdiff
path: root/src/lib/fix_audio_levels_job.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/fix_audio_levels_job.cc')
-rw-r--r--src/lib/fix_audio_levels_job.cc41
1 files changed, 37 insertions, 4 deletions
diff --git a/src/lib/fix_audio_levels_job.cc b/src/lib/fix_audio_levels_job.cc
index b5d9e39d9..258210b85 100644
--- a/src/lib/fix_audio_levels_job.cc
+++ b/src/lib/fix_audio_levels_job.cc
@@ -35,6 +35,7 @@
#include "i18n.h"
+using std::exception;
using std::make_shared;
using std::shared_ptr;
using std::string;
@@ -78,21 +79,53 @@ FixAudioLevelsJob::run()
auto playlist = make_shared<Playlist>();
playlist->add(film, input_dcp);
+ auto set_progress_wrapper = [this](Job* job) {
+ if (auto p = job->progress()) {
+ set_progress(*p);
+ } else {
+ set_progress_unknown();
+ }
+ };
+
AnalyseAudioJob analyse(film, playlist, false, boost::none);
- analyse.run();
+ std::cout << "AAJ is " << &analyse << "\n";
+ analyse.Progress.connect(boost::bind<void>(set_progress_wrapper, &analyse));
+ try {
+ std::cout << "-> calling analyse.run\n";
+ analyse.run();
+ std::cout << "<- calling analyse.run\n";
+ } catch (exception& e) {
+ std::cout << "analyse failed.\n";
+ set_progress(1);
+ set_state(FINISHED_ERROR);
+ set_error(e.what());
+ return;
+ }
auto const level = analyse.analysis().leqm();
DCPOMATIC_ASSERT(level);
if ((!_make_quieter_dcps_louder && *level < _leqm_target) || !input_dcp->audio) {
+ std::cout << "nothing to do.\n";
set_progress(1);
set_state(FINISHED_OK);
}
input_dcp->audio->set_gain(_leqm_target - *level);
- auto transcode = make_shared<DCPTranscodeJob>(film, TranscodeJob::ChangedBehaviour::IGNORE);
- transcode->set_encoder(make_shared<DCPFilmEncoder>(film, transcode, true));
- transcode->run();
+
+ DCPTranscodeJob transcode(film, TranscodeJob::ChangedBehaviour::IGNORE);
+ transcode.Progress.connect(boost::bind<void>(set_progress_wrapper, &transcode));
+ transcode.set_encoder(make_shared<DCPFilmEncoder>(film, shared_from_this(), true));
+ try {
+ std::cout << "transcode.\n";
+ transcode.run();
+ } catch (exception& e) {
+ std::cout << "transcode failed " << e.what() << "\n";
+ set_progress(1);
+ set_state(FINISHED_ERROR);
+ set_error(e.what());
+ return;
+ }
set_progress(1);
set_state(FINISHED_OK);