annotate src/MatchTypes.h @ 188:487261a22b18 re-minimise

distance_t * diagonalWeight might not fit in distance_t; use pathcost_t for it. Also remove C-style casts.
author Chris Cannam
date Thu, 26 Feb 2015 12:19:17 +0000
parents ba0d2104abec
children d4b3b5c2cb58
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@181 21
Chris@188 22 #ifdef USE_COMPACT_TYPES
Chris@188 23
Chris@181 24 /// A single value in a feature vector
Chris@183 25 typedef float featurebin_t;
Chris@181 26
Chris@181 27 /// The distance between two feature vectors
Chris@183 28 typedef uint8_t distance_t;
Chris@183 29
Chris@188 30 const int MaxDistance = 0xfe;
Chris@183 31 const int InvalidDistance = 0xff;
Chris@181 32
Chris@181 33 /// The integrated distance (path cost) from the origin to a given point
Chris@183 34 typedef uint32_t pathcost_t;
Chris@183 35
Chris@188 36 const int MaxPathCost = 0xfffffffe;
Chris@188 37 const int InvalidPathCost = 0xffffffff;
Chris@181 38
Chris@181 39 /// A direction advance instruction or state
Chris@183 40 enum advance_t : uint8_t {
Chris@181 41 AdvanceNone,
Chris@181 42 AdvanceBoth,
Chris@181 43 AdvanceThis,
Chris@181 44 AdvanceOther
Chris@181 45 };
Chris@181 46
Chris@188 47 #else
Chris@188 48
Chris@188 49 #ifndef USE_PRECISE_TYPES
Chris@188 50 #error You must define either USE_COMPACT_TYPES or USE_PRECISE_TYPES
Chris@188 51 #endif
Chris@188 52
Chris@188 53 /// A single value in a feature vector
Chris@188 54 typedef double featurebin_t;
Chris@188 55
Chris@188 56 /// The distance between two feature vectors
Chris@188 57 typedef float distance_t;
Chris@188 58
Chris@188 59 const float MaxDistance = FLOAT_MAX;
Chris@188 60 const float InvalidDistance = -1.f;
Chris@188 61
Chris@188 62 /// The integrated distance (path cost) from the origin to a given point
Chris@188 63 typedef double pathcost_t;
Chris@188 64
Chris@188 65 const double MaxPathCost = DOUBLE_MAX;
Chris@188 66 const double InvalidPathCost = -1.;
Chris@188 67
Chris@188 68 /// A direction advance instruction or state
Chris@188 69 enum advance_t {
Chris@188 70 AdvanceNone,
Chris@188 71 AdvanceBoth,
Chris@188 72 AdvanceThis,
Chris@188 73 AdvanceOther
Chris@188 74 };
Chris@188 75
Chris@188 76 #endif
Chris@188 77
Chris@188 78
Chris@188 79 /// A feature vector
Chris@188 80 typedef std::vector<featurebin_t> feature_t;
Chris@188 81
Chris@188 82 /// A sequence of feature vectors
Chris@188 83 typedef std::vector<feature_t> featureseq_t;
Chris@188 84
Chris@188 85 /// A distance vector
Chris@188 86 typedef std::vector<distance_t> distancevec_t;
Chris@188 87
Chris@188 88 /// A distance matrix
Chris@188 89 typedef std::vector<distancevec_t> distancemat_t;
Chris@188 90
Chris@188 91 /// A vector of path costs
Chris@188 92 typedef std::vector<pathcost_t> pathcostvec_t;
Chris@188 93
Chris@188 94 /// A matrix of path costs
Chris@188 95 typedef std::vector<pathcostvec_t> pathcostmat_t;
Chris@188 96
Chris@181 97 /// A vector of advance directions
Chris@181 98 typedef std::vector<advance_t> advancevec_t;
Chris@181 99
Chris@181 100 /// A matrix of advance directions
Chris@181 101 typedef std::vector<advancevec_t> advancemat_t;
Chris@181 102
Chris@181 103
Chris@181 104 #endif