summaryrefslogtreecommitdiff
path: root/libs/qm-dsp/dsp/segmentation/Segmenter.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/qm-dsp/dsp/segmentation/Segmenter.h')
-rw-r--r--libs/qm-dsp/dsp/segmentation/Segmenter.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/libs/qm-dsp/dsp/segmentation/Segmenter.h b/libs/qm-dsp/dsp/segmentation/Segmenter.h
new file mode 100644
index 0000000000..1ac0679b72
--- /dev/null
+++ b/libs/qm-dsp/dsp/segmentation/Segmenter.h
@@ -0,0 +1,62 @@
+#ifndef _SEGMENTER_H
+#define _SEGMENTER_H
+
+/*
+ * Segmenter.h
+ * soundbite
+ *
+ * Created by Mark Levy on 23/03/2006.
+ * Copyright 2006 Centre for Digital Music, Queen Mary, University of London.
+
+ 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. See the file
+ COPYING included with this distribution for more information.
+ *
+ */
+
+#include <vector>
+#include <iostream>
+
+using std::vector;
+using std::ostream;
+
+class Segment
+{
+public:
+ int start; // in samples
+ int end;
+ int type;
+};
+
+class Segmentation
+{
+public:
+ int nsegtypes; // number of segment types, so possible types are {0,1,...,nsegtypes-1}
+ int samplerate;
+ vector<Segment> segments;
+};
+
+ostream& operator<<(ostream& os, const Segmentation& s);
+
+class Segmenter
+{
+public:
+ Segmenter() {}
+ virtual ~Segmenter() {}
+ virtual void initialise(int samplerate) = 0; // must be called before any other methods
+ virtual int getWindowsize() = 0; // required window size for calls to extractFeatures()
+ virtual int getHopsize() = 0; // required hop size for calls to extractFeatures()
+ virtual void extractFeatures(const double* samples, int nsamples) = 0;
+ virtual void segment() = 0; // call once all the features have been extracted
+ virtual void segment(int m) = 0; // specify desired number of segment-types
+ virtual void clear() { features.clear(); }
+ const Segmentation& getSegmentation() const { return segmentation; }
+protected:
+ vector<vector<double> > features;
+ Segmentation segmentation;
+ int samplerate;
+};
+
+#endif