aboutsummaryrefslogtreecommitdiffstats
path: root/lv2/buf-size
diff options
context:
space:
mode:
Diffstat (limited to 'lv2/buf-size')
-rw-r--r--lv2/buf-size/buf-size.h44
-rw-r--r--lv2/buf-size/buf-size.ttl129
-rw-r--r--lv2/buf-size/lv2-buf-size.doap.ttl44
-rw-r--r--lv2/buf-size/manifest.ttl9
4 files changed, 226 insertions, 0 deletions
diff --git a/lv2/buf-size/buf-size.h b/lv2/buf-size/buf-size.h
new file mode 100644
index 0000000..900f8fa
--- /dev/null
+++ b/lv2/buf-size/buf-size.h
@@ -0,0 +1,44 @@
+/*
+ Copyright 2007-2016 David Robillard <http://drobilla.net>
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#ifndef LV2_BUF_SIZE_H
+#define LV2_BUF_SIZE_H
+
+/**
+ @defgroup buf-size Buffer Size
+
+ Access to, and restrictions on, buffer sizes; see
+ <http://lv2plug.in/ns/ext/buf-size> for details.
+
+ @{
+*/
+
+#define LV2_BUF_SIZE_URI "http://lv2plug.in/ns/ext/buf-size" ///< http://lv2plug.in/ns/ext/buf-size
+#define LV2_BUF_SIZE_PREFIX LV2_BUF_SIZE_URI "#" ///< http://lv2plug.in/ns/ext/buf-size#
+
+#define LV2_BUF_SIZE__boundedBlockLength LV2_BUF_SIZE_PREFIX "boundedBlockLength" ///< http://lv2plug.in/ns/ext/buf-size#boundedBlockLength
+#define LV2_BUF_SIZE__fixedBlockLength LV2_BUF_SIZE_PREFIX "fixedBlockLength" ///< http://lv2plug.in/ns/ext/buf-size#fixedBlockLength
+#define LV2_BUF_SIZE__maxBlockLength LV2_BUF_SIZE_PREFIX "maxBlockLength" ///< http://lv2plug.in/ns/ext/buf-size#maxBlockLength
+#define LV2_BUF_SIZE__minBlockLength LV2_BUF_SIZE_PREFIX "minBlockLength" ///< http://lv2plug.in/ns/ext/buf-size#minBlockLength
+#define LV2_BUF_SIZE__nominalBlockLength LV2_BUF_SIZE_PREFIX "nominalBlockLength" ///< http://lv2plug.in/ns/ext/buf-size#nominalBlockLength
+#define LV2_BUF_SIZE__powerOf2BlockLength LV2_BUF_SIZE_PREFIX "powerOf2BlockLength" ///< http://lv2plug.in/ns/ext/buf-size#powerOf2BlockLength
+#define LV2_BUF_SIZE__sequenceSize LV2_BUF_SIZE_PREFIX "sequenceSize" ///< http://lv2plug.in/ns/ext/buf-size#sequenceSize
+
+/**
+ @}
+*/
+
+#endif /* LV2_BUF_SIZE_H */
diff --git a/lv2/buf-size/buf-size.ttl b/lv2/buf-size/buf-size.ttl
new file mode 100644
index 0000000..f8a9d60
--- /dev/null
+++ b/lv2/buf-size/buf-size.ttl
@@ -0,0 +1,129 @@
+@prefix bufsz: <http://lv2plug.in/ns/ext/buf-size#> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix opts: <http://lv2plug.in/ns/ext/options#> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://lv2plug.in/ns/ext/buf-size>
+ a lv2:Specification ;
+ rdfs:seeAlso <buf-size.h> ,
+ <lv2-buf-size.doap.ttl> ;
+ lv2:documentation """
+<p>This extension defines a facility for plugins to get information about the
+block length (the sample_count parameter of LV2_Descriptor::run) and
+port buffer sizes, as well as several features which can be used to restrict
+the block length.</p>
+
+<p>This extension defines features and properties but has no special purpose
+API of its own. The host provides all the relevant information to the plugin
+as <a href="../options/options.html#options">options</a>.</p>
+
+<p>To require restrictions on the block length, plugins can require additional
+features: bufsz:boundedBlockLength, bufsz:powerOf2BlockLength, and
+bufsz:fixedBlockLength. These features are data-only, that is they merely
+indicate a restriction and do not carry any data or API.</p>
+""" .
+
+bufsz:boundedBlockLength
+ a lv2:Feature ;
+ lv2:documentation """
+<p>A feature that indicates the host will provide both the bufsz:minBlockLength
+and bufsz:maxBlockLength options to the plugin. Plugins that copy data from
+audio inputs can require this feature to ensure they know how much space is
+required for auxiliary buffers. Note the minimum may be zero, this feature is
+mainly useful to ensure a maximum is available.</p>
+
+<p>All hosts SHOULD support this feature, since it is simple to support and
+necessary for any plugins that may need to copy the input.</p>
+""" .
+
+bufsz:fixedBlockLength
+ a lv2:Feature ;
+ lv2:documentation """
+<p>A feature that indicates the host will always call LV2_Descriptor::run()
+with the same value for sample_count. This length MUST be provided as the
+value of both the bufsz:minBlockLength and bufsz:maxBlockLength options.</p>
+
+<p>Note that requiring this feature may severely limit the number of hosts
+capable of running the plugin.</p>
+""" .
+
+bufsz:powerOf2BlockLength
+ a lv2:Feature ;
+ lv2:documentation """
+<p>A feature that indicates the host will always call LV2_Descriptor::run()
+with a power of two sample_count. Note that this feature does not guarantee
+the value is the same each call, to guarantee a fixed power of two block length
+plugins must require both this feature and bufsz:fixedBlockLength.</p>
+
+<p>Note that requiring this feature may severely limit the number of hosts
+capable of running the plugin.</p>
+""" .
+
+bufsz:coarseBlockLength
+ a lv2:Feature ;
+ rdfs:label "coarse block length" ;
+ lv2:documentation """
+<p>A feature that indicates the plugin prefers coarse, regular block lengths.
+For example, plugins that do not implement sample-accurate control use this
+feature to indicate that the host should not split the run cycle because
+controls have changed.</p>
+
+<p>Note that this feature is merely a hint, and does not guarantee a fixed
+block length. The run cycle may be split for other reasons, and the blocksize
+itself may change anytime.</p>
+""" .
+
+bufsz:maxBlockLength
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ opts:Option ;
+ rdfs:label "maximum block length" ;
+ rdfs:range xsd:nonNegativeInteger ;
+ lv2:documentation """
+<p>The maximum block length the host will ever request the plugin to process at
+once, that is, the maximum <code>sample_count</code> parameter that will ever
+be passed to LV2_Descriptor::run().</p>
+""" .
+
+bufsz:minBlockLength
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ opts:Option ;
+ rdfs:label "minimum block length" ;
+ rdfs:range xsd:nonNegativeInteger ;
+ lv2:documentation """
+<p>The minimum block length the host will ever request the plugin to process at
+once, that is, the minimum <code>sample_count</code> parameter that will ever
+be passed to LV2_Descriptor::run().</p>
+""" .
+
+bufsz:nominalBlockLength
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ opts:Option ;
+ rdfs:label "nominal block length" ;
+ rdfs:range xsd:nonNegativeInteger ;
+ lv2:documentation """
+<p>The typical block length the host will request the plugin to process at
+once, that is, the typical <code>sample_count</code> parameter that will
+be passed to LV2_Descriptor::run(). This will usually be equivalent, or close
+to, the maximum block length, but there are no strong guarantees about this
+value whatsoever. Plugins may use this length for optimization purposes, but
+MUST NOT assume the host will always process blocks of this length. In
+particular, the host MAY process longer blocks.</p>
+""" .
+
+bufsz:sequenceSize
+ a rdf:Property ,
+ owl:DatatypeProperty ,
+ opts:Option ;
+ rdfs:label "sequence size" ;
+ rdfs:range xsd:nonNegativeInteger ;
+ lv2:documentation """
+<p>The maximum size of a sequence, in bytes. This should be provided as an
+option by hosts that support event ports (including but not limited to MIDI),
+so plugins have the ability to allocate auxiliary buffers large enough to copy
+the input.</p> """ .
diff --git a/lv2/buf-size/lv2-buf-size.doap.ttl b/lv2/buf-size/lv2-buf-size.doap.ttl
new file mode 100644
index 0000000..bc6ffe9
--- /dev/null
+++ b/lv2/buf-size/lv2-buf-size.doap.ttl
@@ -0,0 +1,44 @@
+@prefix dcs: <http://ontologi.es/doap-changeset#> .
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+<http://lv2plug.in/ns/ext/buf-size>
+ a doap:Project ;
+ doap:name "LV2 Buf Size" ;
+ doap:shortdesc "Access to, and restrictions on, buffer sizes." ;
+ doap:created "2012-08-07" ;
+ doap:developer <http://drobilla.net/drobilla#me> ;
+ doap:release [
+ doap:revision "1.4" ;
+ doap:created "2015-09-18" ;
+ doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ;
+ dcs:blame <http://drobilla.net/drobilla#me> ;
+ dcs:changeset [
+ dcs:item [
+ rdfs:label "Add bufsz:nominalBlockLength option."
+ ] , [
+ rdfs:label "Add bufsz:coarseBlockLength feature."
+ ]
+ ]
+ ] , [
+ doap:revision "1.2" ;
+ doap:created "2012-12-21" ;
+ doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ;
+ dcs:blame <http://drobilla.net/drobilla#me> ;
+ dcs:changeset [
+ dcs:item [
+ rdfs:label "Fix typo in bufsz:sequenceSize label."
+ ]
+ ]
+ ] , [
+ doap:revision "1.0" ;
+ doap:created "2012-10-14" ;
+ doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
+ dcs:blame <http://drobilla.net/drobilla#me> ;
+ dcs:changeset [
+ dcs:item [
+ rdfs:label "Initial release."
+ ]
+ ]
+ ] .
diff --git a/lv2/buf-size/manifest.ttl b/lv2/buf-size/manifest.ttl
new file mode 100644
index 0000000..aeccc99
--- /dev/null
+++ b/lv2/buf-size/manifest.ttl
@@ -0,0 +1,9 @@
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+<http://lv2plug.in/ns/ext/buf-size>
+ a lv2:Specification ;
+ lv2:minorVersion 1 ;
+ lv2:microVersion 4 ;
+ rdfs:seeAlso <buf-size.ttl> .
+