[LV2] --SPAM--::Re: [Devel] lv2_descriptor() considered harmful
David Robillard
d at drobilla.net
Sun Feb 26 16:01:59 PST 2012
On Mon, 2012-02-27 at 00:48 +0100, Stefan Kersten wrote:
> On 26.02.12 23:08, David Robillard wrote:
> > On Sun, 2012-02-26 at 14:28 +0100, Stefan Kersten wrote:
> > [...]
> >> my use case is an extension that allows realtime-safe instantiation (and
> >> destruction) of plugins. currently the interface to be provided by the plugin
> >> via extension_data looks like this:
> >>
> >> typedef struct
> >> {
> >> void (*initialize)(LV2_Descriptor * descriptor,
> >> const char * bundle_path,
> >> const LV2_Feature *const * features);
> >> void (*release)(LV2_Descriptor * descriptor);
> >>
> >> uint32_t (*instance_size)(const LV2_Descriptor * descriptor);
> >> uint32_t (*instance_alignment)(const LV2_Descriptor * descriptor);
> >>
> >> LV2_Handle (*instantiate)(const LV2_Descriptor * descriptor,
> >> void * location,
> >> double sample_rate);
> >> } LV2_RT_Instantiate_Interface;
> >>
> >> the main point here is that the host's feature set is required during library
> >> (or descriptor) initialization, because potentially non-realtime-safe calls
> >> (e.g. to the urid extension) cannot be made from within instantiate and their
> >> results need to be cached beforehand.
> >
> > Wouldn't it be simpler/better to just have the host pass an allocator?
>
> the idea is to keep instance creation overhead as low as possible; "placement"
> instantiation saves one call to the allocator and is possible for many plugins
> (in my case most of them generated by faust). an allocator feature still makes
> sense though, for plugins that don't know their memory requirements at compile time.
Fair enough (though it's just one function call). What do you need
dynamic alignment for?
> > Presumably initialize and release would go away if the new discovery API
> > was there to use.
>
> yes. i've been rolling my own plugin API when i realized that LV2 does almost
> everything i need and is extensible enough to make it do virtually anything.
> good work!
Best to get along with others if at all possible :)
Thanks,
-dr
More information about the Devel
mailing list