aboutsummaryrefslogtreecommitdiffstats
path: root/ns/ext/resize-port
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-11-20 23:08:57 +0000
committerDavid Robillard <d@drobilla.net>2011-11-20 23:08:57 +0000
commit725d4a404b838da6b67d9da66228a1125bddef57 (patch)
treea1daab3d767c85b1b67ff3a9eb60d54721b2e5fc /ns/ext/resize-port
parent5ae0165d6d0420e95e22c1451e319b9e83398c28 (diff)
downloadlv2-725d4a404b838da6b67d9da66228a1125bddef57.tar.xz
Lay out repository structure to match include and URI structure.
Treat lv2core like all the other specifications in gendoc.py.
Diffstat (limited to 'ns/ext/resize-port')
l---------ns/ext/resize-port/ext.pc.in1
-rw-r--r--ns/ext/resize-port/manifest.ttl9
-rw-r--r--ns/ext/resize-port/resize-port.h57
-rw-r--r--ns/ext/resize-port/resize-port.ttl80
l---------ns/ext/resize-port/waf1
l---------ns/ext/resize-port/wscript1
6 files changed, 149 insertions, 0 deletions
diff --git a/ns/ext/resize-port/ext.pc.in b/ns/ext/resize-port/ext.pc.in
new file mode 120000
index 0000000..1cdad2a
--- /dev/null
+++ b/ns/ext/resize-port/ext.pc.in
@@ -0,0 +1 @@
+../../../ext.pc.in \ No newline at end of file
diff --git a/ns/ext/resize-port/manifest.ttl b/ns/ext/resize-port/manifest.ttl
new file mode 100644
index 0000000..37d1b42
--- /dev/null
+++ b/ns/ext/resize-port/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/resize-port>
+ a lv2:Specification ;
+ lv2:minorVersion 0 ;
+ lv2:microVersion 1 ;
+ rdfs:seeAlso <resize-port.ttl> .
+
diff --git a/ns/ext/resize-port/resize-port.h b/ns/ext/resize-port/resize-port.h
new file mode 100644
index 0000000..7f014a3
--- /dev/null
+++ b/ns/ext/resize-port/resize-port.h
@@ -0,0 +1,57 @@
+/* LV2 Resize Port Extension
+ * Copyright (C) 2007-2009 David Robillard <http://drobilla.net>
+ *
+ * This header is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This header is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef LV2_RESIZE_PORT_H
+#define LV2_RESIZE_PORT_H
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#define LV2_RESIZE_PORT_URI "http://lv2plug.in/ns/ext/resize-port"
+
+typedef void* LV2_Resize_Port_Feature_Data;
+
+typedef struct {
+
+ LV2_Resize_Port_Feature_Data data;
+
+ /** Resize a port buffer to at least @a size bytes.
+ *
+ * This function MAY return false, in which case the port buffer was
+ * not resized and the port is still connected to the same location.
+ * Plugins MUST gracefully handle this situation.
+ *
+ * This function MUST NOT be called from any context other than
+ * the context associated with the port of the given index.
+ *
+ * The host MUST preserve the contents of the port buffer when
+ * resizing.
+ *
+ * Plugins MAY resize a port many times in a single run callback.
+ * Hosts SHOULD make this an inexpensive as possible (i.e. plugins
+ * can liberally use this function in a similar way to realloc).
+ */
+ bool (*resize_port)(LV2_Resize_Port_Feature_Data data,
+ uint32_t index,
+ size_t size);
+
+} LV2_Resize_Port_Feature;
+
+#endif /* LV2_RESIZE_PORT_H */
+
diff --git a/ns/ext/resize-port/resize-port.ttl b/ns/ext/resize-port/resize-port.ttl
new file mode 100644
index 0000000..baa1f7f
--- /dev/null
+++ b/ns/ext/resize-port/resize-port.ttl
@@ -0,0 +1,80 @@
+# LV2 Contexts Extension
+#
+# Allows for an LV2 plugin to have several independent contexts, each with its
+# own run callback and associated ports.
+#
+# Copyright (C) 2007 David Robillard
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+
+@prefix rsz: <http://lv2plug.in/ns/ext/resize-port#> .
+@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 xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+<http://lv2plug.in/ns/ext/resize-port>
+ a lv2:Specification ;
+ a lv2:Feature ;
+ doap:name "LV2 Resize Port Extension" ;
+ doap:shortdesc "Dynamically sized LV2 port buffers." ;
+ lv2:documentation """
+<p>An extension that allows LV2 plugins to request a resize of an output port.</p>
+
+<p>Any host which supports this extension must pass an LV2_Feature to
+the plugin's instantiate method with URI http://lv2plug.in/ns/ext/resize-port
+and a pointer to a LV2_Resize_Port_Feature structure (see
+<a href="resize-port.h">resize-port.h</a> for details). This structure
+provides a resize_port function which plugins may use to resize output
+port buffers as necessary.</p>
+
+<p>This extension also defines several predicates useful for describing the
+amount of space required for a particular port buffer.</p>
+""" .
+
+rsz:asLargeAs a rdf:Property ;
+ rdfs:domain lv2:Port ;
+ rdfs:range lv2:Symbol ;
+ rdfs:label "as large as" ;
+ rdfs:comment """
+Indicates that a port requires at least as much buffer space as the port
+with the given symbol on the same plugin instance. This may be used for
+any ports, but is generally most useful to indicate an output port must
+be at least as large as some input port (because it will copy from it).
+If a port is asLargeAs several ports, it is asLargeAs the largest such port
+(not the sum of those ports' sizes).
+
+The host guarantees that whenever an ObjectPort's run method is called,
+any output O that is obj:asLargeAs an input I is connected to a buffer large
+enough to copy I, or NULL if the port is lv2:connectionOptional.
+""" .
+
+rsz:minimumSize a rdf:Property ;
+ rdfs:domain lv2:Port ;
+ rdfs:range lv2:Symbol ;
+ rdfs:label "minimum size" ;
+ rdfs:comment """
+Indicates that a port requires a buffer at least this large, in bytes.
+Any host that supports the resize-port feature MUST connect any port with a
+minimumSize specified to a buffer at least as large as the value given for
+this property. Any host, especially those that do NOT support dynamic port
+resizing, SHOULD do so or reduced functionality may result.
+""" .
diff --git a/ns/ext/resize-port/waf b/ns/ext/resize-port/waf
new file mode 120000
index 0000000..917d5c5
--- /dev/null
+++ b/ns/ext/resize-port/waf
@@ -0,0 +1 @@
+../../../waf \ No newline at end of file
diff --git a/ns/ext/resize-port/wscript b/ns/ext/resize-port/wscript
new file mode 120000
index 0000000..cf8cbae
--- /dev/null
+++ b/ns/ext/resize-port/wscript
@@ -0,0 +1 @@
+../../../ext.wscript \ No newline at end of file