+/*
+ * CINELERRA
+ * Copyright (C) 2016-2020 William Morrow
+ *
+ * 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
+ */
+
#ifdef HAVE_LV2
#include "bctrace.h"
}
}
+ if( !nb_inputs || !nb_outputs ) {
+ printf(": Unsupported lv2 plugin, missing audio input or output\n");
+ reset_lv2();
+ return 1;
+ }
+
uri_map.handle = (LV2_URID_Map_Handle)this;
uri_map.map = map_uri;
features.append(new Lv2Feature(LV2_URID__map, &uri_map));
printf("lv2: lilv_plugin_instantiate failed\n");
return 1;
}
+
+// After instantiate, some plugins require fields to be filled in before
+// activate is called. This is done via ConnectPort, which connects a
+// port to a data structure in the host (CinGG). So these have to be
+// allocated first.
+ init_buffer(bfrsz);
+ connect_ports(conf, PORTS_ALL);
+
const LV2_Descriptor *lilv_desc = inst->lv2_descriptor;
worker_iface = !lilv_desc->extension_data ? 0 :
(LV2_Worker_Interface*)lilv_desc->extension_data(LV2_WORKER__interface);
(lilv_plugin_has_feature(lilv, powerOf2BlockLength) ||
lilv_plugin_has_feature(lilv, fixedBlockLength) ||
lilv_plugin_has_feature(lilv, boundedBlockLength)) ? 4096 : 0;
- init_buffer(bfrsz);
+
return 0;
}