second (and hopefully) final part of changes to respond to header format changes...
[ArdourMidi.git] / libs / fst / fst.h
blob6ef5acf7946f966a79fcd7dadcf272bec5fa3c68
1 #ifndef __fst_fst_h__
2 #define __fst_fst_h__
4 #include <setjmp.h>
5 #include <signal.h>
6 #include <pthread.h>
8 /**
9 * Display FST error message.
11 * Set via fst_set_error_function(), otherwise a FST-provided
12 * default will print @a msg (plus a newline) to stderr.
14 * @param msg error message text (no newline at end).
16 extern void (*fst_error_callback)(const char *msg);
18 /**
19 * Set the @ref fst_error_callback for error message display.
21 * The FST library provides two built-in callbacks for this purpose:
22 * default_fst_error_callback() and silent_fst_error_callback().
24 void fst_set_error_function (void (*func)(const char *));
26 void fst_error (const char *fmt, ...);
28 #define VESTIGE_HEADER
30 #ifdef VESTIGE_HEADER
31 #include <vestige/aeffectx.h>
32 #endif
34 typedef struct _FST FST;
35 typedef struct _FSTHandle FSTHandle;
36 typedef struct _FSTInfo FSTInfo;
38 struct _FSTInfo
40 char *name;
41 char *creator;
42 int UniqueID;
43 char *Category;
45 int numInputs;
46 int numOutputs;
47 int numParams;
49 int wantMidi;
50 int wantEvents;
51 int hasEditor;
52 int canProcessReplacing; // what do we need this for ?
54 // i think we should save the parameter Info Stuff soon.
55 // struct VstParameterInfo *infos;
56 char **ParamNames;
57 char **ParamLabels;
60 typedef struct AEffect * (*main_entry_t)(audioMasterCallback);
62 struct _FSTHandle
64 void* dll;
65 char* name;
66 char* nameptr; /* ptr returned from strdup() etc. */
67 //struct AEffect* (*main_entry)(audioMasterCallback);
68 main_entry_t main_entry;
70 int plugincnt;
73 struct _FST
75 struct AEffect* plugin;
76 void* window; /* win32 HWND */
77 int xid; /* X11 XWindow */
78 FSTHandle* handle;
79 int width;
80 int height;
81 int wantIdle;
82 int destroy;
83 int vst_version;
85 int want_program;
86 int current_program;
87 float *want_params;
88 float *set_params;
90 int dispatcher_wantcall;
91 int dispatcher_opcode;
92 int dispatcher_index;
93 int dispatcher_val;
94 void * dispatcher_ptr;
95 float dispatcher_opt;
96 int dispatcher_retval;
98 struct _FST* next;
99 pthread_mutex_t lock;
100 pthread_cond_t window_status_change;
101 pthread_cond_t plugin_dispatcher_called;
102 int been_activated;
105 #ifdef __cplusplus
106 extern "C" {
107 #endif
109 extern int fst_init (void* possible_hmodule);
110 extern void fst_exit ();
112 extern FSTHandle* fst_load (const char*);
113 extern int fst_unload (FSTHandle*);
115 extern FST* fst_instantiate (FSTHandle*, audioMasterCallback amc, void* userptr);
116 extern void fst_close (FST*);
118 extern int fst_create_editor (FST* fst);
119 extern int fst_run_editor (FST*);
120 extern void fst_destroy_editor (FST*);
121 extern int fst_get_XID (FST*);
122 extern void fst_move_window_into_view (FST*);
124 extern FSTInfo *fst_get_info (char *dllpathname);
125 extern void fst_free_info (FSTInfo *info);
126 extern void fst_event_loop_remove_plugin (FST* fst);
127 extern int fst_call_dispatcher(FST *fst, int opcode, int index, int val, void *ptr, float opt );
130 * Load a plugin state from a file.
132 extern int fst_load_state (FST * fst, char * filename);
135 * Save a plugin state to a file.
137 extern int fst_save_state (FST * fst, char * filename);
139 extern int wine_pthread_create (pthread_t* thread_id, const pthread_attr_t* attr, void *(*function)(void*), void* arg);
142 #ifdef __cplusplus
144 #endif
146 #endif /* __fst_fst_h__ */