diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-08-26 22:36:25 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-08-26 22:36:25 +0100 |
| commit | e3c6a3c99f829174f69fc767b3b53f41053d1815 (patch) | |
| tree | 67ced23ca4c383d2831d70c17e35d3f7f9221e8c /src | |
| parent | 96f06076d51f6ca57b261a25c0d7f2e3f1852250 (diff) | |
Separate AudioPoint.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/audio_analysis.cc | 41 | ||||
| -rw-r--r-- | src/lib/audio_analysis.h | 25 | ||||
| -rw-r--r-- | src/lib/audio_point.cc | 65 | ||||
| -rw-r--r-- | src/lib/audio_point.h | 48 | ||||
| -rw-r--r-- | src/lib/wscript | 1 |
5 files changed, 115 insertions, 65 deletions
diff --git a/src/lib/audio_analysis.cc b/src/lib/audio_analysis.cc index 127def807..6fcd97c94 100644 --- a/src/lib/audio_analysis.cc +++ b/src/lib/audio_analysis.cc @@ -39,47 +39,6 @@ using std::max; using std::list; using boost::shared_ptr; -AudioPoint::AudioPoint () -{ - for (int i = 0; i < COUNT; ++i) { - _data[i] = 0; - } -} - -AudioPoint::AudioPoint (cxml::ConstNodePtr node) -{ - _data[PEAK] = node->number_child<float> ("Peak"); - _data[RMS] = node->number_child<float> ("RMS"); -} - -AudioPoint::AudioPoint (AudioPoint const & other) -{ - for (int i = 0; i < COUNT; ++i) { - _data[i] = other._data[i]; - } -} - -AudioPoint & -AudioPoint::operator= (AudioPoint const & other) -{ - if (this == &other) { - return *this; - } - - for (int i = 0; i < COUNT; ++i) { - _data[i] = other._data[i]; - } - - return *this; -} - -void -AudioPoint::as_xml (xmlpp::Element* parent) const -{ - parent->add_child ("Peak")->add_child_text (raw_convert<string> (_data[PEAK])); - parent->add_child ("RMS")->add_child_text (raw_convert<string> (_data[RMS])); -} - AudioAnalysis::AudioAnalysis (int channels) { _data.resize (channels); diff --git a/src/lib/audio_analysis.h b/src/lib/audio_analysis.h index 6c0be6987..5e71705bf 100644 --- a/src/lib/audio_analysis.h +++ b/src/lib/audio_analysis.h @@ -21,6 +21,7 @@ #define DCPOMATIC_AUDIO_ANALYSIS_H #include "dcpomatic_time.h" +#include "audio_point.h" #include <libcxml/cxml.h> #include <boost/optional.hpp> #include <boost/filesystem.hpp> @@ -30,30 +31,6 @@ namespace xmlpp { class Element; } -class AudioPoint -{ -public: - enum Type { - PEAK, - RMS, - COUNT - }; - - AudioPoint (); - AudioPoint (cxml::ConstNodePtr node); - AudioPoint (AudioPoint const &); - AudioPoint& operator= (AudioPoint const &); - - void as_xml (xmlpp::Element *) const; - - float& operator[] (int t) { - return _data[t]; - } - -private: - float _data[COUNT]; -}; - class AudioAnalysis : public boost::noncopyable { public: diff --git a/src/lib/audio_point.cc b/src/lib/audio_point.cc new file mode 100644 index 000000000..3c17234e2 --- /dev/null +++ b/src/lib/audio_point.cc @@ -0,0 +1,65 @@ +/* + Copyright (C) 2012-2015 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 + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include "audio_point.h" +#include "raw_convert.h" +#include <libxml++/libxml++.h> + +using std::string; + +AudioPoint::AudioPoint () +{ + for (int i = 0; i < COUNT; ++i) { + _data[i] = 0; + } +} + +AudioPoint::AudioPoint (cxml::ConstNodePtr node) +{ + _data[PEAK] = node->number_child<float> ("Peak"); + _data[RMS] = node->number_child<float> ("RMS"); +} + +AudioPoint::AudioPoint (AudioPoint const & other) +{ + for (int i = 0; i < COUNT; ++i) { + _data[i] = other._data[i]; + } +} + +AudioPoint & +AudioPoint::operator= (AudioPoint const & other) +{ + if (this == &other) { + return *this; + } + + for (int i = 0; i < COUNT; ++i) { + _data[i] = other._data[i]; + } + + return *this; +} + +void +AudioPoint::as_xml (xmlpp::Element* parent) const +{ + parent->add_child ("Peak")->add_child_text (raw_convert<string> (_data[PEAK])); + parent->add_child ("RMS")->add_child_text (raw_convert<string> (_data[RMS])); +} diff --git a/src/lib/audio_point.h b/src/lib/audio_point.h new file mode 100644 index 000000000..3dfe4701f --- /dev/null +++ b/src/lib/audio_point.h @@ -0,0 +1,48 @@ +/* + Copyright (C) 2012-2015 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 + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include <libcxml/cxml.h> + +namespace xmlpp { + class Element; +} + +class AudioPoint +{ +public: + enum Type { + PEAK, + RMS, + COUNT + }; + + AudioPoint (); + AudioPoint (cxml::ConstNodePtr node); + AudioPoint (AudioPoint const &); + AudioPoint& operator= (AudioPoint const &); + + void as_xml (xmlpp::Element *) const; + + float& operator[] (int t) { + return _data[t]; + } + +private: + float _data[COUNT]; +}; diff --git a/src/lib/wscript b/src/lib/wscript index e79f11f77..ae3059af4 100644 --- a/src/lib/wscript +++ b/src/lib/wscript @@ -28,6 +28,7 @@ sources = """ audio_decoder_stream.cc audio_filter.cc audio_mapping.cc + audio_point.cc audio_processor.cc audio_stream.cc cinema.cc |
