Chris@181: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@181: Chris@181: /* Chris@181: Vamp feature extraction plugin using the MATCH audio alignment Chris@181: algorithm. Chris@181: Chris@181: Centre for Digital Music, Queen Mary, University of London. Chris@181: Chris@181: This program is free software; you can redistribute it and/or Chris@181: modify it under the terms of the GNU General Public License as Chris@181: published by the Free Software Foundation; either version 2 of the Chris@181: License, or (at your option) any later version. See the file Chris@181: COPYING included with this distribution for more information. Chris@181: */ Chris@181: Chris@181: #ifndef MATCH_TYPES_H Chris@181: #define MATCH_TYPES_H Chris@181: Chris@181: #include Chris@183: #include Chris@189: #include Chris@181: Chris@188: #ifdef USE_COMPACT_TYPES Chris@188: Chris@181: /// A single value in a feature vector Chris@183: typedef float featurebin_t; Chris@181: Chris@181: /// The distance between two feature vectors Chris@183: typedef uint8_t distance_t; Chris@183: Chris@191: /// What to cast a distance_t to when printing it (to avoid printing as char) Chris@191: typedef int distance_print_t; Chris@191: Chris@191: const distance_t MaxDistance = 0xfe; Chris@191: const distance_t InvalidDistance = 0xff; Chris@181: Chris@181: /// The integrated distance (path cost) from the origin to a given point Chris@183: typedef uint32_t pathcost_t; Chris@183: Chris@191: const pathcost_t MaxPathCost = 0xfffffffe; Chris@191: const pathcost_t InvalidPathCost = 0xffffffff; Chris@181: Chris@181: /// A direction advance instruction or state Chris@183: enum advance_t : uint8_t { Chris@181: AdvanceNone, Chris@181: AdvanceBoth, Chris@181: AdvanceThis, Chris@181: AdvanceOther Chris@181: }; Chris@181: Chris@188: #else Chris@188: Chris@188: #ifndef USE_PRECISE_TYPES Chris@188: #error You must define either USE_COMPACT_TYPES or USE_PRECISE_TYPES Chris@188: #endif Chris@188: Chris@188: /// A single value in a feature vector Chris@188: typedef double featurebin_t; Chris@188: Chris@188: /// The distance between two feature vectors Chris@188: typedef float distance_t; Chris@188: Chris@191: /// What to cast a distance_t to when printing it Chris@191: typedef distance_t distance_print_t; Chris@191: Chris@189: const float MaxDistance = FLT_MAX; Chris@188: const float InvalidDistance = -1.f; Chris@188: Chris@188: /// The integrated distance (path cost) from the origin to a given point Chris@188: typedef double pathcost_t; Chris@188: Chris@189: const double MaxPathCost = DBL_MAX; Chris@188: const double InvalidPathCost = -1.; Chris@188: Chris@188: /// A direction advance instruction or state Chris@188: enum advance_t { Chris@188: AdvanceNone, Chris@188: AdvanceBoth, Chris@188: AdvanceThis, Chris@188: AdvanceOther Chris@188: }; Chris@188: Chris@188: #endif Chris@188: Chris@188: Chris@188: /// A feature vector Chris@188: typedef std::vector feature_t; Chris@188: Chris@188: /// A sequence of feature vectors Chris@188: typedef std::vector featureseq_t; Chris@188: Chris@188: /// A distance vector Chris@188: typedef std::vector distancevec_t; Chris@188: Chris@188: /// A distance matrix Chris@188: typedef std::vector distancemat_t; Chris@188: Chris@188: /// A vector of path costs Chris@188: typedef std::vector pathcostvec_t; Chris@188: Chris@188: /// A matrix of path costs Chris@188: typedef std::vector pathcostmat_t; Chris@188: Chris@181: /// A vector of advance directions Chris@181: typedef std::vector advancevec_t; Chris@181: Chris@181: /// A matrix of advance directions Chris@181: typedef std::vector advancemat_t; Chris@181: Chris@191: /// A normalised path cost, i.e. a pathcost_t divided by some scale factor Chris@191: typedef double normpathcost_t; Chris@191: Chris@181: Chris@181: #endif