cannam@0: cannam@0: cannam@0: VampPluginSDK: vamp.h Source File cannam@0: cannam@0: cannam@0: cannam@0: cannam@0: cannam@0: cannam@0:

vamp.h

Go to the documentation of this file.
00001 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
cannam@0: 00002 
cannam@0: 00003 /*
cannam@0: 00004     Vamp
cannam@0: 00005 
cannam@0: 00006     An API for audio analysis and feature extraction plugins.
cannam@0: 00007 
cannam@0: 00008     Centre for Digital Music, Queen Mary, University of London.
cannam@0: 00009     Copyright 2006 Chris Cannam.
cannam@0: 00010   
cannam@0: 00011     Permission is hereby granted, free of charge, to any person
cannam@0: 00012     obtaining a copy of this software and associated documentation
cannam@0: 00013     files (the "Software"), to deal in the Software without
cannam@0: 00014     restriction, including without limitation the rights to use, copy,
cannam@0: 00015     modify, merge, publish, distribute, sublicense, and/or sell copies
cannam@0: 00016     of the Software, and to permit persons to whom the Software is
cannam@0: 00017     furnished to do so, subject to the following conditions:
cannam@0: 00018 
cannam@0: 00019     The above copyright notice and this permission notice shall be
cannam@0: 00020     included in all copies or substantial portions of the Software.
cannam@0: 00021 
cannam@0: 00022     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
cannam@0: 00023     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
cannam@0: 00024     MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
cannam@0: 00025     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
cannam@0: 00026     ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
cannam@0: 00027     CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
cannam@0: 00028     WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
cannam@0: 00029 
cannam@0: 00030     Except as contained in this notice, the names of the Centre for
cannam@0: 00031     Digital Music; Queen Mary, University of London; and Chris Cannam
cannam@0: 00032     shall not be used in advertising or otherwise to promote the sale,
cannam@0: 00033     use or other dealings in this Software without prior written
cannam@0: 00034     authorization.
cannam@0: 00035 */
cannam@0: 00036 
cannam@0: 00037 #ifndef VAMP_HEADER_INCLUDED
cannam@0: 00038 #define VAMP_HEADER_INCLUDED
cannam@0: 00039 
cannam@0: 00040 #ifdef __cplusplus
cannam@0: 00041 extern "C" {
cannam@0: 00042 #endif
cannam@0: 00043 
cannam@0: 00053 #define VAMP_API_VERSION 1
cannam@0: 00054 
cannam@0: 00071 typedef struct _VampParameterDescriptor
cannam@0: 00072 {
cannam@0: 00074     const char *identifier;
cannam@0: 00075 
cannam@0: 00077     const char *name;
cannam@0: 00078 
cannam@0: 00080     const char *description;
cannam@0: 00081 
cannam@0: 00083     const char *unit;
cannam@0: 00084 
cannam@0: 00086     float minValue;
cannam@0: 00087 
cannam@0: 00089     float maxValue;
cannam@0: 00090 
cannam@0: 00092     float defaultValue;
cannam@0: 00093 
cannam@0: 00095     int isQuantized;
cannam@0: 00096 
cannam@0: 00098     float quantizeStep;
cannam@0: 00099 
cannam@0: 00101     const char **valueNames;
cannam@0: 00102 
cannam@0: 00103 } VampParameterDescriptor;
cannam@0: 00104 
cannam@0: 00105 typedef enum
cannam@0: 00106 {
cannam@0: 00108     vampOneSamplePerStep,
cannam@0: 00109 
cannam@0: 00111     vampFixedSampleRate,
cannam@0: 00112 
cannam@0: 00114     vampVariableSampleRate
cannam@0: 00115 
cannam@0: 00116 } VampSampleType;
cannam@0: 00117 
cannam@0: 00118 typedef struct _VampOutputDescriptor
cannam@0: 00119 {
cannam@0: 00121     const char *identifier;
cannam@0: 00122 
cannam@0: 00124     const char *name;
cannam@0: 00125 
cannam@0: 00127     const char *description;
cannam@0: 00128 
cannam@0: 00130     const char *unit;
cannam@0: 00131 
cannam@0: 00133     int hasFixedBinCount;
cannam@0: 00134 
cannam@0: 00136     unsigned int binCount;
cannam@0: 00137 
cannam@0: 00139     const char **binNames;
cannam@0: 00140 
cannam@0: 00142     int hasKnownExtents;
cannam@0: 00143     
cannam@0: 00145     float minValue;
cannam@0: 00146 
cannam@0: 00148     float maxValue;
cannam@0: 00149 
cannam@0: 00151     int isQuantized;
cannam@0: 00152 
cannam@0: 00154     float quantizeStep;
cannam@0: 00155 
cannam@0: 00157     VampSampleType sampleType;
cannam@0: 00158 
cannam@0: 00161     float sampleRate;
cannam@0: 00162 
cannam@0: 00163 } VampOutputDescriptor;
cannam@0: 00164 
cannam@0: 00165 typedef struct _VampFeature
cannam@0: 00166 {
cannam@0: 00168     int hasTimestamp;
cannam@0: 00169 
cannam@0: 00171     int sec;
cannam@0: 00172 
cannam@0: 00174     int nsec;
cannam@0: 00175 
cannam@0: 00177     unsigned int valueCount;
cannam@0: 00178 
cannam@0: 00180     float *values;
cannam@0: 00181 
cannam@0: 00183     char *label;
cannam@0: 00184 
cannam@0: 00185 } VampFeature;
cannam@0: 00186 
cannam@0: 00187 typedef struct _VampFeatureList
cannam@0: 00188 {
cannam@0: 00190     unsigned int featureCount;
cannam@0: 00191 
cannam@0: 00193     VampFeature *features;
cannam@0: 00194 
cannam@0: 00195 } VampFeatureList;
cannam@0: 00196 
cannam@0: 00197 typedef enum
cannam@0: 00198 {
cannam@0: 00199     vampTimeDomain,
cannam@0: 00200     vampFrequencyDomain
cannam@0: 00201 
cannam@0: 00202 } VampInputDomain;
cannam@0: 00203 
cannam@0: 00204 typedef void *VampPluginHandle;
cannam@0: 00205 
cannam@0: 00206 typedef struct _VampPluginDescriptor
cannam@0: 00207 {
cannam@0: 00209     unsigned int vampApiVersion;
cannam@0: 00210 
cannam@0: 00212     const char *identifier;
cannam@0: 00213 
cannam@0: 00215     const char *name;
cannam@0: 00216 
cannam@0: 00218     const char *description;
cannam@0: 00219 
cannam@0: 00221     const char *maker;
cannam@0: 00222 
cannam@0: 00224     int pluginVersion;
cannam@0: 00225 
cannam@0: 00227     const char *copyright;
cannam@0: 00228 
cannam@0: 00230     unsigned int parameterCount;
cannam@0: 00231 
cannam@0: 00233     const VampParameterDescriptor **parameters;
cannam@0: 00234 
cannam@0: 00236     unsigned int programCount;
cannam@0: 00237 
cannam@0: 00239     const char **programs;
cannam@0: 00240 
cannam@0: 00242     VampInputDomain inputDomain;
cannam@0: 00243 
cannam@0: 00245     VampPluginHandle (*instantiate)(const struct _VampPluginDescriptor *,
cannam@0: 00246                                    float inputSampleRate);
cannam@0: 00247 
cannam@0: 00249     void (*cleanup)(VampPluginHandle);
cannam@0: 00250 
cannam@0: 00252     int (*initialise)(VampPluginHandle,
cannam@0: 00253                       unsigned int inputChannels,
cannam@0: 00254                       unsigned int stepSize, 
cannam@0: 00255                       unsigned int blockSize);
cannam@0: 00256 
cannam@0: 00258     void (*reset)(VampPluginHandle);
cannam@0: 00259 
cannam@0: 00261     float (*getParameter)(VampPluginHandle, int);
cannam@0: 00262 
cannam@0: 00264     void  (*setParameter)(VampPluginHandle, int, float);
cannam@0: 00265 
cannam@0: 00267     unsigned int (*getCurrentProgram)(VampPluginHandle);
cannam@0: 00268 
cannam@0: 00270     void  (*selectProgram)(VampPluginHandle, unsigned int);
cannam@0: 00271     
cannam@0: 00273     unsigned int (*getPreferredStepSize)(VampPluginHandle);
cannam@0: 00274 
cannam@0: 00276     unsigned int (*getPreferredBlockSize)(VampPluginHandle);
cannam@0: 00277 
cannam@0: 00279     unsigned int (*getMinChannelCount)(VampPluginHandle);
cannam@0: 00280 
cannam@0: 00282     unsigned int (*getMaxChannelCount)(VampPluginHandle);
cannam@0: 00283 
cannam@0: 00285     unsigned int (*getOutputCount)(VampPluginHandle);
cannam@0: 00286 
cannam@0: 00291     VampOutputDescriptor *(*getOutputDescriptor)(VampPluginHandle,
cannam@0: 00292                                                 unsigned int);
cannam@0: 00293 
cannam@0: 00295     void (*releaseOutputDescriptor)(VampOutputDescriptor *);
cannam@0: 00296 
cannam@0: 00302     VampFeatureList *(*process)(VampPluginHandle,
cannam@0: 00303                                 const float *const *inputBuffers,
cannam@0: 00304                                 int sec,
cannam@0: 00305                                 int nsec);
cannam@0: 00306 
cannam@0: 00308     VampFeatureList *(*getRemainingFeatures)(VampPluginHandle);
cannam@0: 00309 
cannam@0: 00311     void (*releaseFeatureSet)(VampFeatureList *);
cannam@0: 00312 
cannam@0: 00313 } VampPluginDescriptor;
cannam@0: 00314 
cannam@0: 00315 
cannam@0: 00334 const VampPluginDescriptor *vampGetPluginDescriptor
cannam@0: 00335     (unsigned int hostApiVersion, unsigned int index);
cannam@0: 00336 
cannam@0: 00337 
cannam@0: 00339 typedef const VampPluginDescriptor *(*VampGetPluginDescriptorFunction)
cannam@0: 00340     (unsigned int, unsigned int);
cannam@0: 00341 
cannam@0: 00342 #ifdef __cplusplus
cannam@0: 00343 }
cannam@0: 00344 #endif
cannam@0: 00345 
cannam@0: 00346 #endif
cannam@0: 
cannam@0:
Generated on Wed Jul 9 11:36:07 2008 for VampPluginSDK by  cannam@0: cannam@0: doxygen 1.5.5
cannam@0: cannam@0: