annotate dsp/segmentation/Segmenter.h @ 515:08bcc06c38ec tip master

Remove fast-math
author Chris Cannam <cannam@all-day-breakfast.com>
date Tue, 28 Jan 2020 15:27:37 +0000
parents bb78ca3fe7de
children
rev   line source
cannam@484 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
c@243 2 /*
c@243 3 * Segmenter.h
c@243 4 * soundbite
c@243 5 *
c@243 6 * Created by Mark Levy on 23/03/2006.
c@309 7 * Copyright 2006 Centre for Digital Music, Queen Mary, University of London.
c@309 8
c@309 9 This program is free software; you can redistribute it and/or
c@309 10 modify it under the terms of the GNU General Public License as
c@309 11 published by the Free Software Foundation; either version 2 of the
c@309 12 License, or (at your option) any later version. See the file
c@309 13 COPYING included with this distribution for more information.
c@243 14 *
c@243 15 */
c@243 16
cannam@489 17 #ifndef QM_DSP_SEGMENTER_H
cannam@489 18 #define QM_DSP_SEGMENTER_H
cannam@484 19
c@243 20 #include <vector>
c@243 21 #include <iostream>
c@243 22
c@243 23 class Segment
c@243 24 {
c@243 25 public:
cannam@480 26 int start; // in samples
cannam@480 27 int end;
cannam@480 28 int type;
c@243 29 };
c@243 30
c@243 31 class Segmentation
c@243 32 {
c@243 33 public:
cannam@480 34 int nsegtypes; // number of segment types, so possible types are {0,1,...,nsegtypes-1}
cannam@480 35 int samplerate;
cannam@493 36 std::vector<Segment> segments;
c@243 37 };
c@243 38
cannam@493 39 std::ostream& operator<<(std::ostream& os, const Segmentation& s);
c@243 40
c@243 41 class Segmenter
c@243 42 {
c@243 43 public:
cannam@480 44 Segmenter() {}
cannam@480 45 virtual ~Segmenter() {}
cannam@480 46 virtual void initialise(int samplerate) = 0; // must be called before any other methods
cannam@480 47 virtual int getWindowsize() = 0; // required window size for calls to extractFeatures()
cannam@480 48 virtual int getHopsize() = 0; // required hop size for calls to extractFeatures()
cannam@480 49 virtual void extractFeatures(const double* samples, int nsamples) = 0;
cannam@480 50 virtual void segment() = 0; // call once all the features have been extracted
cannam@480 51 virtual void segment(int m) = 0; // specify desired number of segment-types
cannam@480 52 virtual void clear() { features.clear(); }
cannam@480 53 const Segmentation& getSegmentation() const { return segmentation; }
c@243 54 protected:
cannam@493 55 std::vector<std::vector<double> > features;
cannam@480 56 Segmentation segmentation;
cannam@480 57 int samplerate;
c@243 58 };
c@243 59
c@243 60 #endif