summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Kost <ensonic@users.sf.net>2009-09-22 13:44:14 +0300
committerStefan Kost <ensonic@users.sf.net>2009-09-22 13:44:14 +0300
commitac3ed46d71b79276019b000e0b05be8d0d840599 (patch)
tree704429cc75d5052867a64a4425327e5dfd8001fb
parentf82a4fa622368c7d34619a490438335357cfcacb (diff)
Revert "LV2 preset support."
-rw-r--r--ext/lv2/gstlv2.c169
-rw-r--r--ext/lv2/gstlv2.h18
2 files changed, 16 insertions, 171 deletions
diff --git a/ext/lv2/gstlv2.c b/ext/lv2/gstlv2.c
index 4b99f9396..ac4c90382 100644
--- a/ext/lv2/gstlv2.c
+++ b/ext/lv2/gstlv2.c
@@ -167,13 +167,6 @@ gst_lv2_build_positions (GstLV2Group * group)
return positions;
}
-static gint
-gst_lv2_compare_symbol (gconstpointer a, gconstpointer b, gpointer data)
-{
- return strcmp (slv2_value_as_string ((SLV2Value) a),
- slv2_value_as_string ((SLV2Value) b));
-}
-
static void
gst_lv2_base_init (gpointer g_class)
{
@@ -183,16 +176,13 @@ gst_lv2_base_init (gpointer g_class)
GstElementDetails *details;
SLV2Plugin lv2plugin;
SLV2Value val;
- SLV2Values values = NULL, sub_values = NULL;
- SLV2Value prev = NULL;
+ SLV2Values values, sub_values;
GstLV2Group *group = NULL;
GstAudioChannelPosition position = GST_AUDIO_CHANNEL_POSITION_INVALID;
GstAudioChannelPosition mono_position = GST_AUDIO_CHANNEL_POSITION_FRONT_MONO;
GstAudioChannelPosition *positions = NULL;
- guint j, in_pad_index = 0, out_pad_index = 0, in_prop_index = 0;
+ guint j, in_pad_index = 0, out_pad_index = 0;
gchar *klass_tags;
- GTree *control_port_indices = g_tree_new_full (gst_lv2_compare_symbol,
- NULL, NULL, free);
GST_DEBUG ("base_init %p", g_class);
@@ -220,17 +210,8 @@ gst_lv2_base_init (gpointer g_class)
const SLV2Port port = slv2_plugin_get_port_by_index (lv2plugin, j);
const gboolean is_input = slv2_port_is_a (lv2plugin, port, input_class);
gboolean in_group = FALSE;
- struct _GstLV2Port desc;
- desc.index = j;
- desc.pad = 0;
- desc.role = NULL;
- desc.position = GST_AUDIO_CHANNEL_POSITION_INVALID;
-
- /* we only care about audio port groups (for multi-channel) */
- if (slv2_port_is_a (lv2plugin, port, audio_class))
- values = slv2_port_get_value (lv2plugin, port, in_group_pred);
- else
- values = NULL;
+ struct _GstLV2Port desc = { j, 0 };
+ values = slv2_port_get_value (lv2plugin, port, in_group_pred);
if (slv2_values_size (values) > 0) {
/* port is part of a group */
@@ -291,22 +272,15 @@ gst_lv2_base_init (gpointer g_class)
* is illegal so we just ignore it */
if (slv2_port_is_a (lv2plugin, port, audio_class)) {
desc.pad = is_input ? in_pad_index++ : out_pad_index++;
- if (is_input) {
+ if (is_input)
g_array_append_val (klass->audio_in_ports, desc);
- } else {
+ else
g_array_append_val (klass->audio_out_ports, desc);
- }
} else if (slv2_port_is_a (lv2plugin, port, control_class)) {
- if (is_input) {
- gint *prop_num = malloc (sizeof (gint));
- desc.pad = in_prop_index++;
- *prop_num = desc.pad;
- g_tree_insert (control_port_indices, slv2_port_get_symbol (lv2plugin,
- port), prop_num);
+ if (is_input)
g_array_append_val (klass->control_in_ports, desc);
- } else {
+ else
g_array_append_val (klass->control_out_ports, desc);
- }
} else {
/* unknown port type */
continue;
@@ -378,59 +352,6 @@ gst_lv2_base_init (gpointer g_class)
j, 1, &mono_position);
}
- /* find presets */
- values = slv2_plugin_query_sparql (lv2plugin,
- "PREFIX pset: <http://lv2plug.in/ns/dev/presets#>\n"
- "PREFIX dc: <http://dublincore.org/documents/dcmi-namespace/>\n"
- "SELECT ?preset ?name ?sym ?val WHERE {\n"
- " <> pset:hasPreset ?preset .\n"
- " ?preset dc:title ?name ;\n"
- " lv2:port ?port .\n"
- " ?port lv2:symbol ?sym ;\n"
- " pset:value ?val .\n" "}\n");
- for (; !slv2_results_finished (values); slv2_results_next (values)) {
- SLV2Value preset = slv2_results_get_binding_value (values, 0);
- SLV2Value name = slv2_results_get_binding_value (values, 1);
- SLV2Value sym = slv2_results_get_binding_value (values, 2);
- SLV2Value val = slv2_results_get_binding_value (values, 3);
- GstLV2Preset *p = NULL;
- const gint *index = NULL;
- GstLV2PresetValue preset_val;
-
- if (!klass->presets)
- klass->presets = g_array_new (FALSE, TRUE, sizeof (GstLV2Preset));
-
- if (!slv2_value_equals (prev, preset)) {
- struct _GstLV2Preset new_preset;
- new_preset.uri = preset;
- new_preset.name = name;
- new_preset.values = NULL;
- g_array_append_val (klass->presets, new_preset);
- }
- p = &g_array_index (klass->presets, GstLV2Preset, klass->presets->len - 1);
- prev = p->uri;
-
- /* we don't understand non-float port values */
- if (!slv2_value_is_float (val)) {
- continue;
- }
-
- /* look up port by symbol (we need the index) */
- index = (gint *) g_tree_lookup (control_port_indices, sym);
- if (!index) {
- /* we don't know about this port, just ignore it */
- continue;
- }
-
- preset_val.index = *index;
- preset_val.value = slv2_value_as_float (val);
- if (!p->values)
- p->values = g_array_new (FALSE, TRUE, sizeof (GstLV2PresetValue));
- g_array_append_val (p->values, preset_val);
- }
-
- g_tree_destroy (control_port_indices);
-
/* construct the element details struct */
details = g_new0 (GstElementDetails, 1);
val = slv2_plugin_get_name (lv2plugin);
@@ -545,8 +466,7 @@ gst_lv2_class_init (GstLV2Class * klass, SLV2Plugin lv2plugin)
{
GObjectClass *gobject_class;
GstSignalProcessorClass *gsp_class;
- GParamSpec *preset_spec;
- gint i, offset = 1;
+ gint i;
GST_DEBUG ("class_init %p", klass);
@@ -563,22 +483,7 @@ gst_lv2_class_init (GstLV2Class * klass, SLV2Plugin lv2plugin)
klass->plugin = lv2plugin;
- /* register preset property */
- if (klass->presets) {
- gint perms =
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT |
- GST_PARAM_CONTROLLABLE;
- preset_spec =
- g_param_spec_int ("preset", "preset", "preset", 0,
- klass->presets->len - 1, 0, perms);
- g_object_class_install_property (G_OBJECT_CLASS (klass), 1, preset_spec);
-
- /* if there is a preset property, then port properties are offset by 2
- * relative to lv2 port index (rather than 1) */
- offset = 2;
- }
-
- /* register control port properties */
+ /* register properties */
for (i = 0; i < gsp_class->num_control_in; i++) {
GParamSpec *p;
@@ -586,8 +491,8 @@ gst_lv2_class_init (GstLV2Class * klass, SLV2Plugin lv2plugin)
p = gst_lv2_class_get_param_spec (klass,
g_array_index (klass->control_in_ports, GstLV2Port, i).index);
- /* control properties have an offset of (offset) */
- g_object_class_install_property (G_OBJECT_CLASS (klass), i + offset, p);
+ /* properties have an offset of 1 */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), i + 1, p);
}
for (i = 0; i < gsp_class->num_control_out; i++) {
@@ -596,9 +501,9 @@ gst_lv2_class_init (GstLV2Class * klass, SLV2Plugin lv2plugin)
p = gst_lv2_class_get_param_spec (klass,
g_array_index (klass->control_out_ports, GstLV2Port, i).index);
- /* control properties have an offset of (offset), and we already added num_control_in */
+ /* properties have an offset of 1, and we already added num_control_in */
g_object_class_install_property (G_OBJECT_CLASS (klass),
- gsp_class->num_control_in + i + offset, p);
+ gsp_class->num_control_in + i + 1, p);
}
}
@@ -608,7 +513,6 @@ gst_lv2_init (GstLV2 * lv2, GstLV2Class * klass)
lv2->plugin = klass->plugin;
lv2->instance = NULL;
lv2->activated = FALSE;
- lv2->current_preset = 0;
}
static void
@@ -617,44 +521,13 @@ gst_lv2_set_property (GObject * object, guint prop_id, const GValue * value,
{
GstSignalProcessor *gsp;
GstSignalProcessorClass *gsp_class;
- GstLV2 *lv2;
- GstLV2Class *lv2_class;
- gint i;
gsp = GST_SIGNAL_PROCESSOR (object);
gsp_class = GST_SIGNAL_PROCESSOR_GET_CLASS (object);
- lv2 = (GstLV2 *) gsp;
- lv2_class = (GstLV2Class *) gsp_class;
- /* remember, properties have an offset of 1, or 2 if there are presets */
+ /* remember, properties have an offset of 1 */
prop_id--;
- if (lv2_class->presets) {
- if (prop_id == 0) {
- GstLV2Preset *preset;
- gint num = g_value_get_int (value);
- if (num > lv2_class->presets->len) {
- GST_WARNING ("Preset number out of range\n");
- return;
- }
- preset = &g_array_index (lv2_class->presets, GstLV2Preset, num);
-
- /* apply preset controls */
- for (i = 0; i < preset->values->len; ++i) {
- GstLV2PresetValue *preset_value =
- &g_array_index (preset->values, GstLV2PresetValue, i);
- GstLV2Port *desc =
- &g_array_index (lv2_class->control_in_ports, GstLV2Port,
- preset_value->index);
- gsp->control_in[prop_id] = preset_value->value;
- }
- lv2->current_preset = num;
- return;
- } else {
- prop_id--;
- }
- }
-
/* only input ports */
g_return_if_fail (prop_id < gsp_class->num_control_in);
@@ -680,25 +553,13 @@ gst_lv2_get_property (GObject * object, guint prop_id, GValue * value,
{
GstSignalProcessor *gsp;
GstSignalProcessorClass *gsp_class;
- GstLV2 *lv2;
- GstLV2Class *lv2_class;
gfloat *controls;
gsp = GST_SIGNAL_PROCESSOR (object);
gsp_class = GST_SIGNAL_PROCESSOR_GET_CLASS (object);
- lv2 = (GstLV2 *) gsp;
- lv2_class = (GstLV2Class *) gsp_class;
/* remember, properties have an offset of 1 */
prop_id--;
- if (lv2_class->presets != NULL) {
- if (prop_id == 0) {
- g_value_set_int (value, lv2->current_preset);
- return;
- } else {
- prop_id--;
- }
- }
if (prop_id < gsp_class->num_control_in) {
controls = gsp->control_in;
diff --git a/ext/lv2/gstlv2.h b/ext/lv2/gstlv2.h
index ab9c8ae85..85e4532e7 100644
--- a/ext/lv2/gstlv2.h
+++ b/ext/lv2/gstlv2.h
@@ -48,8 +48,6 @@ typedef struct _GstLV2 GstLV2;
typedef struct _GstLV2Class GstLV2Class;
typedef struct _GstLV2Group GstLV2Group;
typedef struct _GstLV2Port GstLV2Port;
-typedef struct _GstLV2Preset GstLV2Preset;
-typedef struct _GstLV2PresetValue GstLV2PresetValue;
struct _GstLV2 {
@@ -59,7 +57,6 @@ struct _GstLV2 {
SLV2Instance instance;
gboolean activated;
- gint current_preset;
};
struct _GstLV2Group {
@@ -72,23 +69,11 @@ struct _GstLV2Group {
struct _GstLV2Port {
gint index; /**< LV2 port index (on LV2 plugin) */
- gint pad; /**< Gst pad (iff not part of a group) or property index */
+ gint pad; /**< Gst pad index (iff not part of a group) */
SLV2Value role; /**< Channel position / port role */
GstAudioChannelPosition position; /**< Channel position */
};
-
-struct _GstLV2PresetValue {
- gint index; /**< LV2 port index */
- gfloat value; /**< Port value */
-};
-
-struct _GstLV2Preset {
- SLV2Value uri;
- SLV2Value name;
- GArray *values; /**< Array of GstLV2PresetValue */
-};
-
struct _GstLV2Class {
GstSignalProcessorClass parent_class;
@@ -101,7 +86,6 @@ struct _GstLV2Class {
GArray *control_in_ports; /**< Array of GstLV2Port */
GArray *control_out_ports; /**< Array of GstLV2Port */
- GArray *presets; /**< Array of GstLV2Preset */
};