/*
- Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2021 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
*/
+
#ifndef DCPOMATIC_AUDIO_ANALYSIS_H
#define DCPOMATIC_AUDIO_ANALYSIS_H
+
#include "dcpomatic_time.h"
#include "audio_point.h"
#include <libcxml/cxml.h>
#include <boost/filesystem.hpp>
#include <vector>
+
namespace xmlpp {
class Element;
}
+
class Playlist;
-class AudioAnalysis : public boost::noncopyable
+
+class AudioAnalysis
{
public:
- AudioAnalysis (int c);
- AudioAnalysis (boost::filesystem::path);
+ explicit AudioAnalysis (int c);
+ explicit AudioAnalysis (boost::filesystem::path);
void add_point (int c, AudioPoint const & p);
struct PeakTime {
- PeakTime (float p, DCPTime t)
+ PeakTime (float p, dcpomatic::DCPTime t)
: peak (p)
, time (t)
{}
float peak;
- DCPTime time;
+ dcpomatic::DCPTime time;
};
void set_sample_peak (std::vector<PeakTime> peak) {
_analysis_gain = gain;
}
+ int64_t samples_per_point () const {
+ return _samples_per_point;
+ }
+
+ void set_samples_per_point (int64_t spp) {
+ _samples_per_point = spp;
+ }
+
+ int sample_rate () const {
+ return _sample_rate;
+ }
+
+ void set_sample_rate (int sr) {
+ _sample_rate = sr;
+ }
+
+ void set_leqm (double leqm) {
+ _leqm = leqm;
+ }
+
+ boost::optional<double> leqm () const {
+ return _leqm;
+ }
+
void write (boost::filesystem::path);
- float gain_correction (boost::shared_ptr<const Playlist> playlist);
+ float gain_correction (std::shared_ptr<const Playlist> playlist);
private:
- std::vector<std::vector<AudioPoint> > _data;
+ std::vector<std::vector<AudioPoint>> _data;
std::vector<PeakTime> _sample_peak;
std::vector<float> _true_peak;
boost::optional<float> _integrated_loudness;
boost::optional<float> _loudness_range;
+ boost::optional<double> _leqm;
/** If this analysis was run on a single piece of
* content we store its gain in dB when the analysis
* happened.
*/
boost::optional<double> _analysis_gain;
+ int64_t _samples_per_point = 0;
+ int _sample_rate = 0;
static int const _current_state_version;
};
+
#endif