X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Faudio_content.cc;h=100264d440f9bcd5d4fb05fc13553532f686a806;hb=a1b0ed4ac0753b420ce8ab8467165e220bdb4b05;hp=9940574f93bf8cbf11c726638a98a2aec1dc5ce6;hpb=a0856e3fbef17f24073b01cb96be6bbcb229ecbc;p=dcpomatic.git diff --git a/src/lib/audio_content.cc b/src/lib/audio_content.cc index 9940574f9..100264d44 100644 --- a/src/lib/audio_content.cc +++ b/src/lib/audio_content.cc @@ -19,11 +19,14 @@ #include #include "audio_content.h" +#include "analyse_audio_job.h" +#include "job_manager.h" #include "film.h" using std::string; using boost::shared_ptr; using boost::lexical_cast; +using boost::dynamic_pointer_cast; int const AudioContentProperty::AUDIO_CHANNELS = 200; int const AudioContentProperty::AUDIO_LENGTH = 201; @@ -55,14 +58,6 @@ AudioContent::AudioContent (shared_ptr f, shared_ptrnumber_child ("AudioDelay"); } -AudioContent::AudioContent (AudioContent const & o) - : Content (o) - , _audio_gain (o._audio_gain) - , _audio_delay (o._audio_delay) -{ - -} - void AudioContent::as_xml (xmlpp::Node* node) const { @@ -93,3 +88,33 @@ AudioContent::set_audio_delay (int d) signal_changed (AudioContentProperty::AUDIO_DELAY); } + +void +AudioContent::analyse_audio (boost::function finished) +{ + shared_ptr film = _film.lock (); + if (!film) { + return; + } + + shared_ptr job (new AnalyseAudioJob (film, dynamic_pointer_cast (shared_from_this()))); + job->Finished.connect (finished); + JobManager::instance()->add (job); +} + +boost::filesystem::path +AudioContent::audio_analysis_path () const +{ + shared_ptr film = _film.lock (); + if (!film) { + return boost::filesystem::path (); + } + + return film->audio_analysis_path (dynamic_pointer_cast (shared_from_this ())); +} + +string +AudioContent::technical_summary () const +{ + return String::compose ("audio: channels %1, length %2, raw rate %3, out rate %4", audio_channels(), audio_length(), content_audio_frame_rate(), output_audio_frame_rate()); +}