aboutsummaryrefslogtreecommitdiffstats
path: root/lv2/lv2plug.in/ns/ext/worker/worker.ttl
blob: 5226b0081db2523e18b227c2d8217d7b9fa96ede (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
@prefix dcs:  <http://ontologi.es/doap-changeset#> .
@prefix doap: <http://usefulinc.com/ns/doap#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix lv2:  <http://lv2plug.in/ns/lv2core#> .
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix work: <http://lv2plug.in/ns/ext/worker#> .
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .

<http://lv2plug.in/ns/ext/worker>
	a lv2:Specification ,
		lv2:Feature ;
	rdfs:seeAlso <worker.h> ,
		<../../meta/meta.ttl> ;
	doap:name "LV2 Worker" ;
	doap:shortdesc "Support for a non-realtime plugin worker method." ;
	doap:created "2012-03-22" ;
	doap:developer <http://drobilla.net/drobilla#me> ;
	doap:release [
		doap:revision "1.0" ;
		doap:created "2012-04-17" ;
		doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
		dcs:blame <http://drobilla.net/drobilla#me> ;
		dcs:changeset [
			dcs:item [
				rdfs:label "Initial release."
			]
		]
	] ;
	lv2:documentation """
<p>This extension allows plugins to have a non-realtime worker method, with
thread sychronisation and communication issues handled by the host.  This
allows plugins to perform non-realtime actions (such as loading files) using a
simple and portable API without having to worry about the complexities of
multi-threading.</p>

<p>Because the worker thread is implemented by the host, many plugins can share
the same thread and communication buffers, which reduces bloat and fixed
per-plugin buffer size limitations.  The host has the power to implement
threads in a suitable way, while plugins are simpler and thus less
error-prone.</p>

<p>This interface is designed to gracefully handle single-threaded synchronous
execution, in which case the host may simply run all work immediately.  This
makes it possible for the same plugin code to work with sample accuracy for
offline rendering, or in real-time with non-real-time work taking place in a
separate thread.</p>
""" .

work:interface
	a lv2:ExtensionData ;
	lv2:documentation """
<p>The interface provided by the plugin to implement a worker.  To implement
this extension, the plugin must return a valid LV2_Worker_Interface from
LV2_Descriptor::extension_data() when it is called with URI
LV2_WORKER__interface.</p>

<p>The plugin data file should describe this like so:</p>
<pre class="turtle-code">
@prefix work: &lt;http://lv2plug.in/ns/ext/worker#&gt; .

&lt;plugin&gt;
    a lv2:Plugin ;
    lv2:extensionData work:interface .
</pre>
""" .

work:schedule
	a lv2:Feature ;
	lv2:documentation """
<p>A feature which provides functions for use by the plugin to implement a
worker method.  To support this feature, the host must pass an LV2_Feature to
LV2_Descriptor::instantiate() with URI LV2_WORKER__schedule and data pointed to
an instance of LV2_Worker_Schedule.</p>
""" .