From a5f9f8163ecb38a140cf623e141bea1d96866fe5 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 26 Aug 2017 20:45:45 +0100 Subject: [PATCH] Stop player analysing audio even if it is configured automatically to happen. --- src/lib/film.cc | 17 ++++++++++------- src/lib/film.h | 4 ++-- src/tools/dcpomatic_player.cc | 8 +++----- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/lib/film.cc b/src/lib/film.cc index 3838dda00..0c6a55386 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -1027,24 +1027,27 @@ Film::content () const return _playlist->content (); } +/** @param content Content to add. + * @param disable_audio_analysis true to never do automatic audio analysis, even if it is enabled in configuration. + */ void -Film::examine_and_add_content (shared_ptr c) +Film::examine_and_add_content (shared_ptr content, bool disable_audio_analysis) { - if (dynamic_pointer_cast (c) && _directory) { - run_ffprobe (c->path(0), file ("ffprobe.log"), _log); + if (dynamic_pointer_cast (content) && _directory) { + run_ffprobe (content->path(0), file ("ffprobe.log"), _log); } - shared_ptr j (new ExamineContentJob (shared_from_this(), c)); + shared_ptr j (new ExamineContentJob (shared_from_this(), content)); _job_connections.push_back ( - j->Finished.connect (bind (&Film::maybe_add_content, this, weak_ptr (j), weak_ptr (c))) + j->Finished.connect (bind (&Film::maybe_add_content, this, weak_ptr(j), weak_ptr(content), disable_audio_analysis)) ); JobManager::instance()->add (j); } void -Film::maybe_add_content (weak_ptr j, weak_ptr c) +Film::maybe_add_content (weak_ptr j, weak_ptr c, bool disable_audio_analysis) { shared_ptr job = j.lock (); if (!job || !job->finished_ok ()) { @@ -1058,7 +1061,7 @@ Film::maybe_add_content (weak_ptr j, weak_ptr c) add_content (content); - if (Config::instance()->automatic_audio_analysis() && content->audio) { + if (Config::instance()->automatic_audio_analysis() && content->audio && !disable_audio_analysis) { shared_ptr playlist (new Playlist); playlist->add (content); boost::signals2::connection c; diff --git a/src/lib/film.h b/src/lib/film.h index ec64c3913..0aa3dab3f 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -293,7 +293,7 @@ public: void set_directory (boost::filesystem::path); void set_name (std::string); void set_use_isdcf_name (bool); - void examine_and_add_content (boost::shared_ptr); + void examine_and_add_content (boost::shared_ptr content, bool disable_audio_analysis = false); void add_content (boost::shared_ptr); void remove_content (boost::shared_ptr); void remove_content (ContentList); @@ -336,7 +336,7 @@ private: void playlist_changed (); void playlist_order_changed (); void playlist_content_changed (boost::weak_ptr, int, bool frequent); - void maybe_add_content (boost::weak_ptr, boost::weak_ptr); + void maybe_add_content (boost::weak_ptr, boost::weak_ptr, bool disable_audio_analysis); void audio_analysis_finished (); static std::string const metadata_file; diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc index a0221424e..6753b5423 100644 --- a/src/tools/dcpomatic_player.cc +++ b/src/tools/dcpomatic_player.cc @@ -132,17 +132,15 @@ public: { _film.reset (new Film (optional())); shared_ptr dcp (new DCPContent (_film, dir)); - _film->examine_and_add_content (dcp); + _film->examine_and_add_content (dcp, true); JobManager* jm = JobManager::instance (); - while (jm->work_to_do ()) { + + while (jm->work_to_do() || signal_manager->ui_idle()) { /* XXX: progress dialog */ - while (signal_manager->ui_idle ()) {} dcpomatic_sleep (1); } - while (signal_manager->ui_idle ()) {} - DCPOMATIC_ASSERT (!jm->get().empty()); shared_ptr last = jm->get().back(); -- 2.30.2