summaryrefslogtreecommitdiff
path: root/libs/vamp-sdk/vamp/vamp.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/vamp-sdk/vamp/vamp.h')
-rw-r--r--libs/vamp-sdk/vamp/vamp.h388
1 files changed, 0 insertions, 388 deletions
diff --git a/libs/vamp-sdk/vamp/vamp.h b/libs/vamp-sdk/vamp/vamp.h
deleted file mode 100644
index 08a83ee6ac..0000000000
--- a/libs/vamp-sdk/vamp/vamp.h
+++ /dev/null
@@ -1,388 +0,0 @@
-/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
-
-/*
- Vamp
-
- An API for audio analysis and feature extraction plugins.
-
- Centre for Digital Music, Queen Mary, University of London.
- Copyright 2006 Chris Cannam.
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the "Software"), to deal in the Software without
- restriction, including without limitation the rights to use, copy,
- modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
- ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- Except as contained in this notice, the names of the Centre for
- Digital Music; Queen Mary, University of London; and Chris Cannam
- shall not be used in advertising or otherwise to promote the sale,
- use or other dealings in this Software without prior written
- authorization.
-*/
-
-#ifndef VAMP_HEADER_INCLUDED
-#define VAMP_HEADER_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Plugin API version. This is incremented when a change is made that
- * changes the binary layout of the descriptor records. When this
- * happens, there should be a mechanism for retaining compatibility
- * with older hosts and/or plugins.
- *
- * See also the vampApiVersion field in the plugin descriptor, and the
- * hostApiVersion argument to the vampGetPluginDescriptor function.
- */
-#define VAMP_API_VERSION 2
-
-/**
- * C language API for Vamp plugins.
- *
- * This is the formal plugin API for Vamp. Plugin authors may prefer
- * to use the C++ classes provided in the Vamp plugin SDK, instead of
- * using this API directly. There is an adapter class provided that
- * makes C++ plugins available using this C API with relatively little
- * work, and the C++ headers are more thoroughly documented.
- *
- * IMPORTANT: The comments in this file summarise the purpose of each
- * of the declared fields and functions, but do not provide a complete
- * guide to their permitted values and expected usage. Please refer
- * to the C++ headers in the Vamp plugin SDK for further details and
- * plugin lifecycle documentation.
- */
-
-typedef struct _VampParameterDescriptor
-{
- /** Computer-usable name of the parameter. Must not change. [a-zA-Z0-9_] */
- const char *identifier;
-
- /** Human-readable name of the parameter. May be translatable. */
- const char *name;
-
- /** Human-readable short text about the parameter. May be translatable. */
- const char *description;
-
- /** Human-readable unit of the parameter. */
- const char *unit;
-
- /** Minimum value. */
- float minValue;
-
- /** Maximum value. */
- float maxValue;
-
- /** Default value. Plugin is responsible for setting this on initialise. */
- float defaultValue;
-
- /** 1 if parameter values are quantized to a particular resolution. */
- int isQuantized;
-
- /** Quantization resolution, if isQuantized. */
- float quantizeStep;
-
- /** Human-readable names of the values, if isQuantized. May be NULL. */
- const char **valueNames;
-
-} VampParameterDescriptor;
-
-typedef enum
-{
- /** Each process call returns results aligned with call's block start. */
- vampOneSamplePerStep,
-
- /** Returned results are evenly spaced at samplerate specified below. */
- vampFixedSampleRate,
-
- /** Returned results have their own individual timestamps. */
- vampVariableSampleRate
-
-} VampSampleType;
-
-typedef struct _VampOutputDescriptor
-{
- /** Computer-usable name of the output. Must not change. [a-zA-Z0-9_] */
- const char *identifier;
-
- /** Human-readable name of the output. May be translatable. */
- const char *name;
-
- /** Human-readable short text about the output. May be translatable. */
- const char *description;
-
- /** Human-readable name of the unit of the output. */
- const char *unit;
-
- /** 1 if output has equal number of values for each returned result. */
- int hasFixedBinCount;
-
- /** Number of values per result, if hasFixedBinCount. */
- unsigned int binCount;
-
- /** Names of returned value bins, if hasFixedBinCount. May be NULL. */
- const char **binNames;
-
- /** 1 if each returned value falls within the same fixed min/max range. */
- int hasKnownExtents;
-
- /** Minimum value for a returned result in any bin, if hasKnownExtents. */
- float minValue;
-
- /** Maximum value for a returned result in any bin, if hasKnownExtents. */
- float maxValue;
-
- /** 1 if returned results are quantized to a particular resolution. */
- int isQuantized;
-
- /** Quantization resolution for returned results, if isQuantized. */
- float quantizeStep;
-
- /** Time positioning method for returned results (see VampSampleType). */
- VampSampleType sampleType;
-
- /** Sample rate of returned results, if sampleType is vampFixedSampleRate.
- "Resolution" of result, if sampleType is vampVariableSampleRate. */
- float sampleRate;
-
- /** 1 if the returned results for this output are known to have a
- duration field.
-
- This field is new in Vamp API version 2; it must not be tested
- for plugins that report an older API version in their plugin
- descriptor.
- */
- int hasDuration;
-
-} VampOutputDescriptor;
-
-typedef struct _VampFeature
-{
- /** 1 if the feature has a timestamp (i.e. if vampVariableSampleRate). */
- int hasTimestamp;
-
- /** Seconds component of timestamp. */
- int sec;
-
- /** Nanoseconds component of timestamp. */
- int nsec;
-
- /** Number of values. Must be binCount if hasFixedBinCount. */
- unsigned int valueCount;
-
- /** Values for this returned sample. */
- float *values;
-
- /** Label for this returned sample. May be NULL. */
- char *label;
-
-} VampFeature;
-
-typedef struct _VampFeatureV2
-{
- /** 1 if the feature has a duration. */
- int hasDuration;
-
- /** Seconds component of duratiion. */
- int durationSec;
-
- /** Nanoseconds component of duration. */
- int durationNsec;
-
-} VampFeatureV2;
-
-typedef union _VampFeatureUnion
-{
- // sizeof(featureV1) >= sizeof(featureV2) for backward compatibility
- VampFeature v1;
- VampFeatureV2 v2;
-
-} VampFeatureUnion;
-
-typedef struct _VampFeatureList
-{
- /** Number of features in this feature list. */
- unsigned int featureCount;
-
- /** Features in this feature list. May be NULL if featureCount is
- zero.
-
- If present, this array must contain featureCount feature
- structures for a Vamp API version 1 plugin, or 2*featureCount
- feature unions for a Vamp API version 2 plugin.
-
- The features returned by an API version 2 plugin must consist
- of the same feature structures as in API version 1 for the
- first featureCount array elements, followed by featureCount
- unions that contain VampFeatureV2 structures (or NULL pointers
- if no V2 feature structures are present).
- */
- VampFeatureUnion *features;
-
-} VampFeatureList;
-
-typedef enum
-{
- vampTimeDomain,
- vampFrequencyDomain
-
-} VampInputDomain;
-
-typedef void *VampPluginHandle;
-
-typedef struct _VampPluginDescriptor
-{
- /** API version with which this descriptor is compatible. */
- unsigned int vampApiVersion;
-
- /** Computer-usable name of the plugin. Must not change. [a-zA-Z0-9_] */
- const char *identifier;
-
- /** Human-readable name of the plugin. May be translatable. */
- const char *name;
-
- /** Human-readable short text about the plugin. May be translatable. */
- const char *description;
-
- /** Human-readable name of plugin's author or vendor. */
- const char *maker;
-
- /** Version number of the plugin. */
- int pluginVersion;
-
- /** Human-readable summary of copyright or licensing for plugin. */
- const char *copyright;
-
- /** Number of parameter inputs. */
- unsigned int parameterCount;
-
- /** Fixed descriptors for parameter inputs. */
- const VampParameterDescriptor **parameters;
-
- /** Number of programs. */
- unsigned int programCount;
-
- /** Fixed names for programs. */
- const char **programs;
-
- /** Preferred input domain for audio input (time or frequency). */
- VampInputDomain inputDomain;
-
- /** Create and return a new instance of this plugin. */
- VampPluginHandle (*instantiate)(const struct _VampPluginDescriptor *,
- float inputSampleRate);
-
- /** Destroy an instance of this plugin. */
- void (*cleanup)(VampPluginHandle);
-
- /** Initialise an instance following parameter configuration. */
- int (*initialise)(VampPluginHandle,
- unsigned int inputChannels,
- unsigned int stepSize,
- unsigned int blockSize);
-
- /** Reset an instance, ready to use again on new input data. */
- void (*reset)(VampPluginHandle);
-
- /** Get a parameter value. */
- float (*getParameter)(VampPluginHandle, int);
-
- /** Set a parameter value. May only be called before initialise. */
- void (*setParameter)(VampPluginHandle, int, float);
-
- /** Get the current program (if programCount > 0). */
- unsigned int (*getCurrentProgram)(VampPluginHandle);
-
- /** Set the current program. May only be called before initialise. */
- void (*selectProgram)(VampPluginHandle, unsigned int);
-
- /** Get the plugin's preferred processing window increment in samples. */
- unsigned int (*getPreferredStepSize)(VampPluginHandle);
-
- /** Get the plugin's preferred processing window size in samples. */
- unsigned int (*getPreferredBlockSize)(VampPluginHandle);
-
- /** Get the minimum number of input channels this plugin can handle. */
- unsigned int (*getMinChannelCount)(VampPluginHandle);
-
- /** Get the maximum number of input channels this plugin can handle. */
- unsigned int (*getMaxChannelCount)(VampPluginHandle);
-
- /** Get the number of feature outputs (distinct sets of results). */
- unsigned int (*getOutputCount)(VampPluginHandle);
-
- /** Get a descriptor for a given feature output. Returned pointer
- is valid only until next call to getOutputDescriptor for this
- handle, or releaseOutputDescriptor for this descriptor. Host
- must call releaseOutputDescriptor after use. */
- VampOutputDescriptor *(*getOutputDescriptor)(VampPluginHandle,
- unsigned int);
-
- /** Destroy a descriptor for a feature output. */
- void (*releaseOutputDescriptor)(VampOutputDescriptor *);
-
- /** Process an input block and return a set of features. Returned
- pointer is valid only until next call to process,
- getRemainingFeatures, or cleanup for this handle, or
- releaseFeatureSet for this feature set. Host must call
- releaseFeatureSet after use. */
- VampFeatureList *(*process)(VampPluginHandle,
- const float *const *inputBuffers,
- int sec,
- int nsec);
-
- /** Return any remaining features at the end of processing. */
- VampFeatureList *(*getRemainingFeatures)(VampPluginHandle);
-
- /** Release a feature set returned from process or getRemainingFeatures. */
- void (*releaseFeatureSet)(VampFeatureList *);
-
-} VampPluginDescriptor;
-
-
-/** Get the descriptor for a given plugin index in this library.
- Return NULL if the index is outside the range of valid indices for
- this plugin library.
-
- The hostApiVersion argument tells the library code the highest
- Vamp API version supported by the host. The function should
- return a plugin descriptor compatible with the highest API version
- supported by the library that is no higher than that supported by
- the host. Provided the descriptor has the correct vampApiVersion
- field for its actual compatibility level, the host should be able
- to do the right thing with it: use it if possible, discard it
- otherwise.
-
- This is the only symbol that a Vamp plugin actually needs to
- export from its shared object; all others can be hidden. See the
- accompanying documentation for notes on how to achieve this with
- certain compilers.
-*/
-const VampPluginDescriptor *vampGetPluginDescriptor
- (unsigned int hostApiVersion, unsigned int index);
-
-
-/** Function pointer type for vampGetPluginDescriptor. */
-typedef const VampPluginDescriptor *(*VampGetPluginDescriptorFunction)
- (unsigned int, unsigned int);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif