[SCM] calf/master: + LV2: update to the most recent LV2 context (but probably still unfinished) extension
js at users.alioth.debian.org
js at users.alioth.debian.org
Tue May 7 15:38:45 UTC 2013
The following commit has been merged in the master branch:
commit e69864765364eb18d2c69b6d4ca0ffe8e56b69cc
Author: Krzysztof Foltman <wdev at foltman.com>
Date: Fri Dec 26 17:04:35 2008 +0000
+ LV2: update to the most recent LV2 context (but probably still unfinished) extension
diff --git a/src/calf/giface.h b/src/calf/giface.h
index 86e3800..3b53324 100644
--- a/src/calf/giface.h
+++ b/src/calf/giface.h
@@ -329,9 +329,9 @@ public:
inline void params_reset() {}
/// Handle 'message context' port message
/// @arg output_ports pointer to bit array of output port "changed" flags, note that 0 = first audio input, not first parameter (use input_count + output_count)
- inline void message_run(uint32_t *output_ports) {
+ inline uint32_t message_run(uint32_t *valid_ports, uint32_t *output_ports) {
fprintf(stderr, "ERROR: message run not implemented\n");
- // configure(param_props[parameter].short_name, dynamic_cast<>());
+ return 0;
}
};
diff --git a/src/calf/lv2_contexts.h b/src/calf/lv2_contexts.h
index 23cdd6e..1d43707 100644
--- a/src/calf/lv2_contexts.h
+++ b/src/calf/lv2_contexts.h
@@ -1,5 +1,5 @@
/* LV2 OSC Messages Extension
- * Copyright (C) 2007 Dave Robillard <dave at drobilla.net>
+ * Copyright (C) 2007-2008 Dave Robillard <dave at drobilla.net>
*
* This header is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
@@ -19,24 +19,55 @@
#ifndef LV2_CONTEXTS_H
#define LV2_CONTEXTS_H
+#include <stdint.h>
+
#define LV2_CONTEXTS_URI "http://lv2plug.in/ns/dev/contexts"
#define LV2_CONTEXT_MESSAGE "http://lv2plug.in/ns/dev/contexts#MessageContext"
-#define LV2_CONTEXTS_SET_OUTPUT_WRITTEN(flags, index) \
- ((uint8_t*)flags)[(index) / 8] |= 1 << ((index) % 8)
+static inline void
+lv2_contexts_set_port_valid(uint32_t* flags, uint32_t index) {
+ ((uint8_t*)flags)[(index) / 8] |= 1 << ((index) % 8);
+}
+
+static inline void
+lv2_contexts_unset_port_valid(uint32_t* flags, uint32_t index) {
+ ((uint8_t*)flags)[(index) / 8] &= ~(1 << ((index) % 8));
+}
-#define LV2_CONTEXTS_UNSET_OUTPUT_WRITTEN(flags, index) \
- ((uint8_t*)flags)[(index) / 8] &= ~(1 << ((index) % 8))
+static inline int
+lv2_contexts_port_is_valid(uint32_t flags, uint32_t index) {
+ return ((flags & (1 << index)) != 0);
+}
#include "lv2.h"
#include <stdbool.h>
typedef struct {
- bool (*message_run)(LV2_Handle instance, uint32_t* outputs_written);
- void (*message_connect_port)(LV2_Handle instance, uint32_t port, void* data);
+ /** The message run function. This is called once to process a set of
+ * inputs and produce a set of outputs. Before calling the host MUST
+ * set valid_inputs such that the bit corresponding to each input port
+ * is 1 iff data is present. The plugin MUST only inspect bits
+ * corresponding to ports in the message thread. Before returning the
+ * plugin MUST set valid_outputs such that the bit corresponding to
+ * each output port of the message context is 1 iff data has been written
+ * to that port in the duration of this function invocation.
+ * The plugin must return 1 if outputs have been written, 0 otherwise.
+ */
+ uint32_t (*message_run)(LV2_Handle instance,
+ uint32_t* valid_inputs,
+ uint32_t* valid_outputs);
+
+ /** The message thread function alalogous to the LV2 connect_port
+ * function. This function must only be used to connect ports that
+ * belong to the message context. */
+ void (*message_connect_port)(LV2_Handle instance,
+ uint32_t port,
+ void* data);
+
} LV2MessageContext;
#endif // LV2_CONTEXTS_H
+
diff --git a/src/calf/lv2wrap.h b/src/calf/lv2wrap.h
index 79aad9e..d6dbf26 100644
--- a/src/calf/lv2wrap.h
+++ b/src/calf/lv2wrap.h
@@ -115,7 +115,7 @@ struct lv2_instance: public plugin_ctl_iface, public Module
void send_configures(send_configure_iface *sci) {
Module::send_configures(sci);
}
- void impl_message_run(uint32_t *output_ports) {
+ uint32_t impl_message_run(uint32_t *valid_inputs, uint32_t *output_ports) {
for (unsigned int i = 0; i < message_params.size(); i++)
{
int pn = message_params[i];
@@ -126,7 +126,7 @@ struct lv2_instance: public plugin_ctl_iface, public Module
configure(pp.short_name, ((LV2_String_Data *)Module::params[pn])->data);
}
}
- Module::message_run(output_ports);
+ return Module::message_run(valid_inputs, output_ports);
}
char *configure(const char *key, const char *value) {
// disambiguation - the plugin_ctl_iface version is just a stub, so don't use it
@@ -257,10 +257,9 @@ struct lv2_wrapper
}
}
- static bool cb_message_run(LV2_Handle Instance, uint32_t *outputs_written) {
+ static uint32_t cb_message_run(LV2_Handle Instance, uint32_t *valid_inputs, uint32_t *outputs_written) {
instance *mod = (instance *)Instance;
- mod->impl_message_run(outputs_written);
- return true;
+ return mod->impl_message_run(valid_inputs, outputs_written);
}
static void cb_run(LV2_Handle Instance, uint32_t SampleCount) {
instance *const mod = (instance *)Instance;
diff --git a/src/calf/modules_synths.h b/src/calf/modules_synths.h
index 6b29b6a..a1fb5ee 100644
--- a/src/calf/modules_synths.h
+++ b/src/calf/modules_synths.h
@@ -248,8 +248,9 @@ public:
char *configure(const char *key, const char *value);
void send_configures(send_configure_iface *);
- void message_run(uint32_t *output_ports) {
+ uint32_t message_run(uint32_t *valid_inputs, uint32_t *output_ports) {
// silence a default printf (which is kind of a warning about unhandled message_run)
+ return 0;
}
};
diff --git a/src/modules_small.cpp b/src/modules_small.cpp
index 2fee1d4..3bc788d 100644
--- a/src/modules_small.cpp
+++ b/src/modules_small.cpp
@@ -1250,13 +1250,13 @@ public:
void process(uint32_t)
{
}
- static bool message_run(LV2_Handle instance, uint32_t *outputs_written)
+ static uint32_t message_run(LV2_Handle instance, uint32_t *valid_inputs, uint32_t *outputs_written)
{
print_em_audio_module *self = (print_em_audio_module *)instance;
printf("message_run (events = %p, count = %d)\n", self->events, self->events->event_count);
self->dump(self->events);
*outputs_written = 0;
- return false;
+ return 0;
}
static void message_connect_port(LV2_Handle instance, uint32_t port, void* data)
{
@@ -1292,12 +1292,12 @@ public:
void process(uint32_t)
{
}
- static bool message_run(LV2_Handle instance, uint32_t *outputs_written)
+ static uint32_t message_run(LV2_Handle instance, uint32_t *valid_inputs, uint32_t *outputs_written)
{
copy_em_audio_module *self = (copy_em_audio_module *)instance;
- return self->message_run(outputs_written);
+ return self->message_run(valid_inputs, outputs_written);
}
- bool message_run(uint32_t *outputs_written)
+ uint32_t message_run(uint32_t *inputs_written, uint32_t *outputs_written)
{
event_port_read_iterator ri(events_in);
event_port_write_iterator wi(events_out);
@@ -1312,7 +1312,7 @@ public:
*wi++ = event;
}
*outputs_written = (events_in->event_count != 0) ? 2 : 0;
- return true;
+ return *outputs_written != 0 ? 1 : 0;
}
static void message_connect_port(LV2_Handle instance, uint32_t port, void* data)
{
--
calf audio plugins packaging
More information about the pkg-multimedia-commits
mailing list