diff options
Diffstat (limited to 'src/lib/fix_audio_levels_job.cc')
| -rw-r--r-- | src/lib/fix_audio_levels_job.cc | 41 |
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); |
