annotate dsp/segmentation/Segmenter.h @ 480:175e51ae78eb

Untabify, indent, tidy
author Chris Cannam <cannam@all-day-breakfast.com>
date Fri, 31 May 2019 10:53:39 +0100
parents d5014ab8b0e5
children d48276a3ae24
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@309 9 * Copyright 2006 Centre for Digital Music, Queen Mary, University of London.
c@309 10
c@309 11 This program is free software; you can redistribute it and/or
c@309 12 modify it under the terms of the GNU General Public License as
c@309 13 published by the Free Software Foundation; either version 2 of the
c@309 14 License, or (at your option) any later version. See the file
c@309 15 COPYING included with this distribution for more information.
c@243 16 *
c@243 17 */
c@243 18
c@243 19 #include <vector>
c@243 20 #include <iostream>
c@243 21
c@243 22 using std::vector;
c@243 23 using std::ostream;
c@243 24
c@243 25 class Segment
c@243 26 {
c@243 27 public:
cannam@480 28 int start; // in samples
cannam@480 29 int end;
cannam@480 30 int type;
c@243 31 };
c@243 32
c@243 33 class Segmentation
c@243 34 {
c@243 35 public:
cannam@480 36 int nsegtypes; // number of segment types, so possible types are {0,1,...,nsegtypes-1}
cannam@480 37 int samplerate;
cannam@480 38 vector<Segment> segments;
c@243 39 };
c@243 40
c@243 41 ostream& operator<<(ostream& os, const Segmentation& s);
c@243 42
c@243 43 class Segmenter
c@243 44 {
c@243 45 public:
cannam@480 46 Segmenter() {}
cannam@480 47 virtual ~Segmenter() {}
cannam@480 48 virtual void initialise(int samplerate) = 0; // must be called before any other methods
cannam@480 49 virtual int getWindowsize() = 0; // required window size for calls to extractFeatures()
cannam@480 50 virtual int getHopsize() = 0; // required hop size for calls to extractFeatures()
cannam@480 51 virtual void extractFeatures(const double* samples, int nsamples) = 0;
cannam@480 52 virtual void segment() = 0; // call once all the features have been extracted
cannam@480 53 virtual void segment(int m) = 0; // specify desired number of segment-types
cannam@480 54 virtual void clear() { features.clear(); }
cannam@480 55 const Segmentation& getSegmentation() const { return segmentation; }
c@243 56 protected:
cannam@480 57 vector<vector<double> > features;
cannam@480 58 Segmentation segmentation;
cannam@480 59 int samplerate;
c@243 60 };
c@243 61
c@243 62 #endif