+/*
+ * CINELERRA
+ * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
#ifndef __PLUGINLV2_H__
#define __PLUGINLV2_H__
int load_lv2(const char *path,char *title=0);
int init_lv2(PluginLV2ClientConfig &conf, int sample_rate, int bfrsz);
virtual int is_forked() { return 0; }
-
- static LV2_URID uri_table_map(LV2_URID_Map_Handle handle, const char *uri);
- static const char *uri_table_unmap(LV2_URID_Map_Handle handle, LV2_URID urid);
- static uint32_t uri_to_id(LV2_URI_Map_Callback_Data callback_data,
- const char *map, const char *uri);
+ static uint32_t map_uri(LV2_URID_Map_Handle handle, const char *uri);
+ static const char *unmap_uri(LV2_URID_Unmap_Handle handle, LV2_URID urid);
+ LV2_URID_Map uri_map;
+ LV2_URID_Unmap uri_unmap;
void connect_ports(PluginLV2ClientConfig &conf, int ports);
void del_buffer();
void new_buffer(int64_t sz);
const LilvPlugin *lilv;
LilvUIs *lilv_uis;
- LV2_URI_Map_Feature uri_map;
PluginLV2UriTable uri_table;
LV2_URID_Map map;
LV2_Feature map_feature;
LV2_Atom_Sequence seq_in[2];
LV2_Atom_Sequence *seq_out;
float samplerate, refreshrate;
- int block_length, midi_buf_size;
+ int min_block_length, block_length;
+ int midi_buf_size;
LilvInstance *inst;
SuilInstance *sinst;
LV2_Worker_Schedule schedule;
PluginLV2Work *work_avail, *work_input;
PluginLV2Work *work_output, **work_tail;
- pthread_mutex_t worker_lock;
+ pthread_mutex_t startup_lock, worker_lock;
pthread_cond_t worker_ready;
int worker_done;
};
enum { NO_COMMAND,
LV2_OPEN,
LV2_LOAD,
+ LV2_CONFIG,
LV2_UPDATE,
LV2_SHOW,
LV2_HIDE,