annotate vamp-sdk/hostext/PluginSummarisingAdapter.h @ 211:caa9d07bb9bd

* Update VC project file to handle proper export of plugin lookup function, and use the right dll name to match the other platforms and the .cat file
author cannam
date Sat, 18 Oct 2008 16:51:51 +0000
parents fe30a25ee4f8
children 991d2ae87980
rev   line source
cannam@173 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@173 2
cannam@173 3 /*
cannam@173 4 Vamp
cannam@173 5
cannam@173 6 An API for audio analysis and feature extraction plugins.
cannam@173 7
cannam@173 8 Centre for Digital Music, Queen Mary, University of London.
cannam@173 9 Copyright 2006-2008 Chris Cannam and QMUL.
cannam@173 10
cannam@173 11 Permission is hereby granted, free of charge, to any person
cannam@173 12 obtaining a copy of this software and associated documentation
cannam@173 13 files (the "Software"), to deal in the Software without
cannam@173 14 restriction, including without limitation the rights to use, copy,
cannam@173 15 modify, merge, publish, distribute, sublicense, and/or sell copies
cannam@173 16 of the Software, and to permit persons to whom the Software is
cannam@173 17 furnished to do so, subject to the following conditions:
cannam@173 18
cannam@173 19 The above copyright notice and this permission notice shall be
cannam@173 20 included in all copies or substantial portions of the Software.
cannam@173 21
cannam@173 22 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
cannam@173 23 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
cannam@173 24 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
cannam@173 25 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
cannam@173 26 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
cannam@173 27 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
cannam@173 28 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
cannam@173 29
cannam@173 30 Except as contained in this notice, the names of the Centre for
cannam@173 31 Digital Music; Queen Mary, University of London; and Chris Cannam
cannam@173 32 shall not be used in advertising or otherwise to promote the sale,
cannam@173 33 use or other dealings in this Software without prior written
cannam@173 34 authorization.
cannam@173 35 */
cannam@173 36
cannam@173 37 #ifndef _VAMP_PLUGIN_SUMMARISING_ADAPTER_H_
cannam@173 38 #define _VAMP_PLUGIN_SUMMARISING_ADAPTER_H_
cannam@173 39
cannam@173 40 #include "PluginWrapper.h"
cannam@173 41
cannam@174 42 #include <set>
cannam@174 43
cannam@173 44 namespace Vamp {
cannam@173 45
cannam@173 46 namespace HostExt {
cannam@173 47
cannam@197 48 /**
cannam@197 49 * \class PluginSummarisingAdapter PluginSummarisingAdapter.h <vamp-sdk/hostext/PluginSummarisingAdapter.h>
cannam@197 50 *
cannam@197 51 * \note This class was introduced in version 1.1 of the Vamp plugin SDK.
cannam@197 52 */
cannam@197 53
cannam@173 54 class PluginSummarisingAdapter : public PluginWrapper
cannam@173 55 {
cannam@173 56 public:
cannam@173 57 PluginSummarisingAdapter(Plugin *plugin); // I take ownership of plugin
cannam@173 58 virtual ~PluginSummarisingAdapter();
cannam@173 59
cannam@195 60 bool initialise(size_t channels, size_t stepSize, size_t blockSize);
cannam@176 61
cannam@173 62 FeatureSet process(const float *const *inputBuffers, RealTime timestamp);
cannam@173 63 FeatureSet getRemainingFeatures();
cannam@173 64
cannam@173 65 typedef std::set<RealTime> SegmentBoundaries;
cannam@173 66 void setSummarySegmentBoundaries(const SegmentBoundaries &);
cannam@173 67
cannam@173 68 enum SummaryType {
cannam@179 69 Minimum = 0,
cannam@179 70 Maximum = 1,
cannam@179 71 Mean = 2,
cannam@179 72 Median = 3,
cannam@179 73 Mode = 4,
cannam@179 74 Sum = 5,
cannam@179 75 Variance = 6,
cannam@179 76 StandardDeviation = 7,
cannam@179 77 Count = 8,
cannam@179 78
cannam@179 79 UnknownSummaryType = 999
cannam@173 80 };
cannam@173 81
cannam@180 82 /**
cannam@180 83 * AveragingMethod indicates how the adapter should handle
cannam@180 84 * average-based summaries of features whose results are not
cannam@180 85 * equally spaced in time.
cannam@180 86 *
cannam@180 87 * If SampleAverage is specified, summary types based on averages
cannam@180 88 * will be calculated by treating each result individually without
cannam@180 89 * regard to its time: for example, the mean will be the sum of
cannam@180 90 * all values divided by the number of values.
cannam@180 91 *
cannam@180 92 * If ContinuousTimeAverage is specified, each feature will be
cannam@180 93 * considered to have a duration, either as specified in the
cannam@180 94 * feature's duration field, or until the following feature: thus,
cannam@180 95 * for example, the mean will be the sum of the products of values
cannam@180 96 * and durations, divided by the total duration.
cannam@180 97 *
cannam@180 98 * Although SampleAverage is useful for many types of feature,
cannam@180 99 * ContinuousTimeAverage is essential for some situations, for
cannam@180 100 * example finding the result that spans the largest proportion of
cannam@180 101 * the input given a feature that emits a new result only when the
cannam@180 102 * value changes (the modal value integrated over time).
cannam@180 103 */
cannam@180 104 enum AveragingMethod {
cannam@180 105 SampleAverage = 0,
cannam@180 106 ContinuousTimeAverage = 1,
cannam@180 107 };
cannam@180 108
cannam@180 109 FeatureList getSummaryForOutput(int output,
cannam@180 110 SummaryType type,
cannam@180 111 AveragingMethod method = SampleAverage);
cannam@180 112
cannam@180 113 FeatureSet getSummaryForAllOutputs(SummaryType type,
cannam@180 114 AveragingMethod method = SampleAverage);
cannam@173 115
cannam@173 116 protected:
cannam@173 117 class Impl;
cannam@173 118 Impl *m_impl;
cannam@173 119 };
cannam@173 120
cannam@173 121 }
cannam@173 122
cannam@173 123 }
cannam@173 124
cannam@173 125 #endif