diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-10-23 21:40:47 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-10-23 22:30:46 +0200 |
| commit | c91f1e6aed0eebe98363ff9d5ba5bf87c6acb48e (patch) | |
| tree | 806a9d177e76429f67a50363ab2a05c3b6e976f4 | |
| parent | ddd17c51b6810b03826cc7c7b27ffcb9788cf230 (diff) | |
Make it possible to not write audio analysis files.
| -rw-r--r-- | src/lib/analyse_audio_job.cc | 10 | ||||
| -rw-r--r-- | src/lib/analyse_audio_job.h | 8 | ||||
| -rw-r--r-- | src/lib/job_manager.cc | 2 | ||||
| -rw-r--r-- | test/audio_analysis_test.cc | 10 | ||||
| -rw-r--r-- | test/audio_processor_test.cc | 2 |
5 files changed, 17 insertions, 15 deletions
diff --git a/src/lib/analyse_audio_job.cc b/src/lib/analyse_audio_job.cc index 4596bd431..cd6a2bbd6 100644 --- a/src/lib/analyse_audio_job.cc +++ b/src/lib/analyse_audio_job.cc @@ -41,6 +41,7 @@ using std::shared_ptr; using std::string; using std::vector; using namespace dcpomatic; +using boost::optional; #if BOOST_VERSION >= 106100 using namespace boost::placeholders; #endif @@ -50,11 +51,11 @@ using namespace boost::placeholders; * to analyse just the single piece of content in the playlist (i.e. start from Playlist::start() and do not * use processors). */ -AnalyseAudioJob::AnalyseAudioJob(shared_ptr<const Film> film, shared_ptr<const Playlist> playlist, bool whole_film) +AnalyseAudioJob::AnalyseAudioJob(shared_ptr<const Film> film, shared_ptr<const Playlist> playlist, bool whole_film, optional<boost::filesystem::path> path) : Job(film) , _analyser(film, playlist, whole_film, boost::bind(&Job::set_progress, this, _1, false)) , _playlist(playlist) - , _path(film->audio_analysis_path(playlist)) + , _path(path) , _whole_film(whole_film) { LOG_DEBUG_AUDIO_ANALYSIS_NC("AnalyseAudioJob::AnalyseAudioJob"); @@ -111,8 +112,9 @@ AnalyseAudioJob::run() LOG_DEBUG_AUDIO_ANALYSIS_NC("Loop complete"); _analyser.finish(); - auto analysis = _analyser.get(); - analysis.write(_path); + if (_path) { + analysis().write(*_path); + } LOG_DEBUG_AUDIO_ANALYSIS_NC("Job finished"); set_progress(1); diff --git a/src/lib/analyse_audio_job.h b/src/lib/analyse_audio_job.h index 5aea9e13d..fe3d9d0b6 100644 --- a/src/lib/analyse_audio_job.h +++ b/src/lib/analyse_audio_job.h @@ -50,7 +50,7 @@ class Playlist; class AnalyseAudioJob : public Job { public: - AnalyseAudioJob(std::shared_ptr<const Film>, std::shared_ptr<const Playlist>, bool whole_film); + AnalyseAudioJob(std::shared_ptr<const Film>, std::shared_ptr<const Playlist>, bool whole_film, boost::optional<boost::filesystem::path> path); ~AnalyseAudioJob(); std::string name() const override; @@ -60,7 +60,7 @@ public: return true; } - boost::filesystem::path path() const { + boost::optional<boost::filesystem::path> path() const { return _path; } @@ -71,8 +71,8 @@ private: AudioAnalyser _analyser; std::shared_ptr<const Playlist> _playlist; - /** playlist's audio analysis path when the job was created */ - boost::filesystem::path _path; + /** Path to write analysis file to */ + boost::optional<boost::filesystem::path> _path; bool _whole_film; static const int _num_points; diff --git a/src/lib/job_manager.cc b/src/lib/job_manager.cc index c429dab6e..3c6566727 100644 --- a/src/lib/job_manager.cc +++ b/src/lib/job_manager.cc @@ -251,7 +251,7 @@ JobManager::analyse_audio( { boost::mutex::scoped_lock lm(_mutex); - job = make_shared<AnalyseAudioJob>(film, playlist, from_zero); + job = make_shared<AnalyseAudioJob>(film, playlist, from_zero, film->audio_analysis_path(playlist)); connection = job->Finished.connect(ready); _jobs.push_back(job); _schedule_condition.notify_all(); diff --git a/test/audio_analysis_test.cc b/test/audio_analysis_test.cc index 19555001b..a072c0f88 100644 --- a/test/audio_analysis_test.cc +++ b/test/audio_analysis_test.cc @@ -105,7 +105,7 @@ BOOST_AUTO_TEST_CASE (audio_analysis_test) auto c = make_shared<FFmpegContent>(TestPaths::private_data() / "betty_L.wav"); auto film = new_test_film("audio_analysis_test", { c }); - auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), false); + auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), false, film->audio_analysis_path(film->playlist())); JobManager::instance()->add (job); BOOST_REQUIRE (!wait_for_jobs()); } @@ -118,7 +118,7 @@ BOOST_AUTO_TEST_CASE (audio_analysis_negative_delay_test) auto film = new_test_film("audio_analysis_negative_delay_test", { c }); c->audio->set_delay (-250); - auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), false); + auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), false, film->audio_analysis_path(film->playlist())); JobManager::instance()->add (job); BOOST_REQUIRE (!wait_for_jobs()); } @@ -130,7 +130,7 @@ BOOST_AUTO_TEST_CASE (audio_analysis_test2) auto c = make_shared<FFmpegContent>(TestPaths::private_data() / "3d_thx_broadway_2010_lossless.m2ts"); auto film = new_test_film("audio_analysis_test2", { c }); - auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), false); + auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), false, film->audio_analysis_path(film->playlist())); JobManager::instance()->add (job); BOOST_REQUIRE (!wait_for_jobs()); } @@ -265,11 +265,11 @@ BOOST_AUTO_TEST_CASE(analyse_audio_uses_processor_when_analysing_whole_film) auto sound = content_factory(TestPaths::private_data() / "betty_stereo.wav")[0]; auto film = new_test_film("analyse_audio_uses_processor_when_analysing_whole_film", { sound }); - auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), true); + auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), true, film->audio_analysis_path(film->playlist())); JobManager::instance()->add(job); BOOST_REQUIRE(!wait_for_jobs()); - AudioAnalysis analysis(job->path()); + AudioAnalysis analysis(film->audio_analysis_path(film->playlist())); BOOST_REQUIRE(analysis.channels() > 2); bool centre_non_zero = false; diff --git a/test/audio_processor_test.cc b/test/audio_processor_test.cc index a87d28bd1..60a30e125 100644 --- a/test/audio_processor_test.cc +++ b/test/audio_processor_test.cc @@ -52,7 +52,7 @@ BOOST_AUTO_TEST_CASE (audio_processor_test) film->set_audio_processor (AudioProcessor::from_id ("mid-side-decoder")); /* Analyse the audio and check it doesn't crash */ - auto job = make_shared<AnalyseAudioJob> (film, film->playlist(), false); + auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), false, film->audio_analysis_path(film->playlist())); JobManager::instance()->add (job); BOOST_REQUIRE (!wait_for_jobs()); |
