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@236
|
8 Copyright (c) 2007-2020 Simon Dixon, Chris Cannam, and Queen Mary
|
Chris@230
|
9 University of London, Copyright (c) 2014-2015 Tido GmbH.
|
Chris@230
|
10
|
Chris@181
|
11 This program is free software; you can redistribute it and/or
|
Chris@181
|
12 modify it under the terms of the GNU General Public License as
|
Chris@181
|
13 published by the Free Software Foundation; either version 2 of the
|
Chris@181
|
14 License, or (at your option) any later version. See the file
|
Chris@181
|
15 COPYING included with this distribution for more information.
|
Chris@181
|
16 */
|
Chris@181
|
17
|
Chris@181
|
18 #ifndef MATCH_TYPES_H
|
Chris@181
|
19 #define MATCH_TYPES_H
|
Chris@181
|
20
|
Chris@181
|
21 #include <vector>
|
Chris@183
|
22 #include <cstdint>
|
Chris@189
|
23 #include <float.h>
|
Chris@181
|
24
|
Chris@188
|
25 #ifdef USE_COMPACT_TYPES
|
Chris@188
|
26
|
Chris@181
|
27 /// A single value in a feature vector
|
Chris@183
|
28 typedef float featurebin_t;
|
Chris@181
|
29
|
Chris@181
|
30 /// The distance between two feature vectors
|
Chris@183
|
31 typedef uint8_t distance_t;
|
Chris@183
|
32
|
Chris@191
|
33 /// What to cast a distance_t to when printing it (to avoid printing as char)
|
Chris@191
|
34 typedef int distance_print_t;
|
Chris@191
|
35
|
Chris@212
|
36 const distance_t DISTANCE_MAX = 0xfe;
|
Chris@212
|
37 const distance_t INVALID_DISTANCE = 0xff;
|
Chris@181
|
38
|
Chris@181
|
39 /// The integrated distance (path cost) from the origin to a given point
|
Chris@183
|
40 typedef uint32_t pathcost_t;
|
Chris@183
|
41
|
Chris@212
|
42 const pathcost_t PATHCOST_MAX = 0xfffffffe;
|
Chris@212
|
43 const pathcost_t INVALID_PATHCOST = 0xffffffff;
|
Chris@181
|
44
|
Chris@181
|
45 /// A direction advance instruction or state
|
Chris@183
|
46 enum advance_t : uint8_t {
|
Chris@181
|
47 AdvanceNone,
|
Chris@181
|
48 AdvanceBoth,
|
Chris@181
|
49 AdvanceThis,
|
Chris@181
|
50 AdvanceOther
|
Chris@181
|
51 };
|
Chris@181
|
52
|
Chris@188
|
53 #else
|
Chris@188
|
54
|
Chris@188
|
55 #ifndef USE_PRECISE_TYPES
|
Chris@188
|
56 #error You must define either USE_COMPACT_TYPES or USE_PRECISE_TYPES
|
Chris@188
|
57 #endif
|
Chris@188
|
58
|
Chris@188
|
59 /// A single value in a feature vector
|
Chris@188
|
60 typedef double featurebin_t;
|
Chris@188
|
61
|
Chris@188
|
62 /// The distance between two feature vectors
|
Chris@188
|
63 typedef float distance_t;
|
Chris@188
|
64
|
Chris@191
|
65 /// What to cast a distance_t to when printing it
|
Chris@191
|
66 typedef distance_t distance_print_t;
|
Chris@191
|
67
|
Chris@212
|
68 const float DISTANCE_MAX = FLT_MAX;
|
Chris@212
|
69 const float INVALID_DISTANCE = -1.f;
|
Chris@188
|
70
|
Chris@188
|
71 /// The integrated distance (path cost) from the origin to a given point
|
Chris@188
|
72 typedef double pathcost_t;
|
Chris@188
|
73
|
Chris@212
|
74 const double PATHCOST_MAX = DBL_MAX;
|
Chris@212
|
75 const double INVALID_PATHCOST = -1.;
|
Chris@188
|
76
|
Chris@188
|
77 /// A direction advance instruction or state
|
Chris@188
|
78 enum advance_t {
|
Chris@188
|
79 AdvanceNone,
|
Chris@188
|
80 AdvanceBoth,
|
Chris@188
|
81 AdvanceThis,
|
Chris@188
|
82 AdvanceOther
|
Chris@188
|
83 };
|
Chris@188
|
84
|
Chris@188
|
85 #endif
|
Chris@188
|
86
|
Chris@188
|
87
|
Chris@188
|
88 /// A feature vector
|
Chris@188
|
89 typedef std::vector<featurebin_t> feature_t;
|
Chris@188
|
90
|
Chris@188
|
91 /// A sequence of feature vectors
|
Chris@188
|
92 typedef std::vector<feature_t> featureseq_t;
|
Chris@188
|
93
|
Chris@188
|
94 /// A distance vector
|
Chris@188
|
95 typedef std::vector<distance_t> distancevec_t;
|
Chris@188
|
96
|
Chris@188
|
97 /// A distance matrix
|
Chris@188
|
98 typedef std::vector<distancevec_t> distancemat_t;
|
Chris@188
|
99
|
Chris@188
|
100 /// A vector of path costs
|
Chris@188
|
101 typedef std::vector<pathcost_t> pathcostvec_t;
|
Chris@188
|
102
|
Chris@188
|
103 /// A matrix of path costs
|
Chris@188
|
104 typedef std::vector<pathcostvec_t> pathcostmat_t;
|
Chris@188
|
105
|
Chris@181
|
106 /// A vector of advance directions
|
Chris@181
|
107 typedef std::vector<advance_t> advancevec_t;
|
Chris@181
|
108
|
Chris@181
|
109 /// A matrix of advance directions
|
Chris@181
|
110 typedef std::vector<advancevec_t> advancemat_t;
|
Chris@181
|
111
|
Chris@191
|
112 /// A normalised path cost, i.e. a pathcost_t divided by some scale factor
|
Chris@191
|
113 typedef double normpathcost_t;
|
Chris@191
|
114
|
Chris@181
|
115
|
Chris@181
|
116 #endif
|