GNOME Bugzilla – Bug 678207
lv2: port to GStreamer 1.0 and SLV2 to Lilv
Last modified: 2016-05-15 21:55:02 UTC
Hi, SLV was abandoned upstream in favor of Lilv: http://drobilla.net/2011/04/29/slv2-is-dead-long-live-slv2/ Please port the code to the new the library or, at very least, drop SLV2 support. Thanks for considering.
Alessio, are you going to work on it? Maybe it could be proposed as a google summer of code task.
I'm unsure about the amount of time I could spare on this, so please go ahead.
Created attachment 322645 [details] [review] lv2: Port filters to GStreamer 1.0 and use lilv instead of slv2 Properly separate files as we will not have only one single base class for all elements as we used to with 0.10, but the same way it is done with ladspa, we subclass GstAudioFilter, GstBaseSource etc...
Created attachment 322646 [details] [review] lv2: Port filters to GStreamer 1.0 and use lilv instead of slv2 Properly separate files as we will not have only one single base class for all elements as we used to with 0.10, but the same way it is done with ladspa, we subclass GstAudioFilter, GstBaseSource etc...
Created attachment 323148 [details] [review] lv2: Port filters to GStreamer 1.0 and use lilv instead of slv2 Properly separate files as we will not have only one single base class for all elements as we used to with 0.10, but the same way it is done with ladspa, we subclass GstAudioFilter, GstBaseSource etc...
Awesome, configure needs a rebase, but tries the first few plugins in buzztrax and they worked.
Review of attachment 323148 [details] [review]: Looks good already. I would be nice to submit and iterate. Are you goign to also do the generators and do you want me to implement them? ::: ext/lv2/gstlv2filter.c @@ +192,3 @@ +} + +#if 0 why is this disabled? Could you add a FIXME: comment? Or is it related to the disabled code in gst_lv2_filter_setup()? @@ +410,3 @@ +gst_lv2_filter_deinterleave_data (guint n_channels, gfloat * outdata, + guint samples, gfloat * indata) +{ Can't we use the deinterleaved packing in the caps, or add a TODO for it? @@ +452,3 @@ + lv2_group = &lv2_class->in_group; + + in = g_new0 (gfloat, nframes); maybe special case channels=1 where we don't need extra in/out buffers and deinterleave/interleave calls. @@ +657,3 @@ + g_free (ret); + ret = nret; + } we should consider starting some bridge-utils library in base that has this code. @@ +824,3 @@ + + /* FIXME: not needed anymore when we can add pad templates, etc in class_init + * as class_data contains the LADSPA_Descriptor too */ state comment?
Review of attachment 323148 [details] [review]: ::: ext/lv2/gstlv2filter.c @@ +410,3 @@ +gst_lv2_filter_deinterleave_data (guint n_channels, gfloat * outdata, + guint samples, gfloat * indata) +{ Indeed, adding a TODO @@ +452,3 @@ + lv2_group = &lv2_class->in_group; + + in = g_new0 (gfloat, nframes); Yeah, for mono it is a bit useless, we should do it in LADSPA too I think we have the same unoptimized behaviour. @@ +657,3 @@ + g_free (ret); + ret = nret; + } Possible, not sure it is a big deal though. @@ +824,3 @@ + + /* FIXME: not needed anymore when we can add pad templates, etc in class_init + * as class_data contains the LADSPA_Descriptor too */ I just let that comment as it was, I am not sure I understand the idea.
Created attachment 324833 [details] [review] lv2: Port filters to GStreamer 1.0 and use lilv instead of slv2 Properly separate files as we will not have only one single base class for all elements as we used to with 0.10, but the same way it is done with ladspa, we subclass GstAudioFilter, GstBaseSource etc...
Attachment 324833 [details] pushed as c32e74f - lv2: Port filters to GStreamer 1.0 and use lilv instead of slv2
Reopenning so we can keep track of the source/generator element in here.
Sources are in. Over the next days, I'll add: * registry caching * more extensions * more port types (especially for sources we need CV and Events) I won't do sinks for now.
Registry cache done. commit 1c83ce7a96fcfafbe53c8701343970d5f700c1fb Author: Stefan Sauer <ensonic@users.sf.net> Date: Sun May 15 14:45:15 2016 -0700 lv2: add registry caching Use the plugin_cache extra data to avoid introspecting over and over again.