diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-09-03 13:52:10 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-09-14 10:21:11 +0100 |
| commit | b0834f33e972a6e7b0d234d09e420007943a136d (patch) | |
| tree | aac5cde453a18983a7c87462e1042ecd520218a4 /src/lib/audio_analysis.cc | |
| parent | d2bd0c628fd0616fe3b7dd02bd955b2c07ab48d5 (diff) | |
Peak value of audio into the audio tab.
Diffstat (limited to 'src/lib/audio_analysis.cc')
| -rw-r--r-- | src/lib/audio_analysis.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/lib/audio_analysis.cc b/src/lib/audio_analysis.cc index 6fcd97c94..10e022322 100644 --- a/src/lib/audio_analysis.cc +++ b/src/lib/audio_analysis.cc @@ -21,6 +21,8 @@ #include "cross.h" #include "util.h" #include "raw_convert.h" +#include "playlist.h" +#include "audio_content.h" #include <libxml++/libxml++.h> #include <boost/filesystem.hpp> #include <boost/foreach.hpp> @@ -38,6 +40,7 @@ using std::cout; using std::max; using std::list; using boost::shared_ptr; +using boost::dynamic_pointer_cast; AudioAnalysis::AudioAnalysis (int channels) { @@ -115,3 +118,19 @@ AudioAnalysis::write (boost::filesystem::path filename) doc->write_to_file_formatted (filename.string ()); } + +float +AudioAnalysis::gain_correction (shared_ptr<const Playlist> playlist) +{ + if (playlist->content().size() == 1 && analysis_gain ()) { + /* In this case we know that the analysis was of a single piece of content and + we know that content's gain when the analysis was run. Hence we can work out + what correction is now needed to make it look `right'. + */ + shared_ptr<const AudioContent> ac = dynamic_pointer_cast<const AudioContent> (playlist->content().front ()); + DCPOMATIC_ASSERT (ac); + return ac->audio_gain() - analysis_gain().get (); + } + + return 0.0f; +} |
