[LAD] minimal LV2

Gabriel M. Beddingfield gabrbedd at gmail.com
Sun Jun 13 03:08:59 UTC 2010



On Sun, 13 Jun 2010, fons at 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



More information about the Linux-audio-dev mailing list