summaryrefslogtreecommitdiff
path: root/libs/fst/fst.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-06-22 00:22:16 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-06-22 00:22:16 +0000
commit4d3e06f29d4f97b362fb1f69fde977cefd16cf9f (patch)
tree4f7924b3a5ed83dc0f12839997d94ff1310c1104 /libs/fst/fst.h
parent912da52a539981193941d8739fa6f103b5e406db (diff)
more details for VST support
git-svn-id: svn://localhost/ardour2/trunk@630 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/fst/fst.h')
-rw-r--r--libs/fst/fst.h111
1 files changed, 111 insertions, 0 deletions
diff --git a/libs/fst/fst.h b/libs/fst/fst.h
new file mode 100644
index 0000000000..61dc09a2a1
--- /dev/null
+++ b/libs/fst/fst.h
@@ -0,0 +1,111 @@
+#ifndef __fst_fst_h__
+#define __fst_fst_h__
+
+#include <setjmp.h>
+#include <signal.h>
+#include <pthread.h>
+
+/**
+ * Display FST error message.
+ *
+ * Set via fst_set_error_function(), otherwise a FST-provided
+ * default will print @a msg (plus a newline) to stderr.
+ *
+ * @param msg error message text (no newline at end).
+ */
+extern void (*fst_error_callback)(const char *msg);
+
+/**
+ * Set the @ref fst_error_callback for error message display.
+ *
+ * The FST library provides two built-in callbacks for this purpose:
+ * default_fst_error_callback() and silent_fst_error_callback().
+ */
+void fst_set_error_function (void (*func)(const char *));
+
+#include <vst/AEffect.h>
+
+typedef struct _FST FST;
+typedef struct _FSTHandle FSTHandle;
+typedef struct _FSTInfo FSTInfo;
+
+struct _FSTInfo
+{
+ char *name;
+ int UniqueID;
+ char *Category;
+
+ int numInputs;
+ int numOutputs;
+ int numParams;
+
+ int wantMidi;
+ int wantEvents;
+ int hasEditor;
+ int canProcessReplacing; // what do we need this for ?
+
+ // i think we should save the parameter Info Stuff soon.
+ // struct VstParameterInfo *infos;
+ char **ParamNames;
+ char **ParamLabels;
+};
+
+struct _FSTHandle
+{
+ void* dll;
+ char* name;
+ char* nameptr; /* ptr returned from strdup() etc. */
+ AEffect* (*main_entry)(audioMasterCallback);
+
+ int plugincnt;
+};
+
+struct _FST
+{
+ AEffect* plugin;
+ void* window; /* win32 HWND */
+ int xid; /* X11 XWindow */
+ FSTHandle* handle;
+ int width;
+ int height;
+ int destroy;
+
+ struct _FST* next;
+
+ pthread_mutex_t lock;
+ pthread_cond_t window_status_change;
+ int been_activated;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int fst_init (void (*sighandler)(int,siginfo_t*,void*));
+
+extern FSTHandle* fst_load (const char*);
+extern int fst_unload (FSTHandle*);
+
+extern FST* fst_instantiate (FSTHandle*, audioMasterCallback amc, void* userptr);
+extern void fst_close (FST*);
+
+extern void fst_event_loop_remove_plugin (FST* fst);
+extern void fst_event_loop_add_plugin (FST* fst);
+
+extern int fst_run_editor (FST*);
+extern void fst_destroy_editor (FST*);
+extern int fst_get_XID (FST*);
+
+extern int fst_adopt_thread ();
+extern void* fst_get_teb();
+
+extern void fst_signal_handler (int sig, siginfo_t* info, void* context);
+
+extern FSTInfo *fst_get_info( char *dllpathname );
+extern void fst_free_info( FSTInfo *info );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __fst_fst_h__ */