LV2
ns/lv2core/lv2.h
Go to the documentation of this file.
00001 /*
00002   LV2 - An audio plugin interface specification.
00003   Copyright 2006-2011 Steve Harris, David Robillard.
00004 
00005   Based on LADSPA, Copyright 2000-2002 Richard W.E. Furse,
00006   Paul Barton-Davis, Stefan Westerfeld.
00007  
00008   Permission to use, copy, modify, and/or distribute this software for any
00009   purpose with or without fee is hereby granted, provided that the above
00010   copyright notice and this permission notice appear in all copies.
00011 
00012   THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
00013   WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
00014   MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
00015   ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
00016   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
00017   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
00018   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
00019 */
00020 
00027 #ifndef LV2_H_INCLUDED
00028 #define LV2_H_INCLUDED
00029 
00030 #include <stdint.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035 
00043 typedef void * LV2_Handle;
00044 
00053 typedef struct _LV2_Feature {
00059     const char * URI;
00060 
00067     void * data;
00068 } LV2_Feature;
00069 
00076 typedef struct _LV2_Descriptor {
00084     const char * URI;
00085 
00114     LV2_Handle (*instantiate)(const struct _LV2_Descriptor * descriptor,
00115                               double                         sample_rate,
00116                               const char *                   bundle_path,
00117                               const LV2_Feature *const *     features);
00118 
00153     void (*connect_port)(LV2_Handle instance,
00154                          uint32_t   port,
00155                          void *     data_location);
00156 
00178     void (*activate)(LV2_Handle instance);
00179 
00203     void (*run)(LV2_Handle instance,
00204                 uint32_t   sample_count);
00205 
00224     void (*deactivate)(LV2_Handle instance);
00225 
00237     void (*cleanup)(LV2_Handle instance);
00238 
00252     const void * (*extension_data)(const char * uri);
00253 } LV2_Descriptor;
00254 
00276 const LV2_Descriptor * lv2_descriptor(uint32_t index);
00277 
00281 typedef const LV2_Descriptor *
00282 (*LV2_Descriptor_Function)(uint32_t index);
00283 
00288 #ifdef WIN32
00289 #define LV2_SYMBOL_EXPORT __declspec(dllexport)
00290 #else
00291 #define LV2_SYMBOL_EXPORT
00292 #endif
00293 
00294 #ifdef __cplusplus
00295 }
00296 #endif
00297 
00298 #endif /* LV2_H_INCLUDED */