/* GStreamer * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu> * * gstladspa.h: Header for LV2 plugin * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef __GST_LV2_H__ #define __GST_LV2_H__ #include <slv2/slv2.h> #include <gst/gst.h> #include <gst/signalprocessor/gstsignalprocessor.h> G_BEGIN_DECLS typedef struct _lv2_control_info { gchar *name; gchar *param_name; gfloat lowerbound, upperbound; gfloat def; gboolean lower, upper, samplerate; gboolean toggled, logarithmic, integer, writable; } lv2_control_info; typedef struct _GstLV2 GstLV2; typedef struct _GstLV2Class GstLV2Class; typedef struct _GstLV2Group GstLV2Group; typedef struct _GstLV2Port GstLV2Port; struct _GstLV2 { GstSignalProcessor parent; SLV2Plugin plugin; SLV2Instance instance; gboolean activated; }; struct _GstLV2Group { SLV2Value uri; /**< RDF resource (URI or blank node) */ guint pad; /**< Gst pad index */ SLV2Value symbol; /**< Gst pad name / LV2 group symbol */ GArray *ports; /**< Array of GstLV2Port */ gboolean has_roles; /**< TRUE iff all ports have a known role */ }; struct _GstLV2Port { gint index; /**< LV2 port index (on LV2 plugin) */ gint pad; /**< Gst pad index (iff not part of a group) */ SLV2Value role; /**< Channel position / port role */ GstAudioChannelPosition position; /**< Channel position */ }; struct _GstLV2Class { GstSignalProcessorClass parent_class; SLV2Plugin plugin; GArray *in_groups; /**< Array of GstLV2Group */ GArray *out_groups; /**< Array of GstLV2Group */ GArray *audio_in_ports; /**< Array of GstLV2Port */ GArray *audio_out_ports; /**< Array of GstLV2Port */ GArray *control_in_ports; /**< Array of GstLV2Port */ GArray *control_out_ports; /**< Array of GstLV2Port */ }; G_END_DECLS #endif /* __GST_LV2_H__ */