On Sun, 13 Jun 2010, f...@kokkinizita.net wrote:
Can an LV2 extension redefine everything except the mimimum required for discovery ? This includes the way ports are described, the way the host is supposed to call the plugin etc. ?
Pretty much, yes. Here's how: When you instantiate the plugin (LV2_Descriptor::instantiate) you pass an array of LV2_Feature structs. This struct is very simple: typedef struct _LV2_Feature { const char * URI; void * data; } LV2_Feature; The `data` pointer can be a pointer to /anything/... but it should be clearly defined, according to the URI. Also, there is the function LV2_Descriptor::extension_data that allows the Host to query the plugin for additional 'extension data.' It doesn't take a lot of imagination to see that this could be used to define a whole different class of plugin API's that would fit within this... and that these mechanisms themselves are not too different from the basic LV2 discovery fuction: lv2_descriptor(). Port descriptions are also done by extensions, seeing as how the port parameter for LV2_Descriptor::connect_port is simply a void* pointer (i.e. anything). However, I don't see many options for redefining how LV2_Descriptor::run is called. About the only way to redefine this would be to create an empty run() method and have your subversive sub-plugin API define an alternate one. hth, gabriel _______________________________________________ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev