summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-02-09 01:02:29 +0000
committerDavid Robillard <d@drobilla.net>2007-02-09 01:02:29 +0000
commit984193c0f86ac3c413bc2646c2601fa9ba49f9af (patch)
treeec55100879b79c0ca9ec9129a6e93ce89bece940
parent200565b81542d1b0fde1a657b807646733f2508c (diff)
downloadlilv-984193c0f86ac3c413bc2646c2601fa9ba49f9af.tar.gz
lilv-984193c0f86ac3c413bc2646c2601fa9ba49f9af.tar.bz2
lilv-984193c0f86ac3c413bc2646c2601fa9ba49f9af.zip
LV2 spec updates.
git-svn-id: http://svn.drobilla.net/lad/slv2@292 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r--data/lv2.ttl44
-rw-r--r--slv2/lv2.h19
2 files changed, 37 insertions, 26 deletions
diff --git a/data/lv2.ttl b/data/lv2.ttl
index 7c2d06f..fcea5b1 100644
--- a/data/lv2.ttl
+++ b/data/lv2.ttl
@@ -47,8 +47,8 @@
doap:maintainer [
a foaf:Person ;
foaf:name "Steve Harris" ;
- foaf:homepage <http://inanna.ecs.soton.ac.uk> ;
- rdfs:seeAlso <http://inanna.ecs.soton.ac.uk/swh.xrdf>
+ foaf:homepage <http://plugin.org.uk/> ;
+ rdfs:seeAlso <http://plugin.org.uk/swh.xrdf>
] , [
a foaf:Person ;
foaf:name "Dave Robillard" ;
@@ -99,7 +99,11 @@ type of the port (e.g. :AudioPort).
Hosts that do not support a specific port class MUST NOT instantiate the
plugin, unless that port has the connectionOptional hint set (in which case
-the host can simply "connect" that port to NULL).
+the host can simply "connect" that port to NULL). If a host is interested
+in plugins to insert in a certain signal path (e.g. stereo audio), it SHOULD
+consider all the classes of a port to determine which ports are most suitable
+for connection (e.g. by ignoring ports with additional classes the host does
+not recognize).
""" .
:InputPort a rdfs:Class ;
@@ -131,8 +135,8 @@ to the 32bit IEEE-754 floating point specification.
rdfs:subClassOf :Port ;
rdfs:comment """
Ports of this type will be connected to an array of length SampleCount
-conforming to the 32bit IEEE-754 floating point specification,
-representing an audio waveform (i.e. suitable for speaker playback). """ .
+conforming to the 32bit IEEE-754 floating point specification.
+""" .
@@ -357,7 +361,24 @@ socket) and so its output must not be cached or subject to significant latency,
and calls to the run method should be done in rapid succession.
""" .
-:hardRTCapable a :PluginProperty ;
+:inPlaceBroken a :PluginProperty ;
+ rdfs:label "in-place broken" ;
+ rdfs:comment """
+Indicates that the plugin may cease to work correctly if the host elects to use
+the same data location for both input and output. Plugins that will fail to
+work correctly if ANY input buffer is set to the same location as ANY output
+buffer (with connect_port()) MUST set this property. Doing so should be
+avoided as enabling this flag makes it impossible for hosts to use the plugin
+to process audio "in-place".
+""" .
+
+
+
+########################
+# Standard PluginHints #
+########################
+
+:hardRTCapable a :PluginHint ;
rdfs:label "Hard realtime capable" ;
rdfs:comment """
Indicates that the plugin is capable of running not only in a conventional host
@@ -386,17 +407,6 @@ satisfy all of the following:
approximately constant amount of time to execute a connect_port() call.
""" .
-:inplaceBroken a :PluginProperty ;
- rdfs:label "in-place broken" ;
- rdfs:comment """
-Indicates that the plugin may cease to work correctly if the host elects to use
-the same data location for both input and output. Plugins that will fail to
-work correctly if ANY input buffer is set to the same location as ANY output
-buffer (with connect_port()) MUST set this property. Doing so should be
-avoided as enabling this flag makes it impossible for hosts to use the plugin
-to process audio "in-place".
-""" .
-
######################
diff --git a/slv2/lv2.h b/slv2/lv2.h
index 00b2173..61d79c3 100644
--- a/slv2/lv2.h
+++ b/slv2/lv2.h
@@ -201,19 +201,20 @@ typedef struct _LV2_Descriptor {
/** Function pointer that connects a port on a plugin instance to a memory
* location where the block of data for the port will be read/written.
*
- * The data location is expected to be an array of void * (typically
- * float *) for audio ports or a single void * value for control
- * ports. Memory issues are managed by the host. The plugin must
- * read/write the data at these locations every time run() is called
- * and the data present at the time of this connection call MUST NOT
- * be considered meaningful.
+ * The data location is expected to be of the type defined in the
+ * plugin's data file (e.g. an array of float for an lv2:AudioPort).
+ * Memory issues are managed by the host. The plugin must read/write
+ * the data at these locations every time run() is called, data
+ * present at the time of this connection call MUST NOT be
+ * considered meaningful.
*
* connect_port() may be called more than once for a plugin instance
* to allow the host to change the buffers that the plugin is reading
* or writing. These calls may be made before or after activate()
- * or deactivate() calls.
+ * or deactivate() calls. Note that there may be realtime constraints
+ * on connect_port (see lv2:hardRTCapable in lv2.ttl).
*
- * connect_port() must be called at least once for each port before
+ * connect_port() MUST be called at least once for each port before
* run() is called. The plugin must pay careful attention to the block
* size passed to the run function as the block allocated may only just
* be large enough to contain the block of data (typically samples), and
@@ -221,7 +222,7 @@ typedef struct _LV2_Descriptor {
*
* Plugin writers should be aware that the host may elect to use the
* same buffer for more than one port and even use the same buffer for
- * both input and output (see lv2:inplaceBroken in lv2.ttl).
+ * both input and output (see lv2:inPlaceBroken in lv2.ttl).
* However, overlapped buffers or use of a single buffer for both
* audio and control data may result in unexpected behaviour.
*