X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fvst_types.h;h=2e1c4074f27f603f52f964c605fce38cbf4e00ef;hb=0531d0dd0c544b183320efc32cf2780bc46a17d2;hp=5e97427d9b745145dd3622a2cc3ee795e931ce2b;hpb=e133709def199e8a28e34abc56791b05d6079a90;p=ardour.git diff --git a/libs/ardour/ardour/vst_types.h b/libs/ardour/ardour/vst_types.h index 5e97427d9b..2e1c4074f2 100644 --- a/libs/ardour/ardour/vst_types.h +++ b/libs/ardour/ardour/vst_types.h @@ -20,7 +20,11 @@ #ifndef __ardour_vst_types_h__ #define __ardour_vst_types_h__ -struct _VSTKey +#include +#include "ardour/libardour_visibility.h" +#include "ardour/vestige/aeffectx.h" + +struct LIBARDOUR_API _VSTKey { /** virtual-key code, or 0 if this _VSTFXKey is a `character' key */ int special; @@ -30,4 +34,103 @@ struct _VSTKey typedef struct _VSTKey VSTKey; +struct LIBARDOUR_API _VSTInfo +{ + char *name; + char *creator; + int UniqueID; + char *Category; + + int numInputs; + int numOutputs; + int numParams; + + int wantMidi; + int wantEvents; + int hasEditor; + int canProcessReplacing; + + char** ParamNames; + char** ParamLabels; +}; + +typedef struct _VSTInfo VSTInfo; + +typedef AEffect * (* main_entry_t) (audioMasterCallback); + +struct LIBARDOUR_API _VSTHandle +{ + void* dll; + char* name; + char* path; + + main_entry_t main_entry; + + int plugincnt; +}; + +typedef struct _VSTHandle VSTHandle; + +struct LIBARDOUR_API _VSTState +{ + AEffect* plugin; + + /* Linux */ + int linux_window; ///< The plugin's parent X11 XWindow + int linux_plugin_ui_window; ///< The ID of the plugin UI window created by the plugin + + /* Windows */ + void* windows_window; + + int xid; ///< X11 XWindow + + int want_resize; ///< Set to signal the plugin resized its UI + void* extra_data; ///< Pointer to any extra data + + void * event_callback_thisptr; + void (* eventProc) (void * event); + + VSTHandle* handle; + + int width; + int height; + int wantIdle; + + int voffset; + int hoffset; + int gui_shown; + int destroy; + int vst_version; + int has_editor; + + int program_set_without_editor; + + int want_program; + int want_chunk; + int n_pending_keys; + unsigned char * wanted_chunk; + int wanted_chunk_size; + float * want_params; + float * set_params; + + VSTKey pending_keys[16]; + + int dispatcher_wantcall; + int dispatcher_opcode; + int dispatcher_index; + int dispatcher_val; + void * dispatcher_ptr; + float dispatcher_opt; + int dispatcher_retval; + + struct _VSTState * next; + pthread_mutex_t lock; + pthread_cond_t window_status_change; + pthread_cond_t plugin_dispatcher_called; + pthread_cond_t window_created; + int been_activated; +}; + +typedef struct _VSTState VSTState; + #endif