From 984193c0f86ac3c413bc2646c2601fa9ba49f9af Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 9 Feb 2007 01:02:29 +0000 Subject: LV2 spec updates. git-svn-id: http://svn.drobilla.net/lad/slv2@292 a436a847-0d15-0410-975c-d299462d15a1 --- data/lv2.ttl | 44 +++++++++++++++++++++++++++----------------- slv2/lv2.h | 19 ++++++++++--------- 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 ; - rdfs:seeAlso + foaf:homepage ; + rdfs:seeAlso ] , [ 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. * -- cgit v1.2.1