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
|