Mercurial > hg > qm-dsp
annotate dsp/segmentation/Segmenter.h @ 269:a63c7b6191b5
* Add direct support for ATLAS version of CLAPACK
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Wed, 13 Feb 2008 12:49:47 +0000 |
parents | 18a0dffa5c1a |
children | e5907ae6de17 |
rev | line source |
---|---|
c@243 | 1 #ifndef _SEGMENTER_H |
c@243 | 2 #define _SEGMENTER_H |
c@243 | 3 |
c@243 | 4 /* |
c@243 | 5 * Segmenter.h |
c@243 | 6 * soundbite |
c@243 | 7 * |
c@243 | 8 * Created by Mark Levy on 23/03/2006. |
c@243 | 9 * Copyright 2006 Centre for Digital Music, Queen Mary, University of London. All rights reserved. |
c@243 | 10 * |
c@243 | 11 */ |
c@243 | 12 |
c@243 | 13 #include <vector> |
c@243 | 14 #include <iostream> |
c@243 | 15 |
c@243 | 16 using std::vector; |
c@243 | 17 using std::ostream; |
c@243 | 18 |
c@243 | 19 class Segment |
c@243 | 20 { |
c@243 | 21 public: |
c@243 | 22 int start; // in samples |
c@243 | 23 int end; |
c@243 | 24 int type; |
c@243 | 25 }; |
c@243 | 26 |
c@243 | 27 class Segmentation |
c@243 | 28 { |
c@243 | 29 public: |
c@243 | 30 int nsegtypes; // number of segment types, so possible types are {0,1,...,nsegtypes-1} |
c@243 | 31 int samplerate; |
c@243 | 32 vector<Segment> segments; |
c@243 | 33 }; |
c@243 | 34 |
c@243 | 35 ostream& operator<<(ostream& os, const Segmentation& s); |
c@243 | 36 |
c@243 | 37 class Segmenter |
c@243 | 38 { |
c@243 | 39 public: |
c@243 | 40 Segmenter() {} |
c@243 | 41 virtual ~Segmenter() {} |
c@243 | 42 virtual void initialise(int samplerate) = 0; // must be called before any other methods |
c@243 | 43 virtual int getWindowsize() = 0; // required window size for calls to extractFeatures() |
c@243 | 44 virtual int getHopsize() = 0; // required hop size for calls to extractFeatures() |
c@249 | 45 virtual void extractFeatures(const double* samples, int nsamples) = 0; |
c@243 | 46 virtual void segment() = 0; // call once all the features have been extracted |
c@243 | 47 virtual void segment(int m) = 0; // specify desired number of segment-types |
c@243 | 48 virtual void clear() { features.clear(); } |
c@243 | 49 const Segmentation& getSegmentation() const { return segmentation; } |
c@243 | 50 protected: |
c@243 | 51 vector<vector<double> > features; |
c@243 | 52 Segmentation segmentation; |
c@243 | 53 int samplerate; |
c@243 | 54 }; |
c@243 | 55 |
c@243 | 56 #endif |