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
|