/*
- Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
*/
+/** @file src/lib/audio_analysis.h
+ * @brief AudioAnalysis and AudioPoint classes.
+ */
+
#ifndef DCPOMATIC_AUDIO_ANALYSIS_H
#define DCPOMATIC_AUDIO_ANALYSIS_H
-#include <iostream>
#include <vector>
#include <list>
+#include <boost/filesystem.hpp>
+/** @class AudioPoint
+ * @brief A single point of an audio analysis for one portion of one channel.
+ */
class AudioPoint
{
public:
};
AudioPoint ();
- AudioPoint (std::istream &);
+ AudioPoint (FILE *);
+ AudioPoint (AudioPoint const &);
+ AudioPoint& operator= (AudioPoint const &);
- void write (std::ostream &) const;
+ void write (FILE *) const;
float& operator[] (int t) {
return _data[t];
float _data[COUNT];
};
-class AudioAnalysis
+/** @class AudioAnalysis
+ * @brief An analysis of the audio data in a piece of AudioContent.
+ *
+ * This is a set of AudioPoints for each channel. The AudioPoints
+ * each represent some measurement of the audio over a portion of the
+ * content. For example each AudioPoint may give the RMS level of
+ * a 1-minute portion of the audio.
+ */
+class AudioAnalysis : public boost::noncopyable
{
public:
AudioAnalysis (int c);
- AudioAnalysis (std::string);
+ AudioAnalysis (boost::filesystem::path);
void add_point (int c, AudioPoint const & p);
int points (int c) const;
int channels () const;
- void write (std::string);
+ void write (boost::filesystem::path);
private:
std::vector<std::vector<AudioPoint> > _data;