annotate src/MatchTypes.h @ 209:d46be43c0738 memory

Grow matrix less enthusiastically, call shrink_to_fit() on vectors
author Chris Cannam
date Fri, 27 Feb 2015 13:57:07 +0000
parents f415747b151b
children 827176d3b6ec
rev   line source
Chris@181 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@181 2
Chris@181 3 /*
Chris@181 4 Vamp feature extraction plugin using the MATCH audio alignment
Chris@181 5 algorithm.
Chris@181 6
Chris@181 7 Centre for Digital Music, Queen Mary, University of London.
Chris@181 8
Chris@181 9 This program is free software; you can redistribute it and/or
Chris@181 10 modify it under the terms of the GNU General Public License as
Chris@181 11 published by the Free Software Foundation; either version 2 of the
Chris@181 12 License, or (at your option) any later version. See the file
Chris@181 13 COPYING included with this distribution for more information.
Chris@181 14 */
Chris@181 15
Chris@181 16 #ifndef MATCH_TYPES_H
Chris@181 17 #define MATCH_TYPES_H
Chris@181 18
Chris@181 19 #include <vector>
Chris@183 20 #include <cstdint>
Chris@189 21 #include <float.h>
Chris@181 22
Chris@188 23 #ifdef USE_COMPACT_TYPES
Chris@188 24
Chris@181 25 /// A single value in a feature vector
Chris@183 26 typedef float featurebin_t;
Chris@181 27
Chris@181 28 /// The distance between two feature vectors
Chris@183 29 typedef uint8_t distance_t;
Chris@183 30
Chris@191 31 /// What to cast a distance_t to when printing it (to avoid printing as char)
Chris@191 32 typedef int distance_print_t;
Chris@191 33
Chris@191 34 const distance_t MaxDistance = 0xfe;
Chris@191 35 const distance_t InvalidDistance = 0xff;
Chris@181 36
Chris@181 37 /// The integrated distance (path cost) from the origin to a given point
Chris@183 38 typedef uint32_t pathcost_t;
Chris@183 39
Chris@191 40 const pathcost_t MaxPathCost = 0xfffffffe;
Chris@191 41 const pathcost_t InvalidPathCost = 0xffffffff;
Chris@181 42
Chris@181 43 /// A direction advance instruction or state
Chris@183 44 enum advance_t : uint8_t {
Chris@181 45 AdvanceNone,
Chris@181 46 AdvanceBoth,
Chris@181 47 AdvanceThis,
Chris@181 48 AdvanceOther
Chris@181 49 };
Chris@181 50
Chris@188 51 #else
Chris@188 52
Chris@188 53 #ifndef USE_PRECISE_TYPES
Chris@188 54 #error You must define either USE_COMPACT_TYPES or USE_PRECISE_TYPES
Chris@188 55 #endif
Chris@188 56
Chris@188 57 /// A single value in a feature vector
Chris@188 58 typedef double featurebin_t;
Chris@188 59
Chris@188 60 /// The distance between two feature vectors
Chris@188 61 typedef float distance_t;
Chris@188 62
Chris@191 63 /// What to cast a distance_t to when printing it
Chris@191 64 typedef distance_t distance_print_t;
Chris@191 65
Chris@189 66 const float MaxDistance = FLT_MAX;
Chris@188 67 const float InvalidDistance = -1.f;
Chris@188 68
Chris@188 69 /// The integrated distance (path cost) from the origin to a given point
Chris@188 70 typedef double pathcost_t;
Chris@188 71
Chris@189 72 const double MaxPathCost = DBL_MAX;
Chris@188 73 const double InvalidPathCost = -1.;
Chris@188 74
Chris@188 75 /// A direction advance instruction or state
Chris@188 76 enum advance_t {
Chris@188 77 AdvanceNone,
Chris@188 78 AdvanceBoth,
Chris@188 79 AdvanceThis,
Chris@188 80 AdvanceOther
Chris@188 81 };
Chris@188 82
Chris@188 83 #endif
Chris@188 84
Chris@188 85
Chris@188 86 /// A feature vector
Chris@188 87 typedef std::vector<featurebin_t> feature_t;
Chris@188 88
Chris@188 89 /// A sequence of feature vectors
Chris@188 90 typedef std::vector<feature_t> featureseq_t;
Chris@188 91
Chris@188 92 /// A distance vector
Chris@188 93 typedef std::vector<distance_t> distancevec_t;
Chris@188 94
Chris@188 95 /// A distance matrix
Chris@188 96 typedef std::vector<distancevec_t> distancemat_t;
Chris@188 97
Chris@188 98 /// A vector of path costs
Chris@188 99 typedef std::vector<pathcost_t> pathcostvec_t;
Chris@188 100
Chris@188 101 /// A matrix of path costs
Chris@188 102 typedef std::vector<pathcostvec_t> pathcostmat_t;
Chris@188 103
Chris@181 104 /// A vector of advance directions
Chris@181 105 typedef std::vector<advance_t> advancevec_t;
Chris@181 106
Chris@181 107 /// A matrix of advance directions
Chris@181 108 typedef std::vector<advancevec_t> advancemat_t;
Chris@181 109
Chris@191 110 /// A normalised path cost, i.e. a pathcost_t divided by some scale factor
Chris@191 111 typedef double normpathcost_t;
Chris@191 112
Chris@181 113
Chris@181 114 #endif