Re: [LAD] minimal LV2

From: Gabriel M. Beddingfield <gabrbedd@email-addr-hidden>
Date: Sun Jun 13 2010 - 06:08:59 EEST

On Sun, 13 Jun 2010, fons@email-addr-hidden 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@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Sun Jun 13 08:15:02 2010

This archive was generated by hypermail 2.1.8 : Sun Jun 13 2010 - 08:15:02 EEST