annotate src/MatchTypes.h @ 246:aac9ad4064ea subsequence tip

Fix incorrect handling of silent tail in the non-subsequence MATCH phase; some debug output changes
author Chris Cannam
date Fri, 24 Jul 2020 14:29:55 +0100
parents 39fe8728e1ca
children
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@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