summaryrefslogtreecommitdiff
path: root/src/lib/film.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-06-03 15:31:21 +0100
committerCarl Hetherington <cth@carlh.net>2015-06-03 15:31:21 +0100
commitf98caf4af896e9be943046b84586da5c2e103f18 (patch)
tree993f719e293667c432c95026dc2bfd53d5b84982 /src/lib/film.cc
parent92c377d1b9e781fbb4b1f1b7a76ca7dba0bd637f (diff)
Make show audio work on the whole DCP, not individual content.
Diffstat (limited to 'src/lib/film.cc')
-rw-r--r--src/lib/film.cc24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc
index 90bfad6a2..590acedfd 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -42,6 +42,7 @@
#include "environment_info.h"
#include "raw_convert.h"
#include "audio_processor.h"
+#include "md5_digester.h"
#include <libcxml/cxml.h>
#include <dcp/cpl.h>
#include <dcp/signer.h>
@@ -247,9 +248,28 @@ Film::filename_safe_name () const
}
boost::filesystem::path
-Film::audio_analysis_dir () const
+Film::audio_analysis_path (shared_ptr<const Playlist> playlist) const
{
- return dir ("analysis");
+ boost::filesystem::path p = dir ("analysis");
+
+ MD5Digester digester;
+ BOOST_FOREACH (shared_ptr<Content> i, playlist->content ()) {
+ shared_ptr<AudioContent> ac = dynamic_pointer_cast<AudioContent> (i);
+ if (!ac) {
+ continue;
+ }
+
+ digester.add (ac->digest ());
+ digester.add (ac->audio_mapping().digest ());
+ digester.add (ac->audio_gain ());
+ }
+
+ if (audio_processor ()) {
+ digester.add (audio_processor()->id ());
+ }
+
+ p /= digester.get ();
+ return p;
}
/** Add suitable Jobs to the JobManager to create a DCP for this Film */