1@prefix bufsz: <http://lv2plug.in/ns/ext/buf-size#> .
2@prefix dcs: <http://ontologi.es/doap-changeset#> .
3@prefix doap: <http://usefulinc.com/ns/doap#> .
4@prefix foaf: <http://xmlns.com/foaf/0.1/> .
5@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
6@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
7
8<http://lv2plug.in/ns/ext/buf-size>
9	a doap:Project ;
10	doap:name "LV2 Buf Size" ;
11	doap:shortdesc "Access to, and restrictions on, buffer sizes." ;
12	doap:created "2012-08-07" ;
13	doap:developer <http://drobilla.net/drobilla#me> ;
14	doap:release [
15		doap:revision "1.4" ;
16		doap:created "2015-09-18" ;
17		doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ;
18		dcs:blame <http://drobilla.net/drobilla#me> ;
19		dcs:changeset [
20			dcs:item [
21				rdfs:label "Add bufsz:nominalBlockLength option."
22			] , [
23				rdfs:label "Add bufsz:coarseBlockLength feature."
24			]
25		]
26	] , [
27		doap:revision "1.2" ;
28		doap:created "2012-12-21" ;
29		doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ;
30		dcs:blame <http://drobilla.net/drobilla#me> ;
31		dcs:changeset [
32			dcs:item [
33				rdfs:label "Fix typo in bufsz:sequenceSize label."
34			]
35		]
36	] , [
37		doap:revision "1.0" ;
38		doap:created "2012-10-14" ;
39		doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
40		dcs:blame <http://drobilla.net/drobilla#me> ;
41		dcs:changeset [
42			dcs:item [
43				rdfs:label "Initial release."
44			]
45		]
46	] ;
47	lv2:documentation """
48
49This extension defines a facility for plugins to get information about the
50block length (the sample_count parameter of LV2_Descriptor::run) and port
51buffer sizes, as well as several features which can be used to restrict the
52block length.
53
54This extension defines features and properties but has no special purpose
55API of its own.  The host provides all the relevant information to the plugin
56as [options](options.html).
57
58To require restrictions on the block length, plugins can require additional
59features: bufsz:boundedBlockLength, bufsz:powerOf2BlockLength, and
60bufsz:fixedBlockLength.  These features are data-only, that is they merely
61indicate a restriction and do not carry any data or API.
62
63"""^^lv2:Markdown .
64
65bufsz:boundedBlockLength
66	lv2:documentation """
67
68A feature that indicates the host will provide both the bufsz:minBlockLength
69and bufsz:maxBlockLength options to the plugin.  Plugins that copy data from
70audio inputs can require this feature to ensure they know how much space is
71required for auxiliary buffers.  Note the minimum may be zero, this feature is
72mainly useful to ensure a maximum is available.
73
74All hosts SHOULD support this feature, since it is simple to support and
75necessary for any plugins that may need to copy the input.
76
77"""^^lv2:Markdown .
78
79bufsz:fixedBlockLength
80	lv2:documentation """
81
82A feature that indicates the host will always call LV2_Descriptor::run() with
83the same value for sample_count.  This length MUST be provided as the value of
84both the bufsz:minBlockLength and bufsz:maxBlockLength options.
85
86Note that requiring this feature may severely limit the number of hosts capable
87of running the plugin.
88
89"""^^lv2:Markdown .
90
91bufsz:powerOf2BlockLength
92	lv2:documentation """
93
94A feature that indicates the host will always call LV2_Descriptor::run() with a
95power of two sample_count.  Note that this feature does not guarantee the value
96is the same each call, to guarantee a fixed power of two block length plugins
97must require both this feature and bufsz:fixedBlockLength.
98
99Note that requiring this feature may severely limit the number of hosts capable
100of running the plugin.
101
102"""^^lv2:Markdown .
103
104bufsz:coarseBlockLength
105	lv2:documentation """
106
107A feature that indicates the plugin prefers coarse, regular block lengths.  For
108example, plugins that do not implement sample-accurate control use this feature
109to indicate that the host should not split the run cycle because controls have
110changed.
111
112Note that this feature is merely a hint, and does not guarantee a fixed block
113length.  The run cycle may be split for other reasons, and the blocksize itself
114may change anytime.
115
116"""^^lv2:Markdown .
117
118bufsz:maxBlockLength
119	lv2:documentation """
120
121The maximum block length the host will ever request the plugin to process at
122once, that is, the maximum `sample_count` parameter that will ever be passed to
123LV2_Descriptor::run().
124
125"""^^lv2:Markdown .
126
127bufsz:minBlockLength
128	lv2:documentation """
129
130The minimum block length the host will ever request the plugin to process at
131once, that is, the minimum `sample_count` parameter that will ever be passed to
132LV2_Descriptor::run().
133
134"""^^lv2:Markdown .
135
136bufsz:nominalBlockLength
137	lv2:documentation """
138
139The typical block length the host will request the plugin to process at once,
140that is, the typical `sample_count` parameter that will be passed to
141LV2_Descriptor::run().  This will usually be equivalent, or close to, the
142maximum block length, but there are no strong guarantees about this value
143whatsoever.  Plugins may use this length for optimization purposes, but MUST
144NOT assume the host will always process blocks of this length.  In particular,
145the host MAY process longer blocks.
146
147"""^^lv2:Markdown .
148
149bufsz:sequenceSize
150	lv2:documentation """
151
152This should be provided as an option by hosts that support event ports
153(including but not limited to MIDI), so plugins have the ability to allocate
154auxiliary buffers large enough to copy the input.
155
156"""^^lv2:Markdown .
157
158