From c91f1e6aed0eebe98363ff9d5ba5bf87c6acb48e Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 23 Oct 2025 21:40:47 +0200 Subject: Make it possible to not write audio analysis files. --- src/lib/analyse_audio_job.cc | 10 ++++++---- src/lib/analyse_audio_job.h | 8 ++++---- src/lib/job_manager.cc | 2 +- test/audio_analysis_test.cc | 10 +++++----- 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 film, shared_ptr playlist, bool whole_film) +AnalyseAudioJob::AnalyseAudioJob(shared_ptr film, shared_ptr playlist, bool whole_film, optional 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, std::shared_ptr, bool whole_film); + AnalyseAudioJob(std::shared_ptr, std::shared_ptr, bool whole_film, boost::optional path); ~AnalyseAudioJob(); std::string name() const override; @@ -60,7 +60,7 @@ public: return true; } - boost::filesystem::path path() const { + boost::optional path() const { return _path; } @@ -71,8 +71,8 @@ private: AudioAnalyser _analyser; std::shared_ptr _playlist; - /** playlist's audio analysis path when the job was created */ - boost::filesystem::path _path; + /** Path to write analysis file to */ + boost::optional _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(film, playlist, from_zero); + job = make_shared(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(TestPaths::private_data() / "betty_L.wav"); auto film = new_test_film("audio_analysis_test", { c }); - auto job = make_shared(film, film->playlist(), false); + auto job = make_shared(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(film, film->playlist(), false); + auto job = make_shared(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(TestPaths::private_data() / "3d_thx_broadway_2010_lossless.m2ts"); auto film = new_test_film("audio_analysis_test2", { c }); - auto job = make_shared(film, film->playlist(), false); + auto job = make_shared(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(film, film->playlist(), true); + auto job = make_shared(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 (film, film->playlist(), false); + auto job = make_shared(film, film->playlist(), false, film->audio_analysis_path(film->playlist())); JobManager::instance()->add (job); BOOST_REQUIRE (!wait_for_jobs()); -- cgit v1.2.3