From ed78bbe5ba12be1f9bcc736f14c51da6b4f639f3 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 8 Feb 2012 04:56:24 +0000 Subject: Rearrange tree so top level can be used as an include path for standard style LV2 includes. --- lv2/ns/ext/atom/atom-helpers.h | 310 --------------- lv2/ns/ext/atom/atom-test.c | 304 --------------- lv2/ns/ext/atom/atom.h | 203 ---------- lv2/ns/ext/atom/atom.ttl | 462 ---------------------- lv2/ns/ext/atom/ext.pc.in | 1 - lv2/ns/ext/atom/forge.h | 445 --------------------- lv2/ns/ext/atom/manifest.ttl | 9 - lv2/ns/ext/atom/waf | 1 - lv2/ns/ext/atom/wscript | 1 - lv2/ns/ext/contexts/contexts.h | 82 ---- lv2/ns/ext/contexts/contexts.ttl | 134 ------- lv2/ns/ext/contexts/ext.pc.in | 1 - lv2/ns/ext/contexts/manifest.ttl | 9 - lv2/ns/ext/contexts/test.c | 67 ---- lv2/ns/ext/contexts/waf | 1 - lv2/ns/ext/contexts/wscript | 1 - lv2/ns/ext/cv-port/cv-port.ttl | 77 ---- lv2/ns/ext/cv-port/ext.pc.in | 1 - lv2/ns/ext/cv-port/manifest.ttl | 9 - lv2/ns/ext/cv-port/waf | 1 - lv2/ns/ext/cv-port/wscript | 1 - lv2/ns/ext/data-access/data-access.h | 56 --- lv2/ns/ext/data-access/data-access.ttl | 82 ---- lv2/ns/ext/data-access/ext.pc.in | 1 - lv2/ns/ext/data-access/manifest.ttl | 9 - lv2/ns/ext/data-access/waf | 1 - lv2/ns/ext/data-access/wscript | 1 - lv2/ns/ext/dynmanifest/dynmanifest.h | 144 ------- lv2/ns/ext/dynmanifest/dynmanifest.ttl | 107 ------ lv2/ns/ext/dynmanifest/ext.pc.in | 1 - lv2/ns/ext/dynmanifest/lv2-dynmanifest.doap.ttl | 43 --- lv2/ns/ext/dynmanifest/manifest.ttl | 9 - lv2/ns/ext/dynmanifest/waf | 1 - lv2/ns/ext/dynmanifest/wscript | 1 - lv2/ns/ext/event/event-helpers.h | 246 ------------ lv2/ns/ext/event/event.h | 281 -------------- lv2/ns/ext/event/event.ttl | 224 ----------- lv2/ns/ext/event/ext.pc.in | 1 - lv2/ns/ext/event/manifest.ttl | 9 - lv2/ns/ext/event/waf | 1 - lv2/ns/ext/event/wscript | 1 - lv2/ns/ext/host-info/ext.pc.in | 1 - lv2/ns/ext/host-info/host-info.ttl | 117 ------ lv2/ns/ext/host-info/manifest.ttl | 9 - lv2/ns/ext/host-info/waf | 1 - lv2/ns/ext/host-info/wscript | 1 - lv2/ns/ext/instance-access/ext.pc.in | 1 - lv2/ns/ext/instance-access/instance-access.h | 38 -- lv2/ns/ext/instance-access/instance-access.ttl | 80 ---- lv2/ns/ext/instance-access/manifest.ttl | 9 - lv2/ns/ext/instance-access/waf | 1 - lv2/ns/ext/instance-access/wscript | 1 - lv2/ns/ext/log/ext.pc.in | 1 - lv2/ns/ext/log/log.h | 91 ----- lv2/ns/ext/log/log.ttl | 74 ---- lv2/ns/ext/log/manifest.ttl | 9 - lv2/ns/ext/log/waf | 1 - lv2/ns/ext/log/wscript | 1 - lv2/ns/ext/midi/ext.pc.in | 1 - lv2/ns/ext/midi/manifest.ttl | 9 - lv2/ns/ext/midi/midi.ttl | 115 ------ lv2/ns/ext/midi/waf | 1 - lv2/ns/ext/midi/wscript | 1 - lv2/ns/ext/osc/ext.pc.in | 1 - lv2/ns/ext/osc/lv2_osc.c | 238 ------------ lv2/ns/ext/osc/lv2_osc_print.c | 66 ---- lv2/ns/ext/osc/lv2_osc_test.c | 55 --- lv2/ns/ext/osc/manifest.ttl | 9 - lv2/ns/ext/osc/osc-print.h | 42 -- lv2/ns/ext/osc/osc.h | 119 ------ lv2/ns/ext/osc/osc.ttl | 39 -- lv2/ns/ext/osc/waf | 1 - lv2/ns/ext/osc/wscript | 1 - lv2/ns/ext/parameter/ext.pc.in | 1 - lv2/ns/ext/parameter/manifest.ttl | 9 - lv2/ns/ext/parameter/parameter.ttl | 111 ------ lv2/ns/ext/parameter/waf | 1 - lv2/ns/ext/parameter/wscript | 1 - lv2/ns/ext/port-groups/ext.pc.in | 1 - lv2/ns/ext/port-groups/manifest.ttl | 9 - lv2/ns/ext/port-groups/port-groups.ttl | 490 ------------------------ lv2/ns/ext/port-groups/waf | 1 - lv2/ns/ext/port-groups/wscript | 1 - lv2/ns/ext/port-props/ext.pc.in | 1 - lv2/ns/ext/port-props/manifest.ttl | 8 - lv2/ns/ext/port-props/port-props.ttl | 217 ----------- lv2/ns/ext/port-props/waf | 1 - lv2/ns/ext/port-props/wscript | 1 - lv2/ns/ext/presets/ext.pc.in | 1 - lv2/ns/ext/presets/manifest.ttl | 9 - lv2/ns/ext/presets/presets.ttl | 148 ------- lv2/ns/ext/presets/waf | 1 - lv2/ns/ext/presets/wscript | 1 - lv2/ns/ext/pui/ext.pc.in | 1 - lv2/ns/ext/pui/manifest.ttl | 8 - lv2/ns/ext/pui/pui.h | 374 ------------------ lv2/ns/ext/pui/pui.ttl | 284 -------------- lv2/ns/ext/pui/waf | 1 - lv2/ns/ext/pui/wscript | 1 - lv2/ns/ext/reference/ext.pc.in | 1 - lv2/ns/ext/reference/manifest.ttl | 9 - lv2/ns/ext/reference/reference.h | 161 -------- lv2/ns/ext/reference/reference.ttl | 82 ---- lv2/ns/ext/reference/waf | 1 - lv2/ns/ext/reference/wscript | 1 - lv2/ns/ext/resize-port/ext.pc.in | 1 - lv2/ns/ext/resize-port/manifest.ttl | 9 - lv2/ns/ext/resize-port/resize-port.h | 57 --- lv2/ns/ext/resize-port/resize-port.ttl | 80 ---- lv2/ns/ext/resize-port/waf | 1 - lv2/ns/ext/resize-port/wscript | 1 - lv2/ns/ext/state/ext.pc.in | 1 - lv2/ns/ext/state/manifest.ttl | 8 - lv2/ns/ext/state/state.h | 359 ----------------- lv2/ns/ext/state/state.ttl | 359 ----------------- lv2/ns/ext/state/waf | 1 - lv2/ns/ext/state/wscript | 1 - lv2/ns/ext/string-port/ext.pc.in | 1 - lv2/ns/ext/string-port/manifest.ttl | 8 - lv2/ns/ext/string-port/string-port.h | 58 --- lv2/ns/ext/string-port/string-port.ttl | 105 ----- lv2/ns/ext/string-port/waf | 1 - lv2/ns/ext/string-port/wscript | 1 - lv2/ns/ext/time/ext.pc.in | 1 - lv2/ns/ext/time/manifest.ttl | 9 - lv2/ns/ext/time/time.h | 131 ------- lv2/ns/ext/time/time.ttl | 57 --- lv2/ns/ext/time/waf | 1 - lv2/ns/ext/time/wscript | 1 - lv2/ns/ext/ui-resize/ext.pc.in | 1 - lv2/ns/ext/ui-resize/manifest.ttl | 9 - lv2/ns/ext/ui-resize/ui-resize.h | 58 --- lv2/ns/ext/ui-resize/ui-resize.ttl | 43 --- lv2/ns/ext/ui-resize/waf | 1 - lv2/ns/ext/ui-resize/wscript | 1 - lv2/ns/ext/uri-map/ext.pc.in | 1 - lv2/ns/ext/uri-map/manifest.ttl | 8 - lv2/ns/ext/uri-map/uri-map.h | 92 ----- lv2/ns/ext/uri-map/uri-map.ttl | 93 ----- lv2/ns/ext/uri-map/waf | 1 - lv2/ns/ext/uri-map/wscript | 1 - lv2/ns/ext/urid/ext.pc.in | 1 - lv2/ns/ext/urid/manifest.ttl | 9 - lv2/ns/ext/urid/urid.h | 115 ------ lv2/ns/ext/urid/urid.ttl | 81 ---- lv2/ns/ext/urid/waf | 1 - lv2/ns/ext/urid/wscript | 1 - 147 files changed, 8179 deletions(-) delete mode 100644 lv2/ns/ext/atom/atom-helpers.h delete mode 100644 lv2/ns/ext/atom/atom-test.c delete mode 100644 lv2/ns/ext/atom/atom.h delete mode 100644 lv2/ns/ext/atom/atom.ttl delete mode 120000 lv2/ns/ext/atom/ext.pc.in delete mode 100644 lv2/ns/ext/atom/forge.h delete mode 100644 lv2/ns/ext/atom/manifest.ttl delete mode 120000 lv2/ns/ext/atom/waf delete mode 120000 lv2/ns/ext/atom/wscript delete mode 100644 lv2/ns/ext/contexts/contexts.h delete mode 100644 lv2/ns/ext/contexts/contexts.ttl delete mode 120000 lv2/ns/ext/contexts/ext.pc.in delete mode 100644 lv2/ns/ext/contexts/manifest.ttl delete mode 100644 lv2/ns/ext/contexts/test.c delete mode 120000 lv2/ns/ext/contexts/waf delete mode 120000 lv2/ns/ext/contexts/wscript delete mode 100644 lv2/ns/ext/cv-port/cv-port.ttl delete mode 120000 lv2/ns/ext/cv-port/ext.pc.in delete mode 100644 lv2/ns/ext/cv-port/manifest.ttl delete mode 120000 lv2/ns/ext/cv-port/waf delete mode 120000 lv2/ns/ext/cv-port/wscript delete mode 100644 lv2/ns/ext/data-access/data-access.h delete mode 100644 lv2/ns/ext/data-access/data-access.ttl delete mode 120000 lv2/ns/ext/data-access/ext.pc.in delete mode 100644 lv2/ns/ext/data-access/manifest.ttl delete mode 120000 lv2/ns/ext/data-access/waf delete mode 120000 lv2/ns/ext/data-access/wscript delete mode 100644 lv2/ns/ext/dynmanifest/dynmanifest.h delete mode 100644 lv2/ns/ext/dynmanifest/dynmanifest.ttl delete mode 120000 lv2/ns/ext/dynmanifest/ext.pc.in delete mode 100644 lv2/ns/ext/dynmanifest/lv2-dynmanifest.doap.ttl delete mode 100644 lv2/ns/ext/dynmanifest/manifest.ttl delete mode 120000 lv2/ns/ext/dynmanifest/waf delete mode 120000 lv2/ns/ext/dynmanifest/wscript delete mode 100644 lv2/ns/ext/event/event-helpers.h delete mode 100644 lv2/ns/ext/event/event.h delete mode 100644 lv2/ns/ext/event/event.ttl delete mode 120000 lv2/ns/ext/event/ext.pc.in delete mode 100644 lv2/ns/ext/event/manifest.ttl delete mode 120000 lv2/ns/ext/event/waf delete mode 120000 lv2/ns/ext/event/wscript delete mode 120000 lv2/ns/ext/host-info/ext.pc.in delete mode 100644 lv2/ns/ext/host-info/host-info.ttl delete mode 100644 lv2/ns/ext/host-info/manifest.ttl delete mode 120000 lv2/ns/ext/host-info/waf delete mode 120000 lv2/ns/ext/host-info/wscript delete mode 120000 lv2/ns/ext/instance-access/ext.pc.in delete mode 100644 lv2/ns/ext/instance-access/instance-access.h delete mode 100644 lv2/ns/ext/instance-access/instance-access.ttl delete mode 100644 lv2/ns/ext/instance-access/manifest.ttl delete mode 120000 lv2/ns/ext/instance-access/waf delete mode 120000 lv2/ns/ext/instance-access/wscript delete mode 120000 lv2/ns/ext/log/ext.pc.in delete mode 100644 lv2/ns/ext/log/log.h delete mode 100644 lv2/ns/ext/log/log.ttl delete mode 100644 lv2/ns/ext/log/manifest.ttl delete mode 120000 lv2/ns/ext/log/waf delete mode 120000 lv2/ns/ext/log/wscript delete mode 120000 lv2/ns/ext/midi/ext.pc.in delete mode 100644 lv2/ns/ext/midi/manifest.ttl delete mode 100644 lv2/ns/ext/midi/midi.ttl delete mode 120000 lv2/ns/ext/midi/waf delete mode 120000 lv2/ns/ext/midi/wscript delete mode 120000 lv2/ns/ext/osc/ext.pc.in delete mode 100644 lv2/ns/ext/osc/lv2_osc.c delete mode 100644 lv2/ns/ext/osc/lv2_osc_print.c delete mode 100644 lv2/ns/ext/osc/lv2_osc_test.c delete mode 100644 lv2/ns/ext/osc/manifest.ttl delete mode 100644 lv2/ns/ext/osc/osc-print.h delete mode 100644 lv2/ns/ext/osc/osc.h delete mode 100644 lv2/ns/ext/osc/osc.ttl delete mode 120000 lv2/ns/ext/osc/waf delete mode 120000 lv2/ns/ext/osc/wscript delete mode 120000 lv2/ns/ext/parameter/ext.pc.in delete mode 100644 lv2/ns/ext/parameter/manifest.ttl delete mode 100644 lv2/ns/ext/parameter/parameter.ttl delete mode 120000 lv2/ns/ext/parameter/waf delete mode 120000 lv2/ns/ext/parameter/wscript delete mode 120000 lv2/ns/ext/port-groups/ext.pc.in delete mode 100644 lv2/ns/ext/port-groups/manifest.ttl delete mode 100644 lv2/ns/ext/port-groups/port-groups.ttl delete mode 120000 lv2/ns/ext/port-groups/waf delete mode 120000 lv2/ns/ext/port-groups/wscript delete mode 120000 lv2/ns/ext/port-props/ext.pc.in delete mode 100644 lv2/ns/ext/port-props/manifest.ttl delete mode 100644 lv2/ns/ext/port-props/port-props.ttl delete mode 120000 lv2/ns/ext/port-props/waf delete mode 120000 lv2/ns/ext/port-props/wscript delete mode 120000 lv2/ns/ext/presets/ext.pc.in delete mode 100644 lv2/ns/ext/presets/manifest.ttl delete mode 100644 lv2/ns/ext/presets/presets.ttl delete mode 120000 lv2/ns/ext/presets/waf delete mode 120000 lv2/ns/ext/presets/wscript delete mode 120000 lv2/ns/ext/pui/ext.pc.in delete mode 100644 lv2/ns/ext/pui/manifest.ttl delete mode 100644 lv2/ns/ext/pui/pui.h delete mode 100644 lv2/ns/ext/pui/pui.ttl delete mode 120000 lv2/ns/ext/pui/waf delete mode 120000 lv2/ns/ext/pui/wscript delete mode 120000 lv2/ns/ext/reference/ext.pc.in delete mode 100644 lv2/ns/ext/reference/manifest.ttl delete mode 100644 lv2/ns/ext/reference/reference.h delete mode 100644 lv2/ns/ext/reference/reference.ttl delete mode 120000 lv2/ns/ext/reference/waf delete mode 120000 lv2/ns/ext/reference/wscript delete mode 120000 lv2/ns/ext/resize-port/ext.pc.in delete mode 100644 lv2/ns/ext/resize-port/manifest.ttl delete mode 100644 lv2/ns/ext/resize-port/resize-port.h delete mode 100644 lv2/ns/ext/resize-port/resize-port.ttl delete mode 120000 lv2/ns/ext/resize-port/waf delete mode 120000 lv2/ns/ext/resize-port/wscript delete mode 120000 lv2/ns/ext/state/ext.pc.in delete mode 100644 lv2/ns/ext/state/manifest.ttl delete mode 100644 lv2/ns/ext/state/state.h delete mode 100644 lv2/ns/ext/state/state.ttl delete mode 120000 lv2/ns/ext/state/waf delete mode 120000 lv2/ns/ext/state/wscript delete mode 120000 lv2/ns/ext/string-port/ext.pc.in delete mode 100644 lv2/ns/ext/string-port/manifest.ttl delete mode 100644 lv2/ns/ext/string-port/string-port.h delete mode 100644 lv2/ns/ext/string-port/string-port.ttl delete mode 120000 lv2/ns/ext/string-port/waf delete mode 120000 lv2/ns/ext/string-port/wscript delete mode 120000 lv2/ns/ext/time/ext.pc.in delete mode 100644 lv2/ns/ext/time/manifest.ttl delete mode 100644 lv2/ns/ext/time/time.h delete mode 100644 lv2/ns/ext/time/time.ttl delete mode 120000 lv2/ns/ext/time/waf delete mode 120000 lv2/ns/ext/time/wscript delete mode 120000 lv2/ns/ext/ui-resize/ext.pc.in delete mode 100644 lv2/ns/ext/ui-resize/manifest.ttl delete mode 100644 lv2/ns/ext/ui-resize/ui-resize.h delete mode 100644 lv2/ns/ext/ui-resize/ui-resize.ttl delete mode 120000 lv2/ns/ext/ui-resize/waf delete mode 120000 lv2/ns/ext/ui-resize/wscript delete mode 120000 lv2/ns/ext/uri-map/ext.pc.in delete mode 100644 lv2/ns/ext/uri-map/manifest.ttl delete mode 100644 lv2/ns/ext/uri-map/uri-map.h delete mode 100644 lv2/ns/ext/uri-map/uri-map.ttl delete mode 120000 lv2/ns/ext/uri-map/waf delete mode 120000 lv2/ns/ext/uri-map/wscript delete mode 120000 lv2/ns/ext/urid/ext.pc.in delete mode 100644 lv2/ns/ext/urid/manifest.ttl delete mode 100644 lv2/ns/ext/urid/urid.h delete mode 100644 lv2/ns/ext/urid/urid.ttl delete mode 120000 lv2/ns/ext/urid/waf delete mode 120000 lv2/ns/ext/urid/wscript (limited to 'lv2/ns/ext') diff --git a/lv2/ns/ext/atom/atom-helpers.h b/lv2/ns/ext/atom/atom-helpers.h deleted file mode 100644 index 6fff74b..0000000 --- a/lv2/ns/ext/atom/atom-helpers.h +++ /dev/null @@ -1,310 +0,0 @@ -/* - Copyright 2008-2012 David Robillard - - 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. -*/ - -/** - @file atom-helpers.h Helper functions for the LV2 Atom extension. - - Note these functions are all static inline, do not take their address. - - This header is non-normative, it is provided for convenience. -*/ - -#ifndef LV2_ATOM_HELPERS_H -#define LV2_ATOM_HELPERS_H - -#include -#include -#include - -#include "lv2/lv2plug.in/ns/ext/atom/atom.h" - -#ifdef __cplusplus -extern "C" { -#else -# include -#endif - -/** Pad a size to 64 bits. */ -static inline uint32_t -lv2_atom_pad_size(uint32_t size) -{ - return (size + 7) & (~7); -} - -/** Return true iff @p atom is null. */ -static inline bool -lv2_atom_is_null(const LV2_Atom* atom) -{ - return !atom || (atom->type == 0 && atom->size == 0); -} - -/** Return true iff @p a is equal to @p b. */ -static inline bool -lv2_atom_equals(const LV2_Atom* a, const LV2_Atom* b) -{ - return (a == b) || ( - (a->type == b->type) && - (a->size == b->size) && - !memcmp(LV2_ATOM_CONTENTS(LV2_Atom, a), - LV2_ATOM_CONTENTS(LV2_Atom, b), - a->size)); -} - -/** - @name Sequence Iterator - @{ -*/ - -/** An iterator over the elements of an LV2_Atom_Sequence. */ -typedef LV2_Atom_Event* LV2_Atom_Sequence_Iter; - -/** Get an iterator pointing to the first element in @p tup. */ -static inline LV2_Atom_Sequence_Iter -lv2_sequence_begin(const LV2_Atom_Sequence* seq) -{ - return (LV2_Atom_Sequence_Iter)(LV2_ATOM_CONTENTS(LV2_Atom_Sequence, seq)); -} - -/** Return true iff @p i has reached the end of @p tup. */ -static inline bool -lv2_sequence_is_end(const LV2_Atom_Sequence* seq, LV2_Atom_Sequence_Iter i) -{ - return (uint8_t*)i >= ((uint8_t*)seq + sizeof(LV2_Atom) + seq->atom.size); -} - -/** Return an iterator to the element following @p i. */ -static inline LV2_Atom_Sequence_Iter -lv2_sequence_iter_next(const LV2_Atom_Sequence_Iter i) -{ - return (LV2_Atom_Sequence_Iter)((uint8_t*)i - + sizeof(LV2_Atom_Event) - + lv2_atom_pad_size(i->body.size)); -} - -/** Return the element pointed to by @p i. */ -static inline LV2_Atom_Event* -lv2_sequence_iter_get(LV2_Atom_Sequence_Iter i) -{ - return (LV2_Atom_Event*)i; -} - -/** - A macro for iterating over all events in a Sequence. - @param sequence The sequence to iterate over - @param iter The name of the iterator - - This macro is used similarly to a for loop (which it expands to), e.g.: - @code - LV2_SEQUENCE_FOREACH(sequence, i) { - LV2_Atom_Event* ev = lv2_sequence_iter_get(i); - // Do something with ev here... - } - @endcode -*/ -#define LV2_SEQUENCE_FOREACH(sequence, iter) \ - for (LV2_Atom_Sequence_Iter (iter) = lv2_sequence_begin(sequence); \ - !lv2_sequence_is_end(sequence, (iter)); \ - (iter) = lv2_sequence_iter_next(iter)) - -/** - @} - @name Tuple Iterator - @{ -*/ - -/** An iterator over the elements of an LV2_Atom_Tuple. */ -typedef LV2_Atom* LV2_Atom_Tuple_Iter; - -/** Get an iterator pointing to the first element in @p tup. */ -static inline LV2_Atom_Tuple_Iter -lv2_tuple_begin(const LV2_Atom_Tuple* tup) -{ - return (LV2_Atom_Tuple_Iter)(LV2_ATOM_BODY(tup)); -} - -/** Return true iff @p i has reached the end of @p tup. */ -static inline bool -lv2_tuple_is_end(const LV2_Atom_Tuple* tup, LV2_Atom_Tuple_Iter i) -{ - return (uint8_t*)i >= ((uint8_t*)tup + sizeof(LV2_Atom) + tup->atom.size); -} - -/** Return an iterator to the element following @p i. */ -static inline LV2_Atom_Tuple_Iter -lv2_tuple_iter_next(const LV2_Atom_Tuple_Iter i) -{ - return (LV2_Atom_Tuple_Iter)( - (uint8_t*)i + sizeof(LV2_Atom) + lv2_atom_pad_size(i->size)); -} - -/** Return the element pointed to by @p i. */ -static inline LV2_Atom* -lv2_tuple_iter_get(LV2_Atom_Tuple_Iter i) -{ - return (LV2_Atom*)i; -} - -/** - A macro for iterating over all properties of a Tuple. - @param tuple The tuple to iterate over - @param iter The name of the iterator - - This macro is used similarly to a for loop (which it expands to), e.g.: - @code - LV2_TUPLE_FOREACH(tuple, i) { - LV2_Atom_Property* prop = lv2_tuple_iter_get(i); - // Do something with prop here... - } - @endcode -*/ -#define LV2_TUPLE_FOREACH(tuple, iter) \ - for (LV2_Atom_Tuple_Iter (iter) = lv2_tuple_begin(tuple); \ - !lv2_tuple_is_end(tuple, (iter)); \ - (iter) = lv2_tuple_iter_next(iter)) - -/** - @} - @name Object Iterator - @{ -*/ - -/** An iterator over the properties of an LV2_Atom_Object. */ -typedef LV2_Atom_Property_Body* LV2_Atom_Object_Iter; - -/** Get an iterator pointing to the first property in @p obj. */ -static inline LV2_Atom_Object_Iter -lv2_object_begin(const LV2_Atom_Object* obj) -{ - return (LV2_Atom_Object_Iter)(LV2_ATOM_CONTENTS(LV2_Atom_Object, obj)); -} - -/** Return true iff @p i has reached the end of @p obj. */ -static inline bool -lv2_object_is_end(const LV2_Atom_Object* obj, LV2_Atom_Object_Iter i) -{ - return (uint8_t*)i >= ((uint8_t*)obj + sizeof(LV2_Atom) + obj->atom.size); -} - -/** Return true iff @p l points to the same property as @p r. */ -static inline bool -lv2_object_iter_equals(const LV2_Atom_Object_Iter l, - const LV2_Atom_Object_Iter r) -{ - return l == r; -} - -/** Return an iterator to the property following @p i. */ -static inline LV2_Atom_Object_Iter -lv2_object_iter_next(const LV2_Atom_Object_Iter i) -{ - const LV2_Atom* const value = (LV2_Atom*)((uint8_t*)i + sizeof(i)); - return (LV2_Atom_Object_Iter)((uint8_t*)i - + sizeof(LV2_Atom_Property_Body) - + lv2_atom_pad_size(value->size)); -} - -/** Return the property pointed to by @p i. */ -static inline LV2_Atom_Property_Body* -lv2_object_iter_get(LV2_Atom_Object_Iter i) -{ - return (LV2_Atom_Property_Body*)i; -} - -/** - A macro for iterating over all properties of an Object. - @param object The object to iterate over - @param iter The name of the iterator - - This macro is used similarly to a for loop (which it expands to), e.g.: - @code - LV2_OBJECT_FOREACH(object, i) { - LV2_Atom_Property* prop = lv2_object_iter_get(i); - // Do something with prop here... - } - @endcode -*/ -#define LV2_OBJECT_FOREACH(object, iter) \ - for (LV2_Atom_Object_Iter (iter) = lv2_object_begin(object); \ - !lv2_object_is_end(object, (iter)); \ - (iter) = lv2_object_iter_next(iter)) - -/** - @} - @name Object Query - @{ -*/ - -/** A single entry in an Object query. */ -typedef struct { - uint32_t key; /**< Key to query (input set by user) */ - const LV2_Atom** value; /**< Found value (output set by query function) */ -} LV2_Atom_Object_Query; - -static const LV2_Atom_Object_Query LV2_OBJECT_QUERY_END = { 0, NULL }; - -/** - Get an object's values for various keys. - - The value pointer of each item in @p query will be set to the location of - the corresponding value in @p object. Every value pointer in @p query MUST - be initialised to NULL. This function reads @p object in a single linear - sweep. By allocating @p query on the stack, objects can be "queried" - quickly without allocating any memory. This function is realtime safe. - - For example: - @code - const LV2_Atom* name = NULL; - const LV2_Atom* age = NULL; - LV2_Atom_Object_Query q[] = { - { urids.eg_name, &name }, - { urids.eg_age, &age }, - LV2_OBJECT_QUERY_END - }; - lv2_object_get(obj, q); - // name and age are now set to the appropriate values in obj, or NULL. - @endcode -*/ -static inline int -lv2_object_get(const LV2_Atom_Object* object, LV2_Atom_Object_Query* query) -{ - int matches = 0; - int n_queries = 0; - - /* Count number of query keys so we can short-circuit when done */ - for (LV2_Atom_Object_Query* q = query; q->key; ++q) { - ++n_queries; - } - - LV2_OBJECT_FOREACH(object, o) { - const LV2_Atom_Property_Body* prop = lv2_object_iter_get(o); - for (LV2_Atom_Object_Query* q = query; q->key; ++q) { - if (q->key == prop->key && !*q->value) { - *q->value = &prop->value; - if (++matches == n_queries) { - return matches; - } - break; - } - } - } - return matches; -} - -/** - @} -*/ - -#endif /* LV2_ATOM_HELPERS_H */ diff --git a/lv2/ns/ext/atom/atom-test.c b/lv2/ns/ext/atom/atom-test.c deleted file mode 100644 index 1a88d7d..0000000 --- a/lv2/ns/ext/atom/atom-test.c +++ /dev/null @@ -1,304 +0,0 @@ -/* - Copyright 2012 David Robillard - - 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. -*/ - -#include -#include -#include - -#include "lv2/lv2plug.in/ns/ext/atom/atom-helpers.h" -#include "lv2/lv2plug.in/ns/ext/atom/forge.h" - -char** uris = NULL; -size_t n_uris = 0; - -char* -copy_string(const char* str) -{ - const size_t len = strlen(str); - char* dup = (char*)malloc(len + 1); - memcpy(dup, str, len + 1); - return dup; -} - -LV2_URID -urid_map(LV2_URID_Map_Handle handle, const char* uri) -{ - for (size_t i = 0; i < n_uris; ++i) { - if (!strcmp(uris[i], uri)) { - return i + 1; - } - } - - uris = (char**)realloc(uris, ++n_uris * sizeof(char*)); - uris[n_uris - 1] = copy_string(uri); - return n_uris; -} - -int -test_fail(const char* fmt, ...) -{ - va_list args; - va_start(args, fmt); - fprintf(stderr, "error: "); - vfprintf(stderr, fmt, args); - va_end(args); - return 1; -} - -int -main() -{ - LV2_URID_Map map = { NULL, urid_map }; - LV2_Atom_Forge forge; - lv2_atom_forge_init(&forge, &map); - - LV2_URID eg_Object = urid_map(NULL, "http://example.org/Object"); - LV2_URID eg_one = urid_map(NULL, "http://example.org/one"); - LV2_URID eg_two = urid_map(NULL, "http://example.org/two"); - LV2_URID eg_three = urid_map(NULL, "http://example.org/three"); - LV2_URID eg_four = urid_map(NULL, "http://example.org/four"); - LV2_URID eg_true = urid_map(NULL, "http://example.org/true"); - LV2_URID eg_false = urid_map(NULL, "http://example.org/false"); - LV2_URID eg_uri = urid_map(NULL, "http://example.org/uri"); - LV2_URID eg_string = urid_map(NULL, "http://example.org/string"); - LV2_URID eg_literal = urid_map(NULL, "http://example.org/literal"); - LV2_URID eg_tuple = urid_map(NULL, "http://example.org/tuple"); - LV2_URID eg_vector = urid_map(NULL, "http://example.org/vector"); - LV2_URID eg_seq = urid_map(NULL, "http://example.org/seq"); - -#define BUF_SIZE 1024 -#define NUM_PROPS 12 - - uint8_t buf[BUF_SIZE]; - lv2_atom_forge_set_buffer(&forge, buf, BUF_SIZE); - - LV2_Atom* obj = (LV2_Atom*)lv2_atom_forge_object( - &forge, NULL, 0, eg_Object); - - // eg_one = (Int32)1 - lv2_atom_forge_property_head(&forge, obj, eg_one, 0); - LV2_Atom_Int32* one = lv2_atom_forge_int32(&forge, obj, 1); - if (one->value != 1) { - return test_fail("%d != 1\n", one->value); - } - - // eg_two = (Int64)2 - lv2_atom_forge_property_head(&forge, obj, eg_two, 0); - LV2_Atom_Int64* two = lv2_atom_forge_int64(&forge, obj, 2); - if (two->value != 2) { - return test_fail("%ld != 2\n", two->value); - } - - // eg_three = (Float)3.0 - lv2_atom_forge_property_head(&forge, obj, eg_three, 0); - LV2_Atom_Float* three = lv2_atom_forge_float(&forge, obj, 3.0f); - if (three->value != 3) { - return test_fail("%f != 3\n", three->value); - } - - // eg_four = (Double)4.0 - lv2_atom_forge_property_head(&forge, obj, eg_four, 0); - LV2_Atom_Double* four = lv2_atom_forge_double(&forge, obj, 4.0); - if (four->value != 4) { - return test_fail("%ld != 4\n", four->value); - } - - // eg_true = (Bool)1 - lv2_atom_forge_property_head(&forge, obj, eg_true, 0); - LV2_Atom_Bool* t = lv2_atom_forge_bool(&forge, obj, true); - if (t->value != 1) { - return test_fail("%ld != 1 (true)\n", t->value); - } - - // eg_false = (Bool)0 - lv2_atom_forge_property_head(&forge, obj, eg_false, 0); - LV2_Atom_Bool* f = lv2_atom_forge_bool(&forge, obj, false); - if (f->value != 0) { - return test_fail("%ld != 0 (false)\n", f->value); - } - - // eg_uri = (URID)"http://example.org/value" - LV2_URID eg_value = urid_map(NULL, "http://example.org/value"); - lv2_atom_forge_property_head(&forge, obj, eg_uri, 0); - LV2_Atom_URID* uri = lv2_atom_forge_urid(&forge, obj, eg_value); - if (uri->id != eg_value) { - return test_fail("%u != %u\n", uri->id, eg_value); - } - - // eg_string = (String)"hello" - lv2_atom_forge_property_head(&forge, obj, eg_string, 0); - LV2_Atom_String* string = lv2_atom_forge_string( - &forge, obj, (const uint8_t*)"hello", strlen("hello")); - uint8_t* body = (uint8_t*)LV2_ATOM_BODY(string); - if (strcmp((const char*)body, "hello")) { - return test_fail("%s != \"hello\"\n", (const char*)body); - } - - // eg_literal = (Literal)"hello"@fr - lv2_atom_forge_property_head(&forge, obj, eg_literal, 0); - LV2_Atom_Literal* literal = lv2_atom_forge_literal( - &forge, obj, (const uint8_t*)"bonjour", strlen("bonjour"), - 0, urid_map(NULL, "http://lexvo.org/id/term/fr")); - body = (uint8_t*)LV2_ATOM_CONTENTS(LV2_Atom_Literal, literal); - if (strcmp((const char*)body, "bonjour")) { - return test_fail("%s != \"bonjour\"\n", (const char*)body); - } - - // eg_tuple = "foo",true - lv2_atom_forge_property_head(&forge, obj, eg_tuple, 0); - LV2_Atom_Tuple* tuple = lv2_atom_forge_tuple(&forge, obj); - LV2_Atom_String* tup0 = lv2_atom_forge_string( - &forge, (LV2_Atom*)tuple, (const uint8_t*)"foo", strlen("foo")); - LV2_Atom_Bool* tup1 = lv2_atom_forge_bool(&forge, (LV2_Atom*)tuple, true); - obj->size += ((LV2_Atom*)tuple)->size; - LV2_Atom_Tuple_Iter i = lv2_tuple_begin(tuple); - if (lv2_tuple_is_end(tuple, i)) { - return test_fail("Tuple iterator is empty\n"); - } - LV2_Atom* tup0i = (LV2_Atom*)lv2_tuple_iter_get(i); - if (!lv2_atom_equals((LV2_Atom*)tup0, tup0i)) { - return test_fail("Corrupt tuple element 0\n"); - } - i = lv2_tuple_iter_next(i); - if (lv2_tuple_is_end(tuple, i)) { - return test_fail("Premature end of tuple iterator\n"); - } - LV2_Atom* tup1i = lv2_tuple_iter_get(i); - if (!lv2_atom_equals((LV2_Atom*)tup1, tup1i)) { - return test_fail("Corrupt tuple element 1\n"); - } - i = lv2_tuple_iter_next(i); - if (!lv2_tuple_is_end(tuple, i)) { - return test_fail("Tuple iter is not at end\n"); - } - - // eg_vector = (Vector)1,2,3,4 - lv2_atom_forge_property_head(&forge, obj, eg_vector, 0); - int32_t elems[] = { 1, 2, 3, 4 }; - LV2_Atom_Vector* vector = lv2_atom_forge_vector( - &forge, obj, 4, forge.Int32, sizeof(int32_t), elems); - void* vec_body = LV2_ATOM_CONTENTS(LV2_Atom_Vector, vector); - if (memcmp(elems, vec_body, sizeof(elems))) { - return test_fail("Corrupt vector\n"); - } - - // eg_seq = (Sequence)1, 2 - lv2_atom_forge_property_head(&forge, obj, eg_seq, 0); - LV2_Atom_Sequence* seq = lv2_atom_forge_sequence_head(&forge, obj, 0); - lv2_atom_forge_audio_time(&forge, (LV2_Atom*)seq, 0, 0); - lv2_atom_forge_int32(&forge, (LV2_Atom*)seq, 1); - lv2_atom_forge_audio_time(&forge, (LV2_Atom*)seq, 1, 0); - lv2_atom_forge_int32(&forge, (LV2_Atom*)seq, 2); - obj->size += seq->atom.size - sizeof(LV2_Atom); - - // Test equality - LV2_Atom_Int32 itwo = { { forge.Int32, sizeof(int32_t) }, 2 }; - if (lv2_atom_equals((LV2_Atom*)one, (LV2_Atom*)two)) { - return test_fail("1 == 2.0\n"); - } else if (lv2_atom_equals((LV2_Atom*)one, (LV2_Atom*)&itwo)) { - return test_fail("1 == 2\n"); - } - - unsigned n_events = 0; - LV2_SEQUENCE_FOREACH(seq, i) { - LV2_Atom_Event* ev = lv2_sequence_iter_get(i); - if (ev->time.audio.frames != n_events - || ev->time.audio.subframes != 0) { - return test_fail("Corrupt event %u has bad time\n", n_events); - } else if (ev->body.type != forge.Int32) { - return test_fail("Corrupt event %u has bad type\n", n_events); - } else if (((LV2_Atom_Int32*)&ev->body)->value != (int)n_events + 1) { - return test_fail("Event %u != %d\n", n_events, n_events + 1); - } - ++n_events; - } - - unsigned n_props = 0; - LV2_OBJECT_FOREACH((LV2_Atom_Object*)obj, i) { - LV2_Atom_Property_Body* prop = lv2_object_iter_get(i); - if (!prop->key) { - return test_fail("Corrupt property %u has no key\n", n_props); - } else if (prop->context) { - return test_fail("Corrupt property %u has context\n", n_props); - } - ++n_props; - } - - if (n_props != NUM_PROPS) { - return test_fail("Corrupt object has %u properties != %u\n", - n_props, NUM_PROPS); - } - - const LV2_Atom* one_match = NULL; - const LV2_Atom* two_match = NULL; - const LV2_Atom* three_match = NULL; - const LV2_Atom* four_match = NULL; - const LV2_Atom* true_match = NULL; - const LV2_Atom* false_match = NULL; - const LV2_Atom* uri_match = NULL; - const LV2_Atom* string_match = NULL; - const LV2_Atom* literal_match = NULL; - const LV2_Atom* tuple_match = NULL; - const LV2_Atom* vector_match = NULL; - const LV2_Atom* seq_match = NULL; - LV2_Atom_Object_Query q[] = { - { eg_one, &one_match }, - { eg_two, &two_match }, - { eg_three, &three_match }, - { eg_four, &four_match }, - { eg_true, &true_match }, - { eg_false, &false_match }, - { eg_uri, &uri_match }, - { eg_string, &string_match }, - { eg_literal, &literal_match }, - { eg_tuple, &tuple_match }, - { eg_vector, &vector_match }, - { eg_seq, &seq_match }, - LV2_OBJECT_QUERY_END - }; - - unsigned matches = lv2_object_get((LV2_Atom_Object*)obj, q); - if (matches != n_props) { - return test_fail("Query failed, %u matches != %u\n", matches, n_props); - } else if (!lv2_atom_equals((LV2_Atom*)one, one_match)) { - return test_fail("Bad match one\n"); - } else if (!lv2_atom_equals((LV2_Atom*)two, two_match)) { - return test_fail("Bad match two\n"); - } else if (!lv2_atom_equals((LV2_Atom*)three, three_match)) { - return test_fail("Bad match three\n"); - } else if (!lv2_atom_equals((LV2_Atom*)four, four_match)) { - return test_fail("Bad match four\n"); - } else if (!lv2_atom_equals((LV2_Atom*)t, true_match)) { - return test_fail("Bad match true\n"); - } else if (!lv2_atom_equals((LV2_Atom*)f, false_match)) { - return test_fail("Bad match false\n"); - } else if (!lv2_atom_equals((LV2_Atom*)uri, uri_match)) { - return test_fail("Bad match URI\n"); - } else if (!lv2_atom_equals((LV2_Atom*)string, string_match)) { - return test_fail("Bad match string\n"); - } else if (!lv2_atom_equals((LV2_Atom*)literal, literal_match)) { - return test_fail("Bad match literal\n"); - } else if (!lv2_atom_equals((LV2_Atom*)tuple, tuple_match)) { - return test_fail("Bad match tuple\n"); - } else if (!lv2_atom_equals((LV2_Atom*)vector, vector_match)) { - return test_fail("Bad match vector\n"); - } else if (!lv2_atom_equals((LV2_Atom*)seq, seq_match)) { - return test_fail("Bad match sequence\n"); - } - - printf("All tests passed.\n"); - return 0; -} diff --git a/lv2/ns/ext/atom/atom.h b/lv2/ns/ext/atom/atom.h deleted file mode 100644 index bea9197..0000000 --- a/lv2/ns/ext/atom/atom.h +++ /dev/null @@ -1,203 +0,0 @@ -/* - Copyright 2008-2012 David Robillard - - 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. -*/ - -/** - @file atom.h C header for the LV2 Atom extension - . - - This header describes the binary layout of various types defined in the - atom extension. -*/ - -#ifndef LV2_ATOM_H -#define LV2_ATOM_H - -#define LV2_ATOM_URI "http://lv2plug.in/ns/ext/atom" - -#define LV2_ATOM_REFERENCE_TYPE 0 - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** This expression will fail to compile if double does not fit in 64 bits. */ -typedef char lv2_atom_assert_double_fits_in_64_bits[ - ((sizeof(double) <= sizeof(uint64_t)) * 2) - 1]; - -/** - Return a pointer to the contents of a variable-sized atom. - @param type The type of the atom, e.g. LV2_Atom_String. - @param atom A variable-sized atom. -*/ -#define LV2_ATOM_CONTENTS(type, atom) \ - ((void*)((uint8_t*)(atom) + sizeof(type))) - -/** Return a pointer to the body of @p atom (just past the LV2_Atom head). */ -#define LV2_ATOM_BODY(atom) LV2_ATOM_CONTENTS(LV2_Atom, atom) - -/** The header of an atom:Atom. */ -typedef struct { - uint32_t type; /**< Type of this atom (mapped URI). */ - uint32_t size; /**< Size in bytes, not including type and size. */ -} LV2_Atom; - -/** An atom:Int32 or atom:Bool. May be cast to LV2_Atom. */ -typedef struct { - LV2_Atom atom; - int32_t value; -} LV2_Atom_Int32; - -/** An atom:Int64. May be cast to LV2_Atom. */ -typedef struct { - LV2_Atom atom; - int64_t value; -} LV2_Atom_Int64; - -/** An atom:Float. May be cast to LV2_Atom. */ -typedef struct { - LV2_Atom atom; - float value; -} LV2_Atom_Float; - -/** An atom:Double. May be cast to LV2_Atom. */ -typedef struct { - LV2_Atom atom; - double value; -} LV2_Atom_Double; - -/** An atom:Bool. May be cast to LV2_Atom. */ -typedef LV2_Atom_Int32 LV2_Atom_Bool; - -/** An atom:URID. May be cast to LV2_Atom. */ -typedef struct { - LV2_Atom atom; /**< Atom header. */ - uint32_t id; /**< URID. */ -} LV2_Atom_URID; - -/** The complete header of an atom:String. */ -typedef struct { - LV2_Atom atom; /**< Atom header. */ - /* Contents (a null-terminated UTF-8 string) follow here. */ -} LV2_Atom_String; - -/** The header of an atom:Literal body. */ -typedef struct { - uint32_t datatype; /**< The ID of the datatype of this literal. */ - uint32_t lang; /**< The ID of the language of this literal. */ -} LV2_Atom_Literal_Head; - -/** The complete header of an atom:Literal. */ -typedef struct { - LV2_Atom atom; /**< Atom header. */ - LV2_Atom_Literal_Head literal; /**< Literal body header. */ - /* Contents (a null-terminated UTF-8 string) follow here. */ -} LV2_Atom_Literal; - -/** The complete header of an atom:Tuple. */ -typedef struct { - LV2_Atom atom; /**< Atom header. */ - /* Contents (a series of complete atoms) follow here. */ -} LV2_Atom_Tuple; - -/** The complete header of an atom:Vector. */ -typedef struct { - LV2_Atom atom; /**< Atom header. */ - uint32_t elem_count; /**< The number of elements in the vector */ - uint32_t elem_type; /**< The type of each element in the vector */ - /* Contents (a series of packed atom bodies) follow here. */ -} LV2_Atom_Vector; - -/** The header of an atom:Property body (e.g. in an atom:Object). */ -typedef struct { - uint32_t key; /**< Key (predicate) (mapped URI). */ - uint32_t context; /**< Context URID (may be, and generally is, 0). */ - LV2_Atom value; /**< Value atom header. */ -} LV2_Atom_Property_Body; - -/** The complete header of an atom:Property. */ -typedef struct { - LV2_Atom atom; /**< Atom header. */ - uint32_t key; /**< Key (predicate) (mapped URI). */ - uint32_t context; /**< Context URID (may be, and generally is, 0). */ - LV2_Atom value; /**< Value atom header. */ - /* Value atom body follows here. */ -} LV2_Atom_Property; - -/** The complete header of an atom:Object. */ -typedef struct { - LV2_Atom atom; /**< Atom header. */ - uint32_t id; /**< URID for atom:Resource, or blank ID for atom:Blank. */ - uint32_t type; /**< Type URID (same as rdf:type, for fast dispatch). */ - /* Contents (a series of property bodies) follow here. */ -} LV2_Atom_Object; - -/** The complete header of an atom:Response. */ -typedef struct { - LV2_Atom atom; /**< Atom header. */ - uint32_t source; /**< ID of message this is a response to (may be 0). */ - uint32_t type; /**< Specific response type URID (may be 0). */ - uint32_t seq; /**< Response sequence number, 0 for end. */ - LV2_Atom body; /**< Body atom header (may be empty). */ - /* Body optionally follows here. */ -} LV2_Atom_Response; - -/** A time stamp in frames. Note this type is NOT an LV2_Atom. */ -typedef struct { - uint32_t frames; /**< Time in frames relative to this block. */ - uint32_t subframes; /**< Fractional time in 1/(2^32)ths of a frame. */ -} LV2_Atom_Audio_Time; - -/** The header of an atom:Event. Note this type is NOT an LV2_Atom. */ -typedef struct { - /** Time stamp. Which type is valid is determined by context. */ - union { - LV2_Atom_Audio_Time audio; /**< Time in audio frames. */ - double beats; /**< Time in beats. */ - } time; - LV2_Atom body; /**< Event body atom header. */ - /* Body atom contents follow here. */ -} LV2_Atom_Event; - -/** - A sequence of events (time-stamped atoms). - - This is used as the contents of an atom:EventPort, but is a generic Atom - type which can be used anywhere. - - The contents of a sequence is a series of LV2_Atom_Event, each aligned - to 64-bits, e.g.: -
-   | Event 1 (size 6)                              | Event 2
-   |       |       |       |       |       |       |       |       |
-   | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
-   |FRAMES |SUBFRMS|TYPE   |SIZE   |DATADATADATAPAD|FRAMES |SUBFRMS|...
-   
-*/ -typedef struct { - LV2_Atom atom; /**< Atom header. */ - uint32_t capacity; /**< Maximum size of contents. */ - uint32_t time_type; /**< URID type of event time stamps. */ - /* Contents (a series of events) follow here. */ -} LV2_Atom_Sequence; - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* LV2_ATOM_H */ diff --git a/lv2/ns/ext/atom/atom.ttl b/lv2/ns/ext/atom/atom.ttl deleted file mode 100644 index 7d534d0..0000000 --- a/lv2/ns/ext/atom/atom.ttl +++ /dev/null @@ -1,462 +0,0 @@ -# LV2 Atom Extension -# Copyright 2007-2012 David Robillard -# -# 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. - -@prefix atom: . -@prefix doap: . -@prefix foaf: . -@prefix lv2: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - a lv2:Specification ; - doap:name "LV2 Atom" ; - doap:shortdesc "A generic value container and several data types." ; - doap:license ; - rdfs:seeAlso , - ; - doap:release [ - doap:revision "0.4" ; - doap:created "2012-02-07" - ] ; - doap:maintainer [ - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - rdfs:seeAlso - ] ; - lv2:documentation """ -

This extension defines a generic container for data, called an Atom, -and several basic Atom types which can be used to express structured data. -Atoms allow LV2 plugins and hosts to communicate, process, serialise, and store -values of any type via a generic mechanism (e.g. ports, files, networks, -ringbuffers, etc.). Atoms are, with one exception, Plain Old Data (POD) which -may safely be copied (e.g. with a simple call to memcpy).

- -

Since Atom communication can be implemented generically, plugins that -understand some type can be used together in a host that does not understand -that type, and plugins (e.g. routers, delays) can process atoms of unknown -type.

- -

Atoms can and should be used anywhere values of various types must be stored -or transmitted. This extension defines port types, atom:ValuePort and -atom:MessagePort, which are connected to an Atom. The atom:Sequence type in -conjunction with atom:MessagePort is intended to replace the LV2 event extension.

- -

The types defined in this extension should be powerful enough to express -almost any structure. Implementers SHOULD build structures out of the types -provided here, rather than define new binary formats (e.g. use atom:Object -rather than a new C struct type). New binary formats are an -implementation burden which harms interoperabilty, and should only be defined -where absolutely necessary.

- -

Implementing this extension requires a facility for mapping URIs to -integers, such as the LV2 URID -extension.

-""" . - -atom:cType - a rdf:Property , - owl:DatatypeProperty ; - rdfs:label "C type" ; - rdfs:domain rdfs:Class ; - rdfs:range xsd:string ; - rdfs:comment """ -The identifier for a C type describing the in-memory representation of -an instance of this class. -""" . - -atom:Atom - a rdfs:Class ; - rdfs:label "Atom" ; - atom:cType "LV2_Atom" ; - lv2:documentation """ -

Abstract base class for all atoms. An LV2_Atom has a 32-bit -type and size followed by a body of size -bytes. Atoms MUST be 64-bit aligned.

- -

All concrete Atom types (subclasses of this class) MUST define a precise -binary layout for their body.

- -

The type field is the URI of an Atom type mapped to an integer. -Implementations SHOULD gracefully ignore, or pass through, atoms with unknown -types.

- -

All atoms are POD by definition except references, which as a special case -have type = 0. An Atom MUST NOT contain a Reference. It is safe -to copy any non-reference Atom with a simple memcpy, even if the -implementation does not understand type. Though this extension -reserves the type 0 for references, the details of reference handling are -currently unspecified. A future revision of this extension, or a different -extension, may define how to use non-POD data and references. Implementations -MUST NOT send references to another implementation unless the receiver is -explicitly known to support references (e.g. by supporting a feature). The -atom with both type and size 0 is -null, which is not considered a Reference.

-""" . - -atom:Bang - a rdfs:Class ; - rdfs:subClassOf atom:Atom ; - rdfs:label "Bang" ; - rdfs:comment "Generic activity or trigger, with no body." . - -atom:Number - a rdfs:Class ; - rdfs:subClassOf atom:Atom ; - rdfs:label "Number" . - -atom:Int32 - a rdfs:Class ; - rdfs:subClassOf atom:Number ; - rdfs:label "Signed 32-bit integer" ; - atom:cType "LV2_Atom_Int32" . - -atom:Int64 - a rdfs:Class ; - rdfs:subClassOf atom:Number ; - rdfs:label "Signed 64-bit integer" ; - atom:cType "LV2_Atom_Int64" . - -atom:Float - a rdfs:Class ; - rdfs:subClassOf atom:Number ; - rdfs:label "32-bit IEEE-754 floating point number" ; - atom:cType "LV2_Atom_Float" . - -atom:Double - a rdfs:Class ; - rdfs:subClassOf atom:Number ; - rdfs:label "64-bit IEEE-754 floating point number" ; - atom:cType "LV2_Atom_Double" . - -atom:Bool - a rdfs:Class ; - rdfs:subClassOf atom:Atom ; - rdfs:label "Boolean" ; - atom:cType "LV2_Atom_Bool" ; - rdfs:comment "An Int32 where 0 is false and any other value is true." . - -atom:String - a rdfs:Class ; - rdfs:subClassOf atom:Atom ; - rdfs:label "String" ; - atom:cType "LV2_Atom_String" ; - lv2:documentation """ -

A UTF-8 encoded string.

- -

The body of an LV2_Atom_String is a C string in UTF-8 encoding, i.e. an -array of bytes (uint8_t) terminated with a NULL byte -('\\0').

- -

This type can be used for free-form strings, but in most cases it is better to -use atom:Literal since this supports a language tag or datatype. Implementations -SHOULD NOT use atom:String unless translating the string does not make sense and -the string has no meaningful datatype.

-""" . - -atom:Literal - a rdfs:Class ; - rdfs:subClassOf atom:Atom ; - rdfs:label "String Literal" ; - atom:cType "LV2_Atom_Literal" ; - lv2:documentation """ -

A UTF-8 encoded string literal, with an optional datatype or language.

- -

This type is compatible with rdf:Literal and is capable of expressing a -string in any language or a value of any type. A Literal has a -datatype and lang followed by string data in UTF-8 -encoding. The length of the string data in bytes is size - -sizeof(LV2_Atom_Literal), including the terminating NULL character. The -lang field SHOULD be a URI of the form -<http://lexvo.org/id/term/LANG> where LANG is an ISO 693-2 or ISO 693-3 language code.

- -

A Literal may have a datatype OR a lang, but never -both.

- -

For example, a Literal can be "Hello" in English:

-
-void set_to_hello_in_english(LV2_Atom_Literal* lit) {
-     lit->atom.type = map(expand("atom:Literal"));
-     lit->atom.size = 14;
-     lit->datatype  = 0;
-     lit->lang      = map("http://lexvo.org/id/term/en");
-     memcpy(LV2_ATOM_CONTENTS(LV2_Atom_Literal, lit),
-            "Hello",
-            sizeof("Hello"));  // Assumes enough space
-}
-
- -

or a Turtle string:

-
-void set_to_turtle_string(LV2_Atom_Literal* lit, const char* ttl) {
-     lit->atom.type = map(expand("atom:Literal"));
-     lit->atom.size = 64;
-     lit->datatype  = map("http://www.w3.org/2008/turtle#turtle");
-     lit->lang      = 0;
-     memcpy(LV2_ATOM_CONTENTS(LV2_Atom_Literal, lit),
-            ttl,
-            strlen(ttl) + 1);  // Assumes enough space
-}
-
-""" . - -atom:URID - a rdfs:Class ; - rdfs:subClassOf atom:Atom ; - rdfs:label "Integer ID mapped from a URI" ; - atom:cType "LV2_Atom_ID" ; - lv2:documentation """ -

An unsigned 32-bit integer mapped from a URI (e.g. with LV2_URID_Map).

-""" . - -atom:Vector - a rdfs:Class ; - rdfs:subClassOf atom:Atom ; - rdfs:label "Vector" ; - atom:cType "LV2_Atom_Vector" ; - lv2:documentation """ -

A homogeneous series of atom bodies with equivalent type and size.

- -

An LV2_Atom_Vector is a 32-bit elem_count and -elem_type followed by elem_count atom bodies of type -elem_type. The element type must be a fixed size atom:Atom type, -i.e. the size of each element is the vector's size / -elem_count.

- -

For example, an atom:Vector containing 42 elements of type atom:Float:

-
-struct VectorOf42Floats {
-    uint32_t type;        // map(expand("atom:Vector"))
-    uint32_t size;        // sizeof(LV2_Atom_Vector) + (42 * sizeof(float);
-    uint32_t elem_count;  // 42
-    uint32_t elem_type;   // map(expand("atom:Float"))
-    float    elems[32];
-};
-
- -

Note that it is possible to construct a valid Atom for each element -of the vector, even by an implementation which does not understand -elem_type.

-""" . - -atom:Tuple - a rdfs:Class ; - rdfs:subClassOf atom:Atom ; - rdfs:label "Tuple" ; - lv2:documentation """ -

A series of Atoms with varying type and size.

- -

The body of a Tuple is simply a series of complete atoms, each aligned to -64 bits.

-""" . - -atom:Property - a rdfs:Class ; - rdfs:subClassOf atom:Atom ; - rdfs:label "Property" ; - atom:cType "LV2_Atom_Property" ; - lv2:documentation """ -

A property of an atom:Object. An LV2_Atom_Property has a URID -key and context, and an Atom value. -This corresponds to an RDF Property, where the key is the predicate -and the value is the object.

- -

The context field can be used to specify a different context -for each property, where this is useful. Otherwise, it may be 0.

-""" . - -atom:Object - a rdfs:Class ; - rdfs:subClassOf atom:Atom ; - rdfs:label "Object" ; - atom:cType "LV2_Atom_Object" ; - lv2:documentation """ -

An Object is an atom with a set of properties. This corresponds to -an RDF Resource, and can be thought of as a dictionary with URID keys.

- -

An LV2_Atom_Object has a uint32_t id and uint32_t -type, followed by a series of atom:Property bodies (without -headers, i.e. LV2_Atom_Property_Body). The LV2_Atom_Object::type field is -semantically equivalent to a property with key rdf:type, but is included in the -structure to allow for fast dispatch.

- -

This is an abstract Atom type, an Object is always either a atom:Resource -or a atom:Blank.

-""" . - -atom:Resource - a rdfs:Class ; - rdfs:subClassOf atom:Object ; - rdfs:label "Resource" ; - atom:cType "LV2_Atom_Object" ; - lv2:documentation """ -

An atom:Object where the id field is a URID, i.e. an Object -with a URI.

-""" . - -atom:Blank - a rdfs:Class ; - rdfs:subClassOf atom:Object ; - rdfs:label "Blank" ; - atom:cType "LV2_Atom_Object" ; - lv2:documentation """ -

An atom:Object where the LV2_Atom_Object::id is a blank node ID (NOT a URI). -The ID of a Blank is valid only within the context the Blank appears in. For -ports this is the context of the associated run() call, i.e. all ports share -the same context so outputs can contain IDs that correspond to IDs of blanks in -the input.

""" . - -atom:Event - a rdfs:Class ; - rdfs:label "Event" ; - atom:cType "LV2_Atom_Event" ; - lv2:documentation """ -

An atom with a time stamp header prepended, typically an element of an -atom:Sequence. Note this is not an Atom type.

-""" . - -atom:Sequence - a rdfs:Class ; - rdfs:subClassOf atom:Atom ; - rdfs:label "Sequence" ; - atom:cType "LV2_Atom_Sequence" ; - lv2:documentation """ -

A sequence of atom:Event, i.e. a series of time-stamped Atoms.

-""" . - -atom:AtomPort - a rdfs:Class ; - rdfs:subClassOf lv2:Port ; - rdfs:label "Atom Port" ; - lv2:documentation """ -

A port which contains an lv2:Atom. Ports of this type will be connected to -a 64-bit aligned LV2_Atom immediately followed by size bytes of -data.

- -

This is an abstract port type with incomplete semantics which can not be -used directly as a port type. Atom ports should be either a atom:ValuePort or -a atom:MessagePort.

- -

Before calling a method on a plugin that writes to an AtomPort output, the -host MUST set the size of the Atom in that output to the amount of available -memory immediately following the Atom header. The plugin MUST write a valid -Atom to that port; leaving it untouched is illegal. If there is no reasonable -value to write to the port, the plugin MUST write null (the Atom with both -type and size 0).

-""" . - -atom:ValuePort - a rdfs:Class ; - rdfs:subClassOf atom:AtomPort ; - rdfs:label "Value Port" ; - lv2:documentation """ - -

An AtomPort that contains a persistent value. A value is -time-independent and may be used numerous times. A ValuePort is pure in -the sense that it may affect output but MUST NOT affect persistent plugin state -in any externally visible way.

- -
    -
  • If a plugin has fixed values for all inputs, all ValuePort outputs are also -fixed regardless of the number of times the plugin is run.
  • - -
  • If a plugin has fixed input values for all ports except a ValuePort, each -value of that port corresponds to a single set of values for all -ValuePort outputs.
  • - -
  • If the plugin saves state other than port values (e.g. using the LV2 State extension), changing only -the value of a ValuePort input MUST NOT change that state. In other words, -value port changes MUST NOT trigger a state change that requires a save.
  • -
- -

Value ports are essentially purely functional ports: if a plugin has only -value ports, that plugin is purely functional. Hosts may elect to cache output -and avoid calling run() if the output is already known according to these -rules.

-""" . - -atom:MessagePort - a rdfs:Class ; - rdfs:subClassOf atom:AtomPort ; - rdfs:label "Message Port" ; - lv2:documentation """ -

An AtomPort that contains transient data which is consumed or -sent. The Atom contained in a MessagePort is time-dependent and only -valid for a single run invocation. Unlike a ValuePort, a MessagePort may be -used to manipulate internal plugin state.

- -

Intuitively, a MessagePort contains a message or event which -is reacted to once (not a value which is computed with any -number of times).

-""" . - -atom:bufferType - a rdf:Property ; - rdfs:domain atom:AtomPort ; - rdfs:label "buffer type" ; - lv2:documentation """ -

Indicates that an AtomPort may be connected to a certain Atom type. A port -MAY support several buffer types. The host MUST NOT connect a port to an Atom -with a type not explicitly listed with this property. The value of this -property MUST be a sub-class of atom:Atom. For example, an input port that is -connected directly to an LV2_Atom_Double value is described like so:

- -
-<plugin>
-    lv2:port [
-        a lv2:InputPort , atom:ValuePort ;
-        atom:bufferType atom:Double ;
-    ] .
-
- -

Note this property only indicates the atom types a port may be directly -connected to, it is not recursive. If a port can be connected to a -collection, use atom:supports to indicate which element types are understood. -If a port supports heterogeneous collections (collections that can contain -several types of elements at once), implementations MUST gracefully handle any -types that are present in the collection, even if those types are not -explicitly supported.

-""" . - -atom:supports - a rdf:Property ; - rdfs:label "supports" ; - lv2:documentation """ -

Indicates that a particular Atom type is supported.

- -

This property is defined loosely, it may be used to indicate that anything -supports an Atom type, wherever that may be useful. It applies -recursively where collections are involved.

- -

In particular, this property can be used to describe which event types are -supported by a port. For example, a port that receives MIDI events is -described like so:

- -
-<plugin>
-    lv2:port [
-        a lv2:InputPort , atom:MessagePort ;
-        atom:bufferType atom:Sequence ;
-        atom:supports midi:MidiEvent ;
-    ] .
-
-""" . diff --git a/lv2/ns/ext/atom/ext.pc.in b/lv2/ns/ext/atom/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/atom/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/atom/forge.h b/lv2/ns/ext/atom/forge.h deleted file mode 100644 index 2790778..0000000 --- a/lv2/ns/ext/atom/forge.h +++ /dev/null @@ -1,445 +0,0 @@ -/* - Copyright 2008-2012 David Robillard - - 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. -*/ - -/** - @file forge.h An API for constructing LV2 atoms. - - This file provides a simple API which can be used to create complex nested - atoms by calling the provided functions to append atoms (or atom headers) in - the correct order. The size of the parent atom is automatically updated, - but the caller must handle this situation if atoms are more deeply nested. - - All output is written to a user-provided buffer. This entire API is - realtime safe and suitable for writing to output port buffers in the run - method. - - Note these functions are all static inline, do not take their address. - - This header is non-normative, it is provided for convenience. -*/ - -#ifndef LV2_ATOM_FORGE_H -#define LV2_ATOM_FORGE_H - -#include -#include - -#include "lv2/lv2plug.in/ns/ext/atom/atom-helpers.h" -#include "lv2/lv2plug.in/ns/ext/atom/atom.h" -#include "lv2/lv2plug.in/ns/ext/urid/urid.h" - -#ifdef __cplusplus -extern "C" { -#else -# include -#endif - -/** - A "forge" for creating atoms by appending to a buffer. -*/ -typedef struct { - uint8_t* buf; - size_t offset; - size_t size; - - LV2_URID Bool; - LV2_URID Double; - LV2_URID Float; - LV2_URID Int32; - LV2_URID Int64; - LV2_URID Literal; - LV2_URID Object; - LV2_URID Property; - LV2_URID Sequence; - LV2_URID String; - LV2_URID Tuple; - LV2_URID URID; - LV2_URID Vector; -} LV2_Atom_Forge; - -/** Set the output buffer where @c forge will write atoms. */ -static inline void -lv2_atom_forge_set_buffer(LV2_Atom_Forge* forge, uint8_t* buf, size_t size) -{ - forge->buf = buf; - forge->size = size; - forge->offset = 0; -} - -/** - Initialise @c forge. - - URIs will be mapped using @c map and stored, a reference to @c map itself is - not held. -*/ -static inline void -lv2_atom_forge_init(LV2_Atom_Forge* forge, LV2_URID_Map* map) -{ - lv2_atom_forge_set_buffer(forge, NULL, 0); - forge->Bool = map->map(map->handle, LV2_ATOM_URI "#Bool"); - forge->Double = map->map(map->handle, LV2_ATOM_URI "#Double"); - forge->Float = map->map(map->handle, LV2_ATOM_URI "#Float"); - forge->Int32 = map->map(map->handle, LV2_ATOM_URI "#Int32"); - forge->Int64 = map->map(map->handle, LV2_ATOM_URI "#Int64"); - forge->Literal = map->map(map->handle, LV2_ATOM_URI "#Literal"); - forge->Object = map->map(map->handle, LV2_ATOM_URI "#Object"); - forge->Property = map->map(map->handle, LV2_ATOM_URI "#Property"); - forge->Sequence = map->map(map->handle, LV2_ATOM_URI "#Sequence"); - forge->String = map->map(map->handle, LV2_ATOM_URI "#String"); - forge->Tuple = map->map(map->handle, LV2_ATOM_URI "#Tuple"); - forge->URID = map->map(map->handle, LV2_ATOM_URI "#URID"); - forge->Vector = map->map(map->handle, LV2_ATOM_URI "#Vector"); -} - -/** - Reserve @c size bytes in the output buffer (used internally). - @return The start of the reserved memory, or NULL if out of space. -*/ -static inline uint8_t* -lv2_atom_forge_reserve(LV2_Atom_Forge* forge, - LV2_Atom* parent, - uint32_t size) -{ - uint8_t* const out = forge->buf + forge->offset; - const uint32_t padded_size = lv2_atom_pad_size(size); - if (forge->offset + padded_size > forge->size) { - return NULL; - } - if (parent) { - parent->size += padded_size; - } - forge->offset += padded_size; - return out; -} - -/** - Write the header of an atom:Atom. - - Space for the complete atom will be reserved, but uninitialised. -*/ -static inline LV2_Atom* -lv2_atom_forge_atom_head(LV2_Atom_Forge* forge, - LV2_Atom* parent, - uint32_t type, - uint32_t size) -{ - LV2_Atom* const out = (LV2_Atom*)lv2_atom_forge_reserve( - forge, parent, size); - if (out) { - out->type = type; - out->size = size - sizeof(LV2_Atom); - } - return out; -} - -/** Write an atom:Int32. */ -static inline LV2_Atom_Int32* -lv2_atom_forge_int32(LV2_Atom_Forge* forge, LV2_Atom* parent, int32_t val) -{ - LV2_Atom_Int32* out = (LV2_Atom_Int32*)lv2_atom_forge_atom_head( - forge, parent, forge->Int32, sizeof(LV2_Atom_Int32)); - if (out) { - out->value = val; - } - return out; -} - -/** Write an atom:Int64. */ -static inline LV2_Atom_Int64* -lv2_atom_forge_int64(LV2_Atom_Forge* forge, LV2_Atom* parent, int64_t val) -{ - LV2_Atom_Int64* out = (LV2_Atom_Int64*)lv2_atom_forge_atom_head( - forge, parent, forge->Int64, sizeof(LV2_Atom_Int64)); - if (out) { - out->value = val; - } - return out; -} - -/** Write an atom:Float. */ -static inline LV2_Atom_Float* -lv2_atom_forge_float(LV2_Atom_Forge* forge, LV2_Atom* parent, float val) -{ - LV2_Atom_Float* out = (LV2_Atom_Float*)lv2_atom_forge_atom_head( - forge, parent, forge->Float, sizeof(LV2_Atom_Float)); - if (out) { - out->value = val; - } - return out; -} - -/** Write an atom:Double. */ -static inline LV2_Atom_Double* -lv2_atom_forge_double(LV2_Atom_Forge* forge, LV2_Atom* parent, double val) -{ - LV2_Atom_Double* out = (LV2_Atom_Double*)lv2_atom_forge_atom_head( - forge, parent, forge->Double, sizeof(LV2_Atom_Double)); - if (out) { - out->value = val; - } - return out; -} - -/** Write an atom:Bool. */ -static inline LV2_Atom_Bool* -lv2_atom_forge_bool(LV2_Atom_Forge* forge, LV2_Atom* parent, bool val) -{ - LV2_Atom_Bool* out = (LV2_Atom_Bool*)lv2_atom_forge_atom_head( - forge, parent, forge->Bool, sizeof(LV2_Atom_Bool)); - if (out) { - out->value = val ? 1 : 0; - } - return out; -} - -/** Write an atom:URID. */ -static inline LV2_Atom_URID* -lv2_atom_forge_urid(LV2_Atom_Forge* forge, LV2_Atom* parent, LV2_URID id) -{ - LV2_Atom_URID* out = (LV2_Atom_URID*)lv2_atom_forge_reserve( - forge, parent, sizeof(LV2_Atom_URID)); - if (out) { - out->atom.type = forge->URID; - out->atom.size = sizeof(uint32_t); - out->id = id; - } - return out; -} - -/** Write an atom:String. */ -static inline LV2_Atom_String* -lv2_atom_forge_string(LV2_Atom_Forge* forge, - LV2_Atom* parent, - const uint8_t* str, - size_t len) -{ - LV2_Atom_String* out = (LV2_Atom_String*)lv2_atom_forge_reserve( - forge, parent, sizeof(LV2_Atom_String) + len + 1); - if (out) { - out->atom.type = forge->String; - out->atom.size = len + 1; - assert(LV2_ATOM_CONTENTS(LV2_Atom_String, out) == LV2_ATOM_BODY(out)); - uint8_t* buf = LV2_ATOM_CONTENTS(LV2_Atom_String, out); - memcpy(buf, str, len); - buf[len] = '\0'; - } - return out; -} - -/** Write an atom:Literal. */ -static inline LV2_Atom_Literal* -lv2_atom_forge_literal(LV2_Atom_Forge* forge, - LV2_Atom* parent, - const uint8_t* str, - size_t len, - uint32_t datatype, - uint32_t lang) -{ - LV2_Atom_Literal* out = (LV2_Atom_Literal*)lv2_atom_forge_reserve( - forge, parent, sizeof(LV2_Atom_Literal) + len + 1); - if (out) { - out->atom.type = forge->Literal; - out->atom.size = sizeof(LV2_Atom_Literal_Head) + len + 1; - out->literal.datatype = datatype; - out->literal.lang = lang; - uint8_t* buf = LV2_ATOM_CONTENTS(LV2_Atom_Literal, out); - memcpy(buf, str, len); - buf[len] = '\0'; - } - return out; -} - -/** Write an atom:Vector header and reserve space for the body. */ -static inline LV2_Atom_Vector* -lv2_atom_forge_reserve_vector(LV2_Atom_Forge* forge, - LV2_Atom* parent, - uint32_t elem_count, - uint32_t elem_type, - uint32_t elem_size) -{ - const size_t size = sizeof(LV2_Atom_Vector) + (elem_size * elem_count); - LV2_Atom_Vector* out = (LV2_Atom_Vector*)lv2_atom_forge_reserve( - forge, parent, size); - if (out) { - out->atom.type = forge->Vector; - out->atom.size = size - sizeof(LV2_Atom); - out->elem_count = elem_count; - out->elem_type = elem_type; - } - return out; -} - -/** Write an atom:Vector. */ -static inline LV2_Atom_Vector* -lv2_atom_forge_vector(LV2_Atom_Forge* forge, - LV2_Atom* parent, - uint32_t elem_count, - uint32_t elem_type, - uint32_t elem_size, - void* elems) -{ - LV2_Atom_Vector* out = lv2_atom_forge_reserve_vector( - forge, parent, elem_count, elem_type, elem_size); - if (out) { - uint8_t* buf = LV2_ATOM_CONTENTS(LV2_Atom_Vector, out); - memcpy(buf, elems, elem_size * elem_count); - } - return out; -} - -/** - Write the header of an atom:Tuple. - - To complete the tuple, write a sequence of atoms, always passing the - returned tuple as the @c parent parameter (or otherwise ensuring the size is - updated correctly). - - For example: - @code - // Write tuple (1, 2.0) - LV2_Atom* tup = (LV2_Atom*)lv2_atom_forge_tuple(forge, NULL); - lv2_atom_forge_int32(forge, tup, 1); - lv2_atom_forge_float(forge, tup, 2.0); - @endcode -*/ -static inline LV2_Atom_Tuple* -lv2_atom_forge_tuple(LV2_Atom_Forge* forge, - LV2_Atom* parent) -{ - return (LV2_Atom_Tuple*)lv2_atom_forge_atom_head( - forge, parent, forge->Tuple, sizeof(LV2_Atom)); -} - -/** - Write the header of an atom:Object. - - To complete the object, write a sequence of properties, always passing the - object as the @c parent parameter (or otherwise ensuring the size is updated - correctly). - - For example: - @code - LV2_URID eg_Cat = map("http://example.org/Cat"); - LV2_URID eg_name = map("http://example.org/name"); - - // Write object header - LV2_Atom* obj = (LV2_Atom*)lv2_atom_forge_object(forge, NULL, 0, eg_Cat); - - // Write property: eg:name = "Hobbes" - lv2_atom_forge_property_head(forge, obj, eg_name, 0); - lv2_atom_forge_string(forge, obj, "Hobbes", strlen("Hobbes")); - @endcode -*/ -static inline LV2_Atom_Object* -lv2_atom_forge_object(LV2_Atom_Forge* forge, - LV2_Atom* parent, - LV2_URID id, - LV2_URID type) -{ - LV2_Atom_Object* out = (LV2_Atom_Object*)lv2_atom_forge_reserve( - forge, parent, sizeof(LV2_Atom_Object)); - if (out) { - out->atom.type = forge->Object; - out->atom.size = sizeof(LV2_Atom_Object) - sizeof(LV2_Atom); - out->id = id; - out->type = type; - } - return out; -} - -/** - Write the header for a property body (likely in an Object). - See lv2_atom_forge_object() documentation for an example. -*/ -static inline LV2_Atom_Property_Body* -lv2_atom_forge_property_head(LV2_Atom_Forge* forge, - LV2_Atom* parent, - LV2_URID key, - LV2_URID context) -{ - LV2_Atom_Property_Body* out = (LV2_Atom_Property_Body*) - lv2_atom_forge_reserve(forge, parent, 2 * sizeof(uint32_t)); - if (out) { - out->key = key; - out->context = context; - } - return out; -} - -/** - Write the header for a Sequence. - The size of the returned sequence will be 0, so passing it as the parent - parameter to other forge methods will do the right thing. -*/ -static inline LV2_Atom_Sequence* -lv2_atom_forge_sequence_head(LV2_Atom_Forge* forge, - LV2_Atom* parent, - uint32_t capacity) -{ - LV2_Atom_Sequence* out = (LV2_Atom_Sequence*) - lv2_atom_forge_reserve(forge, parent, sizeof(LV2_Atom_Sequence)); - if (out) { - out->atom.type = forge->Sequence; - out->atom.size = sizeof(LV2_Atom_Sequence) - sizeof(LV2_Atom); - out->capacity = capacity; - out->pad = 0; - } - return out; -} - -/** - Write the time stamp header of an Event (in a Sequence) in audio frames. - After this, call the appropriate forge method(s) to write the body, passing - the same @c parent parameter. Note the returned LV2_Event is NOT an Atom. -*/ -static inline LV2_Atom_Event* -lv2_atom_forge_audio_time(LV2_Atom_Forge* forge, - LV2_Atom* parent, - uint32_t frames, - uint32_t subframes) -{ - LV2_Atom_Event* out = (LV2_Atom_Event*) - lv2_atom_forge_reserve(forge, parent, 2 * sizeof(uint32_t)); - if (out) { - out->time.audio.frames = frames; - out->time.audio.subframes = subframes; - } - return out; -} - -/** - Write the time stamp header of an Event (in a Sequence) in beats. - After this, call the appropriate forge method(s) to write the body, passing - the same @c parent parameter. Note the returned LV2_Event is NOT an Atom. -*/ -static inline LV2_Atom_Event* -lv2_atom_forge_beat_time(LV2_Atom_Forge* forge, - LV2_Atom* parent, - double beats) -{ - LV2_Atom_Event* out = (LV2_Atom_Event*) - lv2_atom_forge_reserve(forge, parent, sizeof(double)); - if (out) { - out->time.beats = beats; - } - return out; -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* LV2_ATOM_FORGE_H */ diff --git a/lv2/ns/ext/atom/manifest.ttl b/lv2/ns/ext/atom/manifest.ttl deleted file mode 100644 index 37f0f58..0000000 --- a/lv2/ns/ext/atom/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 4 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/atom/waf b/lv2/ns/ext/atom/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/atom/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/atom/wscript b/lv2/ns/ext/atom/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/atom/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/contexts/contexts.h b/lv2/ns/ext/contexts/contexts.h deleted file mode 100644 index f49b474..0000000 --- a/lv2/ns/ext/contexts/contexts.h +++ /dev/null @@ -1,82 +0,0 @@ -/* LV2 Contexts Extension - * Copyright (C) 2007-2009 David Robillard - * - * 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. - */ - -/** @file - * C header for the LV2 Contexts extension - * . - */ - -#ifndef LV2_CONTEXTS_H -#define LV2_CONTEXTS_H - -#include - -#include "lv2/lv2plug.in/ns/lv2core/lv2.h" - -#define LV2_CONTEXTS_URI "http://lv2plug.in/ns/ext/contexts" - -static inline void -lv2_contexts_set_port_valid(void* flags, uint32_t index) { - ((uint8_t*)flags)[index / 8] |= 1 << (index % 8); -} - -static inline void -lv2_contexts_unset_port_valid(void* flags, uint32_t index) { - ((uint8_t*)flags)[index / 8] &= ~(1 << (index % 8)); -} - -static inline int -lv2_contexts_port_is_valid(const void* flags, uint32_t index) { - return (((uint8_t*)flags)[index / 8] & (1 << (index % 8))) != 0; -} - -typedef struct { - - /** The message run function. This is called once to process a set of - * inputs and produce a set of outputs. - * - * Before calling the host MUST set valid_inputs such that the bit - * corresponding to each input port is 1 iff data is present. The plugin - * MUST only inspect bits corresponding to ports in the message thread. - * - * Similarly, before returning the plugin MUST set valid_outputs such that - * the bit corresponding to each output port of the message context is 1 - * iff the value at that port has changed. - * The plugin must return 1 if outputs have been written, 0 otherwise. - */ - uint32_t (*run)(LV2_Handle instance, - const void* valid_inputs, - void* valid_outputs); - -} LV2_Contexts_MessageContext; - -typedef void* LV2_Contexts_Request_Run_Data; - -typedef struct { - - /** Pointer to opaque host data (to be passed to request_run) */ - LV2_Contexts_Request_Run_Data data; - - /** Request the host execute the context with the given URI */ - void (*request_run)(LV2_Contexts_Request_Run_Data host_handle, - uint32_t context_uri); - -} LV2_Contexts_Request_Run_Feature; - -#endif /* LV2_CONTEXTS_H */ - diff --git a/lv2/ns/ext/contexts/contexts.ttl b/lv2/ns/ext/contexts/contexts.ttl deleted file mode 100644 index c56c649..0000000 --- a/lv2/ns/ext/contexts/contexts.ttl +++ /dev/null @@ -1,134 +0,0 @@ -# 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-2010 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 ctx: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . -@prefix doap: . -@prefix foaf: . - - - a lv2:Specification , lv2:Feature ; - doap:name "LV2 Contexts" ; - doap:shortdesc "Support for plugins with several execution contexts." ; - lv2:documentation """ -

An extension for LV2 plugins which have several execution contexts.

- -

Contexts allow plugins to run tasks and/or process input/output in -multiple threads. Contexts can be used to add non-realtime functionality -to a plugin while still keeping the audio run() method realtime safe.

- -

A context is an LV2 feature, so the usual LV2 feature mechanism is used -to determine whether a plugin has a given context, and whether or not it is -mandatory.

- -

Unless otherwise stated, each context (defined by some URI) adds a new -threading class similar to the Audio class defined by LV2. Each context has a -run callback and a connect_port callback both in the same class (i.e. can't be -called concurrently), but may be called concurrently with functions for other -contexts (excluding the Instantiation class). Context properties such as -ctx:hardRTCapable apply to both functions. -The host MUST only call the correct connect_port function associated with the -context for that port, i.e. it is an error to use the main LV2 connect_port -function on a port with a context other than the main LV2 run function.

-""" . - - -########################## -## Context Base Classes ## -########################## - -ctx:Context a rdfs:Class ; - rdfs:label "LV2 Context" ; - lv2:documentation """ -

A potentially concurrent context (callback) on a plugin.

- -

Ports are always associated with a context. If a port has no explicit context -property, then its context is ctx:audioContext (the default LV2 run() context).

- -

A plugin indicates support for a context by supporting an LV2 Feature with -that context's URI. If a plugin optionally supports a context (e.g. -<plugin> lv2:optionalFeature ctx:idleContext .), then -all ports associated with that context MUST be lv2:connectionOptional. Thus, -hosts that do not support contexts will connect such ports to NULL and the -plugin can run with only a standard LV2 run() context.

- -

Any plugin that supports any context (optionally or mandatorily) MUST adhere -to the following additional threading rules for LV2_Descriptor.connect_port:

-
    -
  • connect_port MUST only be called for a given port from the context -associated with that port
  • -
  • connect_port MAY be called concurrently for ports with different -contexts (but MUST NOT be called concurrently for multiple ports in the -same context)
  • -
-

Note this implies that any shared data access in connect_port may be -accessed concurrently. The plugin is responsible for any synchronisation -or locking necessary to make this possible.

-""" . - -ctx:audioContext a ctx:Context , lv2:Feature ; - rdfs:comment """The context of LV2_Descriptor.run().""" . - -ctx:messageContext a ctx:Context , lv2:Feature ; - lv2:documentation """ -

A non-realtime context for plugin control via message passing. This context -has a run method which takes a bitset of flags for parameters specifying which -input and output ports are valid before and after the run method has executed, -respectively (see LV2_Contexts_MessageContext).

-""" . - -ctx:idleContext a ctx:Context , lv2:Feature ; - rdfs:comment """ -A non-realtime idle context, periodically run by the host roughly every second. -This context never has any ports. -""" . - -ctx:requestRunFeature a lv2:Feature ; - lv2:documentation """ -

A feature allowing the plugin to request the execution of a particular -context at an arbitrary time. To support this feature, the host MUST pass an -LV2_Feature to instantiate with data pointing to a -LV2_Contexts_Request_Run_Feature.

- -

The plugin MAY call request_run with the given -data from any non-realtime context to demand soon-as-possible execution -of the specified context.

-""" . - -ctx:context a rdf:Property ; - rdfs:domain lv2:Port ; - rdfs:range ctx:Context ; - rdfs:label "is used in context" ; - rdfs:comment """ -The context a particular port is associated with; the port will only be -connected/read/written by that context. - -If no context is specified, the port is considered part of the default LV2 -audio context.""" . - - diff --git a/lv2/ns/ext/contexts/ext.pc.in b/lv2/ns/ext/contexts/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/contexts/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/contexts/manifest.ttl b/lv2/ns/ext/contexts/manifest.ttl deleted file mode 100644 index d2cc036..0000000 --- a/lv2/ns/ext/contexts/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/contexts/test.c b/lv2/ns/ext/contexts/test.c deleted file mode 100644 index ca41a10..0000000 --- a/lv2/ns/ext/contexts/test.c +++ /dev/null @@ -1,67 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include "contexts.h" - -#define TEST_ASSERT(check) do {\ - if (!(check)) {\ - fprintf(stderr, "Failure at line %d: %s\n", __LINE__, #check);\ - assert(false);\ - _exit(1);\ - }\ -} while (0) - -#define NUM_PORTS 64 - -void -print_flags(void* flags) -{ - for (int i = NUM_PORTS; i >= 0; --i) - printf((lv2_contexts_port_is_valid(flags, i)) ? "1" : "0"); - printf("\n"); -} - - -int -main() -{ - uint64_t flags = 0; - print_flags(&flags); - - lv2_contexts_set_port_valid(&flags, 16); - print_flags(&flags); - for (int i = 0; i < NUM_PORTS; ++i) { - if (i == 16) { - TEST_ASSERT(lv2_contexts_port_is_valid(&flags, i)); - } else { - TEST_ASSERT(!lv2_contexts_port_is_valid(&flags, i)); - } - } - - lv2_contexts_set_port_valid(&flags, 46); - lv2_contexts_set_port_valid(&flags, 0); - print_flags(&flags); - for (int i = 0; i < NUM_PORTS; ++i) { - if (i == 0 || i == 16 || i == 46) { - TEST_ASSERT(lv2_contexts_port_is_valid(&flags, i)); - } else { - TEST_ASSERT(!lv2_contexts_port_is_valid(&flags, i)); - } - } - - lv2_contexts_unset_port_valid(&flags, 16); - print_flags(&flags); - for (int i = 0; i < NUM_PORTS; ++i) { - if (i == 0 || i == 46) { - TEST_ASSERT(lv2_contexts_port_is_valid(&flags, i)); - } else { - TEST_ASSERT(!lv2_contexts_port_is_valid(&flags, i)); - } - } - - return 0; -} - diff --git a/lv2/ns/ext/contexts/waf b/lv2/ns/ext/contexts/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/contexts/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/contexts/wscript b/lv2/ns/ext/contexts/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/contexts/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/cv-port/cv-port.ttl b/lv2/ns/ext/cv-port/cv-port.ttl deleted file mode 100644 index 09016d6..0000000 --- a/lv2/ns/ext/cv-port/cv-port.ttl +++ /dev/null @@ -1,77 +0,0 @@ -# LV2 CV Port Extension -# Copyright 2011 David Robillard -# -# 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. - -@prefix cv: . -@prefix doap: . -@prefix foaf: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . - - - a lv2:Specification ; - doap:license ; - doap:name "LV2 CV Port" ; - doap:shortdesc "Control Voltage ports for LV2 plugins." ; - doap:maintainer [ - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - rdfs:seeAlso - ] ; - lv2:documentation """ -

This extension defines Control Voltage (CV) ports, which are audio-rate -control ports like those used on classical voltage-controlled synthesizers. -These ports serve as control ports like lv2:ControlPort but can -also be used for audio-rate modulation of control signals. This enables many -types of processing and synthesis which are not possible with a lower control -rate.

-""" . - -cv:CVPort - a rdfs:Class ; - rdfs:label "CV Port" ; - rdfs:subClassOf lv2:Port ; - lv2:documentation """ - -

Ports of this type have identical semantics to lv2:AudioPort in terms of -buffer format and connection/input/output logistics. However, rather than the -buffer representing audio, the buffer represents audio-rate control data. A -CVPort SHOULD have the same properties a lv2:ControlPort typically -has to describe appropriate control values (e.g. lv2:minimum, lv2:maximum, lv2:default)

- -

Hosts SHOULD take care to prevent data from a CVPort port from being used as -audio except in cases where this is known to be safe.

- -

Example:

-
-<http://example.org/some-plugin>
-    lv2:port [
-        a cv:CVPort, lv2:InputPort ;
-        lv2:index 0 ;
-        lv2:minimum -1.0 ;
-        lv2:maximum 1.0 ;
-        lv2:default 0.0 ;
-        lv2:symbol "modulation" ;
-        lv2:name "Modulation" ;
-    ] .
-
-""" . diff --git a/lv2/ns/ext/cv-port/ext.pc.in b/lv2/ns/ext/cv-port/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/cv-port/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/cv-port/manifest.ttl b/lv2/ns/ext/cv-port/manifest.ttl deleted file mode 100644 index e5fa145..0000000 --- a/lv2/ns/ext/cv-port/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/cv-port/waf b/lv2/ns/ext/cv-port/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/cv-port/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/cv-port/wscript b/lv2/ns/ext/cv-port/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/cv-port/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/data-access/data-access.h b/lv2/ns/ext/data-access/data-access.h deleted file mode 100644 index fac6974..0000000 --- a/lv2/ns/ext/data-access/data-access.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - LV2 Data Access Extension - Copyright 2008-2011 David Robillard - - 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. -*/ - -/** - @file data-access.h - C header for the LV2 Extension Data extension - . - - This extension defines a method for (e.g.) plugin UIs to have (possibly - marshalled) access to the extension_data function on a plugin instance. -*/ - -#ifndef LV2_DATA_ACCESS_H -#define LV2_DATA_ACCESS_H - -#define LV2_DATA_ACCESS_URI "http://lv2plug.in/ns/ext/data-access" - -/** - The data field of the LV2_Feature for this extension. - - To support this feature the host must pass an LV2_Feature struct to the - instantiate method with URI "http://lv2plug.in/ns/ext/data-access" - and data pointed to an instance of this struct. -*/ -typedef struct { - /** - A pointer to a method the UI can call to get data (of a type specified - by some other extension) from the plugin. - - This call never is never guaranteed to return anything, UIs should - degrade gracefully if direct access to the plugin data is not possible - (in which case this function will return NULL). - - This is for access to large data that can only possibly work if the UI - and plugin are running in the same process. For all other things, use - the normal LV2 UI communication system. - */ - const void* (*data_access)(const char* uri); - -} LV2_Extension_Data_Feature; - -#endif /* LV2_DATA_ACCESS_H */ diff --git a/lv2/ns/ext/data-access/data-access.ttl b/lv2/ns/ext/data-access/data-access.ttl deleted file mode 100644 index 6b0d817..0000000 --- a/lv2/ns/ext/data-access/data-access.ttl +++ /dev/null @@ -1,82 +0,0 @@ -# LV2 Data Access Extension -# Copyright 2008-2011 David Robillard -# -# 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. - -@prefix da: . -@prefix dcs: . -@prefix doap: . -@prefix foaf: . -@prefix lv2: . -@prefix lv2ev: . -@prefix rdf: . -@prefix rdfs: . - - - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - foaf:mbox ; - rdfs:seeAlso . - - - a lv2:Specification , - doap:Project ; - doap:license ; - doap:name "LV2 Data Access" ; - doap:shortdesc "Provides access to LV2_Descriptor::extension_data()." ; - doap:developer ; - doap:release [ - doap:revision "1.4" ; - doap:created "2011-11-21" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Update packaging." - ] , [ - rdfs:label "Improve documentation." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2011-05-26" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add build system for installation." - ] , [ - rdfs:label "Switch to ISC license." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2010-10-04" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; - lv2:documentation """ -

This extension defines a feature, LV2_Extension_Data_Feature, which provides -access to LV2_Descriptor::extension_data() for plugin UIs or other potentially -remote users of a plugin.

- -

To support this feature the host must pass an LV2_Feature struct to the -instantiate method with URI LV2_DATA_ACCESS_URI and data pointed to an instance -of LV2_Extension_Data_Feature.

-""" . \ No newline at end of file diff --git a/lv2/ns/ext/data-access/ext.pc.in b/lv2/ns/ext/data-access/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/data-access/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/data-access/manifest.ttl b/lv2/ns/ext/data-access/manifest.ttl deleted file mode 100644 index f7ccd9d..0000000 --- a/lv2/ns/ext/data-access/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 1 ; - lv2:microVersion 4 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/data-access/waf b/lv2/ns/ext/data-access/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/data-access/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/data-access/wscript b/lv2/ns/ext/data-access/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/data-access/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/dynmanifest/dynmanifest.h b/lv2/ns/ext/dynmanifest/dynmanifest.h deleted file mode 100644 index 51908b7..0000000 --- a/lv2/ns/ext/dynmanifest/dynmanifest.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - Dynamic manifest specification for LV2 - Copyright 2008-2011 Stefano D'Angelo - - 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. -*/ - -/** - @file dynmanifest.h - C header for the LV2 Dynamic Manifest extension - . - Revision: 1.2 -*/ - -#ifndef LV2_DYN_MANIFEST_H_INCLUDED -#define LV2_DYN_MANIFEST_H_INCLUDED - -#include - -#include "lv2/lv2plug.in/ns/lv2core/lv2.h" - -#define LV2_DYN_MANIFEST_URI "http://lv2plug.in/ns/ext/dynmanifest" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - Dynamic manifest generator handle. - - This handle indicates a particular status of a dynamic manifest generator. - The host MUST NOT attempt to interpret it and, unlikely LV2_Handle, it is - NOT even valid to compare this to NULL. The dynamic manifest generator MAY - use it to reference internal data. -*/ -typedef void * LV2_Dyn_Manifest_Handle; - -/** - Generate the dynamic manifest. - - @param handle Pointer to an uninitialized dynamic manifest generator handle. - - @param features NULL terminated array of LV2_Feature structs which represent - the features the host supports. The dynamic manifest generator may refuse to - (re)generate the dynamic manifest if required features are not found here - (however hosts SHOULD NOT use this as a discovery mechanism, instead of - reading the static manifest file). This array must always exist; if a host - has no features, it MUST pass a single element array containing NULL. - - @return 0 on success, otherwise a non-zero error code. The host SHOULD - evaluate the result of the operation by examining the returned value and - MUST NOT try to interpret the value of handle. -*/ -int lv2_dyn_manifest_open(LV2_Dyn_Manifest_Handle * handle, - const LV2_Feature *const * features); - -/** - Fetch a "list" of subject URIs described in the dynamic manifest. - - The dynamic manifest generator has to fill the resource only with the needed - triples to make the host aware of the "objects" it wants to expose. For - example, if the plugin library exposes a regular LV2 plugin, it should - output only a triple like the following: - - a lv2:Plugin . - - The objects that are elegible for exposure are those that would need to be - represented by a subject node in a static manifest. - - @param handle Dynamic manifest generator handle. - - @param fp FILE * identifying the resource the host has to set up for the - dynamic manifest generator. The host MUST pass a writable, empty resource to - this function, and the dynamic manifest generator MUST ONLY perform write - operations on it at the end of the stream (e.g., using only fprintf(), - fwrite() and similar). - - @return 0 on success, otherwise a non-zero error code. -*/ -int lv2_dyn_manifest_get_subjects(LV2_Dyn_Manifest_Handle handle, - FILE * fp); - -/** - Function that fetches data related to a specific URI. - - The dynamic manifest generator has to fill the resource with data related to - object represented by the given URI. For example, if the library exposes a - regular LV2 plugin whose URI, as retrieved by the host using - lv2_dyn_manifest_get_subjects() is http://www.example.com/plugin/uri, it - should output something like: - -
-   
-       a lv2:Plugin ;
-       doap:name "My Plugin" ;
-       lv2:binary  ;
-       etc:etc "..." .
-   
- - @param handle Dynamic manifest generator handle. - - @param fp FILE * identifying the resource the host has to set up for the - dynamic manifest generator. The host MUST pass a writable resource to this - function, and the dynamic manifest generator MUST ONLY perform write - operations on it at the current position of the stream (e.g. using only - fprintf(), fwrite() and similar). - - @param uri URI to get data about (in the "plain" form, i.e., absolute URI - without Turtle prefixes). - - @return 0 on success, otherwise a non-zero error code. -*/ -int lv2_dyn_manifest_get_data(LV2_Dyn_Manifest_Handle handle, - FILE * fp, - const char * uri); - -/** - Function that ends the operations on the dynamic manifest generator. - - This function SHOULD be used by the dynamic manifest generator to perform - cleanup operations, etc. - - Once this function is called, referring to handle will cause undefined - behavior. - - @param handle Dynamic manifest generator handle. -*/ -void lv2_dyn_manifest_close(LV2_Dyn_Manifest_Handle handle); - -#ifdef __cplusplus -} -#endif - -#endif /* LV2_DYN_MANIFEST_H_INCLUDED */ diff --git a/lv2/ns/ext/dynmanifest/dynmanifest.ttl b/lv2/ns/ext/dynmanifest/dynmanifest.ttl deleted file mode 100644 index 2054a17..0000000 --- a/lv2/ns/ext/dynmanifest/dynmanifest.ttl +++ /dev/null @@ -1,107 +0,0 @@ -# LV2 Dynamic Manifest Extension -# Copyright 2008-2011 Stefano D'Angelo -# -# 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. - -@prefix dman: . -@prefix doap: . -@prefix foaf: . -@prefix lv2: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - a lv2:Specification ; - lv2:documentation """ -

The LV2 API, on its own, cannot be used to write plugin libraries where data -is dynamically generated at runtime (e.g. API wrappers), since LV2 requires -needed information to be provided in one or more static data (RDF) files. This -API addresses this limitation by extending the LV2 API.

- -

To detect that a plugin library implements a dynamic manifest generator, -the host checks its static manifest for a description like:

- -
-<http://example.org/my-dynamic-manifest>
-    a dman:DynManifest ;
-    lv2:binary <mydynmanifest.so> .
-
- -

To load the data, the host loads the library -(e.g. mydynmanifest.so) as usual and fetches the dynamic Turtle -data from it using this API.

- -

The host is allowed to request regeneration of the dynamic manifest multiple -times, and the plugin library is expected to provide updated data if/when -possible. All data and references provided via this API before the last -regeneration of the dynamic manifest is to be considered invalid by the host, -including plugin descriptors whose URIs were discovered using this API.

- -

Accessing Data

- -

Whenever a host wants to access data using this API, it could:

- -
    -
  1. Call lv2_dyn_manifest_open().
  2. -
  3. Create a FILE for functions to write data to (e.g. using tmpfile()).
  4. -
  5. Get a list of exposed subject URIs using - lv2_dyn_manifest_get_subjects().
  6. -
  7. Call lv2_dyn_manifest_get_data() for each URI of interest to - get the data related to that URI (which can be written to any FILE).
  8. -
  9. Call lv2_dyn_manifest_close().
  10. -
  11. Parse the content of the FILE(s).
  12. -
  13. Free/delete/unlink the FILE(s).
  14. -
- -

Each call to the above mentioned dynamic manifest functions MUST write a -complete, valid Turtle document (including all needed prefix definitions) to -the output FILE.

- -

Each call to lv2_dyn_manifest_open() causes the (re)generation of the -dynamic manifest data, and invalidates all data fetched before the call.

- -

In case the plugin library uses this same API to access other dynamic -manifests, it MUST implement some mechanism to avoid potentially endless loops -(such as A loads B, B loads A, etc.) and, in case such a loop is detected, the -operation MUST fail. For this purpose, use of a static boolean flag is -suggested.

- -

Threading Rules

- -

All of the functions defined by this specification belong to the Discovery -class.

-""" . - -dman:DynManifest - a rdfs:Class ; - rdfs:subClassOf lv2:Resource ; - rdfs:label "Dynamic manifest generator" ; - rdfs:subClassOf [ - a owl:Restriction ; - owl:onProperty lv2:binary ; - owl:minCardinality 1 ; - rdfs:comment """ -A DynManifest MUST have at least 1 lv2:binary, which MUST implement all the -functions defined in dynmanifest.h. -""" - ] ; - rdfs:comment """ -The class which represents a dynamic manifest generator. - -There MUST NOT be any instances of dman:DynManifest in the generated manifest. - -All relative URIs in the generated data MUST be relative to the base path -that would be used to parse a normal LV2 manifest (the bundle path). -""" . diff --git a/lv2/ns/ext/dynmanifest/ext.pc.in b/lv2/ns/ext/dynmanifest/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/dynmanifest/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/dynmanifest/lv2-dynmanifest.doap.ttl b/lv2/ns/ext/dynmanifest/lv2-dynmanifest.doap.ttl deleted file mode 100644 index 6c4d985..0000000 --- a/lv2/ns/ext/dynmanifest/lv2-dynmanifest.doap.ttl +++ /dev/null @@ -1,43 +0,0 @@ -@prefix dcs: . -@prefix doap: . -@prefix foaf: . -@prefix rdfs: . - - - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - foaf:mbox ; - rdfs:seeAlso . - - - a doap:Project ; - doap:license ; - doap:name "LV2 Dynamic Manifest" ; - doap:homepage ; - doap:created "2009-06-13" ; - doap:shortdesc "Support for dynamic data generation." ; - doap:programming-language "C" ; - doap:developer [ - a foaf:Person ; - foaf:name "Stefano D'Angelo" - ] ; - doap:release [ - doap:revision "1.2" ; - doap:created "2011-11-21" ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Improve documentation." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2010-04-10" ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] . diff --git a/lv2/ns/ext/dynmanifest/manifest.ttl b/lv2/ns/ext/dynmanifest/manifest.ttl deleted file mode 100644 index cc5a83d..0000000 --- a/lv2/ns/ext/dynmanifest/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 1 ; - lv2:microVersion 2 ; - rdfs:seeAlso , - . diff --git a/lv2/ns/ext/dynmanifest/waf b/lv2/ns/ext/dynmanifest/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/dynmanifest/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/dynmanifest/wscript b/lv2/ns/ext/dynmanifest/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/dynmanifest/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/event/event-helpers.h b/lv2/ns/ext/event/event-helpers.h deleted file mode 100644 index 75ba14b..0000000 --- a/lv2/ns/ext/event/event-helpers.h +++ /dev/null @@ -1,246 +0,0 @@ -/* lv2_event_helpers.h - Helper functions for the LV2 events extension. - * - * Copyright (C) 2008-2009 David Robillard - * - * This header is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser 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 Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this header; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 01222-1307 USA - */ - -#ifndef LV2_EVENT_HELPERS_H -#define LV2_EVENT_HELPERS_H - -#include -#include -#include -#include -#include -#include "lv2/lv2plug.in/ns/ext/event/event.h" - -/** @file - * Helper functions for the LV2 Event extension - * . - * - * These functions are provided for convenience only, use of them is not - * required for supporting lv2ev (i.e. the events extension is defined by the - * raw buffer format described in lv2_event.h and NOT by this API). - * - * Note that these functions are all static inline which basically means: - * do not take the address of these functions. */ - - -/** Pad a size to 64 bits (for event sizes) */ -static inline uint16_t -lv2_event_pad_size(uint16_t size) -{ - return (size + 7) & (~7); -} - - -/** Initialize (empty, reset..) an existing event buffer. - * The contents of buf are ignored entirely and overwritten, except capacity - * which is unmodified. */ -static inline void -lv2_event_buffer_reset(LV2_Event_Buffer* buf, - uint16_t stamp_type, - uint8_t *data) -{ - buf->data = data; - buf->header_size = sizeof(LV2_Event_Buffer); - buf->stamp_type = stamp_type; - buf->event_count = 0; - buf->size = 0; -} - - -/** Allocate a new, empty event buffer. */ -static inline LV2_Event_Buffer* -lv2_event_buffer_new(uint32_t capacity, uint16_t stamp_type) -{ - const size_t size = sizeof(LV2_Event_Buffer) + capacity; - LV2_Event_Buffer* buf = (LV2_Event_Buffer*)malloc(size); - if (buf != NULL) { - buf->capacity = capacity; - lv2_event_buffer_reset(buf, stamp_type, (uint8_t *)(buf + 1)); - return buf; - } else { - return NULL; - } -} - - -/** An iterator over an LV2_Event_Buffer. - * - * Multiple simultaneous read iterators over a single buffer is fine, - * but changing the buffer invalidates all iterators (e.g. RW Lock). */ -typedef struct { - LV2_Event_Buffer* buf; - uint32_t offset; -} LV2_Event_Iterator; - - -/** Reset an iterator to point to the start of @a buf. - * @return True if @a iter is valid, otherwise false (buffer is empty) */ -static inline bool -lv2_event_begin(LV2_Event_Iterator* iter, - LV2_Event_Buffer* buf) -{ - iter->buf = buf; - iter->offset = 0; - return (buf->size > 0); -} - - -/** Check if @a iter is valid. - * @return True if @a iter is valid, otherwise false (past end of buffer) */ -static inline bool -lv2_event_is_valid(LV2_Event_Iterator* iter) -{ - return (iter->offset < iter->buf->size); -} - - -/** Advance @a iter forward one event. - * @a iter must be valid. - * @return True if @a iter is valid, otherwise false (reached end of buffer) */ -static inline bool -lv2_event_increment(LV2_Event_Iterator* iter) -{ - assert(lv2_event_is_valid(iter)); - - LV2_Event* const ev = (LV2_Event*)( - (uint8_t*)iter->buf->data + iter->offset); - - iter->offset += lv2_event_pad_size(sizeof(LV2_Event) + ev->size); - - return true; -} - - -/** Dereference an event iterator (get the event currently pointed at). - * @a iter must be valid. - * @a data if non-NULL, will be set to point to the contents of the event - * returned. - * @return A Pointer to the event @a iter is currently pointing at, or NULL - * if the end of the buffer is reached (in which case @a data is - * also set to NULL). */ -static inline LV2_Event* -lv2_event_get(LV2_Event_Iterator* iter, - uint8_t** data) -{ - assert(lv2_event_is_valid(iter)); - - LV2_Event* const ev = (LV2_Event*)( - (uint8_t*)iter->buf->data + iter->offset); - - if (data) - *data = (uint8_t*)ev + sizeof(LV2_Event); - - return ev; -} - - -/** Write an event at @a iter. - * The event (if any) pointed to by @a iter will be overwritten, and @a iter - * incremented to point to the following event (i.e. several calls to this - * function can be done in sequence without twiddling iter in-between). - * @return True if event was written, otherwise false (buffer is full). */ -static inline bool -lv2_event_write(LV2_Event_Iterator* iter, - uint32_t frames, - uint32_t subframes, - uint16_t type, - uint16_t size, - const uint8_t* data) -{ - if (iter->buf->capacity - iter->buf->size < sizeof(LV2_Event) + size) - return false; - - LV2_Event* const ev = (LV2_Event*)( - (uint8_t*)iter->buf->data + iter->offset); - - ev->frames = frames; - ev->subframes = subframes; - ev->type = type; - ev->size = size; - memcpy((uint8_t*)ev + sizeof(LV2_Event), data, size); - ++iter->buf->event_count; - - size = lv2_event_pad_size(sizeof(LV2_Event) + size); - iter->buf->size += size; - iter->offset += size; - - return true; -} - - -/** Reserve space for an event in the buffer and return a pointer to - the memory where the caller can write the event data, or NULL if there - is not enough room in the buffer. */ -static inline uint8_t* -lv2_event_reserve(LV2_Event_Iterator* iter, - uint32_t frames, - uint32_t subframes, - uint16_t type, - uint16_t size) -{ - size = lv2_event_pad_size(size); - if (iter->buf->capacity - iter->buf->size < sizeof(LV2_Event) + size) - return NULL; - - LV2_Event* const ev = (LV2_Event*)((uint8_t*)iter->buf->data + - iter->offset); - - ev->frames = frames; - ev->subframes = subframes; - ev->type = type; - ev->size = size; - ++iter->buf->event_count; - - size = lv2_event_pad_size(sizeof(LV2_Event) + size); - iter->buf->size += size; - iter->offset += size; - - return (uint8_t*)ev + sizeof(LV2_Event); -} - - -/** Write an event at @a iter. - * The event (if any) pointed to by @a iter will be overwritten, and @a iter - * incremented to point to the following event (i.e. several calls to this - * function can be done in sequence without twiddling iter in-between). - * @return True if event was written, otherwise false (buffer is full). */ -static inline bool -lv2_event_write_event(LV2_Event_Iterator* iter, - const LV2_Event* ev, - const uint8_t* data) -{ - if (iter->buf->capacity - iter->buf->size < sizeof(LV2_Event) + ev->size) - return false; - - LV2_Event* const write_ev = (LV2_Event*)( - (uint8_t*)iter->buf->data + iter->offset); - - *write_ev = *ev; - memcpy((uint8_t*)write_ev + sizeof(LV2_Event), data, ev->size); - ++iter->buf->event_count; - - const uint16_t size = lv2_event_pad_size(sizeof(LV2_Event) + ev->size); - iter->buf->size += size; - iter->offset += size; - - return true; -} - -#endif /* LV2_EVENT_HELPERS_H */ - diff --git a/lv2/ns/ext/event/event.h b/lv2/ns/ext/event/event.h deleted file mode 100644 index 2c340ba..0000000 --- a/lv2/ns/ext/event/event.h +++ /dev/null @@ -1,281 +0,0 @@ -/* - LV2 Event Extension - Copyright 2008-2011 David Robillard - Copyright 2006-2007 Lars Luthman - - 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_EVENT_H -#define LV2_EVENT_H - -#define LV2_EVENT_URI "http://lv2plug.in/ns/ext/event" -#define LV2_EVENT_AUDIO_STAMP 0 - -#include - -/** - @file event.h - C API for the LV2 Event extension . - - This extension is a generic transport mechanism for time stamped events - of any type (e.g. MIDI, OSC, ramps, etc). Each port can transport mixed - events of any type; the type of events and timestamps are defined by a URI - which is mapped to an integer by the host for performance reasons. - - This extension requires the host to support the LV2 URI Map extension. - Any host which supports this extension MUST guarantee that any call to - the LV2 URI Map uri_to_id function with the URI of this extension as the - 'map' argument returns a value within the range of uint16_t. -*/ - -/** - The best Pulses Per Quarter Note for tempo-based uint32_t timestamps. - Equal to 2^12 * 5 * 7 * 9 * 11 * 13 * 17, which is evenly divisble - by all integers from 1 through 18 inclusive, and powers of 2 up to 2^12. -*/ -static const uint32_t LV2_EVENT_PPQN = 3136573440U; - -/** - An LV2 event (header only). - - LV2 events are generic time-stamped containers for any type of event. - The type field defines the format of a given event's contents. - - This struct defines the header of an LV2 event. An LV2 event is a single - chunk of POD (plain old data), usually contained in a flat buffer (see - LV2_EventBuffer below). Unless a required feature says otherwise, hosts may - assume a deep copy of an LV2 event can be created safely using a simple: - - memcpy(ev_copy, ev, sizeof(LV2_Event) + ev->size); (or equivalent) -*/ -typedef struct { - - /** - The frames portion of timestamp. The units used here can optionally be - set for a port (with the lv2ev:timeUnits property), otherwise this is - audio frames, corresponding to the sample_count parameter of the LV2 run - method (e.g. frame 0 is the first frame for that call to run). - */ - uint32_t frames; - - /** - The sub-frames portion of timestamp. The units used here can optionally - be set for a port (with the lv2ev:timeUnits property), otherwise this is - 1/(2^32) of an audio frame. - */ - uint32_t subframes; - - /** - The type of this event, as a number which represents some URI - defining an event type. This value MUST be some value previously - returned from a call to the uri_to_id function defined in the LV2 - URI map extension (see lv2_uri_map.h). - There are special rules which must be followed depending on the type - of an event. If the plugin recognizes an event type, the definition - of that event type will describe how to interpret the event, and - any required behaviour. Otherwise, if the type is 0, this event is a - non-POD event and lv2_event_unref MUST be called if the event is - 'dropped' (see above). Even if the plugin does not understand an event, - it may pass the event through to an output by simply copying (and NOT - calling lv2_event_unref). These rules are designed to allow for generic - event handling plugins and large non-POD events, but with minimal hassle - on simple plugins that "don't care" about these more advanced features. - */ - uint16_t type; - - /** - The size of the data portion of this event in bytes, which immediately - follows. The header size (12 bytes) is not included in this value. - */ - uint16_t size; - - /* size bytes of data follow here */ - -} LV2_Event; - - -/** - A buffer of LV2 events (header only). - - Like events (which this contains) an event buffer is a single chunk of POD: - the entire buffer (including contents) can be copied with a single memcpy. - The first contained event begins sizeof(LV2_EventBuffer) bytes after the - start of this struct. - - After this header, the buffer contains an event header (defined by struct - LV2_Event), followed by that event's contents (padded to 64 bits), followed - by another header, etc: - - | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | - |FRAMES |SUBFRMS|TYP|LEN|DATA..DATA..PAD|FRAMES | ... -*/ -typedef struct { - - /** - The contents of the event buffer. This may or may not reside in the - same block of memory as this header, plugins must not assume either. - The host guarantees this points to at least capacity bytes of allocated - memory (though only size bytes of that are valid events). - */ - uint8_t* data; - - /** - The size of this event header in bytes (including everything). - - This is to allow for extending this header in the future without - breaking binary compatibility. Whenever this header is copied, - it MUST be done using this field (and NOT the sizeof this struct). - */ - uint16_t header_size; - - /** - The type of the time stamps for events in this buffer. - As a special exception, '0' always means audio frames and subframes - (1/UINT32_MAX'th of a frame) in the sample rate passed to instantiate. - - INPUTS: The host must set this field to the numeric ID of some URI - defining the meaning of the frames/subframes fields of contained events - (obtained by the LV2 URI Map uri_to_id function with the URI of this - extension as the 'map' argument, see lv2_uri_map.h). The host must - never pass a plugin a buffer which uses a stamp type the plugin does not - 'understand'. The value of this field must never change, except when - connect_port is called on the input port, at which time the host MUST - have set the stamp_type field to the value that will be used for all - subsequent run calls. - - OUTPUTS: The plugin may set this to any value that has been returned - from uri_to_id with the URI of this extension for a 'map' argument. - When connected to a buffer with connect_port, output ports MUST set this - field to the type of time stamp they will be writing. On any call to - connect_port on an event input port, the plugin may change this field on - any output port, it is the responsibility of the host to check if any of - these values have changed and act accordingly. - */ - uint16_t stamp_type; - - /** - The number of events in this buffer. - - INPUTS: The host must set this field to the number of events contained - in the data buffer before calling run(). The plugin must not change - this field. - - OUTPUTS: The plugin must set this field to the number of events it has - written to the buffer before returning from run(). Any initial value - should be ignored by the plugin. - */ - uint32_t event_count; - - /** - The size of the data buffer in bytes. - This is set by the host and must not be changed by the plugin. - The host is allowed to change this between run() calls. - */ - uint32_t capacity; - - /** - The size of the initial portion of the data buffer containing data. - - INPUTS: The host must set this field to the number of bytes used - by all events it has written to the buffer (including headers) - before calling the plugin's run(). - The plugin must not change this field. - - OUTPUTS: The plugin must set this field to the number of bytes - used by all events it has written to the buffer (including headers) - before returning from run(). - Any initial value should be ignored by the plugin. - */ - uint32_t size; - -} LV2_Event_Buffer; - - -/** - Opaque pointer to host data. -*/ -typedef void* LV2_Event_Callback_Data; - - -/** - Non-POD events feature. - - To support this feature the host must pass an LV2_Feature struct to the - plugin's instantiate method with URI "http://lv2plug.in/ns/ext/event" - and data pointed to an instance of this struct. Note this feature - is not mandatory to support the event extension. -*/ -typedef struct { - - /** - Opaque pointer to host data. - - The plugin MUST pass this to any call to functions in this struct. - Otherwise, it must not be interpreted in any way. - */ - LV2_Event_Callback_Data callback_data; - - /** - Take a reference to a non-POD event. - - If a plugin receives an event with type 0, it means the event is a - pointer to some object in memory and not a flat sequence of bytes - in the buffer. When receiving a non-POD event, the plugin already - has an implicit reference to the event. If the event is stored AND - passed to an output, lv2_event_ref MUST be called on that event. - If the event is only stored OR passed through, this is not necessary - (as the plugin already has 1 implicit reference). - - @param event An event received at an input that will not be copied to - an output or stored in any way. - - @param context The calling context. Like event types, this is a mapped - URI, see lv2_context.h. Simple plugin with just a run() method should - pass 0 here (the ID of the 'standard' LV2 run context). The host - guarantees that this function is realtime safe iff @a context is - realtime safe. - - PLUGINS THAT VIOLATE THESE RULES MAY CAUSE CRASHES AND MEMORY LEAKS. - */ - uint32_t (*lv2_event_ref)(LV2_Event_Callback_Data callback_data, - LV2_Event* event); - - /** - Drop a reference to a non-POD event. - - If a plugin receives an event with type 0, it means the event is a - pointer to some object in memory and not a flat sequence of bytes - in the buffer. If the plugin does not pass the event through to - an output or store it internally somehow, it MUST call this function - on the event (more information on using non-POD events below). - - @param event An event received at an input that will not be copied to an - output or stored in any way. - - @param context The calling context. Like event types, this is a mapped - URI, see lv2_context.h. Simple plugin with just a run() method should - pass 0 here (the ID of the 'standard' LV2 run context). The host - guarantees that this function is realtime safe iff @a context is - realtime safe. - - PLUGINS THAT VIOLATE THESE RULES MAY CAUSE CRASHES AND MEMORY LEAKS. - */ - uint32_t (*lv2_event_unref)(LV2_Event_Callback_Data callback_data, - LV2_Event* event); - -} LV2_Event_Feature; - - -#endif /* LV2_EVENT_H */ diff --git a/lv2/ns/ext/event/event.ttl b/lv2/ns/ext/event/event.ttl deleted file mode 100644 index 67285aa..0000000 --- a/lv2/ns/ext/event/event.ttl +++ /dev/null @@ -1,224 +0,0 @@ -# LV2 Event Extension -# Copyright 2008-2011 David Robillard -# -# 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. - -@prefix dcs: . -@prefix doap: . -@prefix ev: . -@prefix foaf: . -@prefix lv2: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . - - - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - foaf:mbox ; - rdfs:seeAlso . - -_:larsl - a foaf:Person ; - foaf:name "Lars Luthman" . - - - a lv2:Specification ; - doap:license ; - doap:name "LV2 Event" ; - doap:shortdesc "A port-based real-time generic event interface." ; - rdfs:seeAlso ; - doap:release [ - doap:revision "1.4" ; - doap:created "2011-11-21" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Update packaging." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2011-05-26" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add build system (for installation)." - ] , [ - rdfs:label "Convert documentation to HTML and use lv2:documentation." - ] , [ - rdfs:label "Use lv2:Specification to be discovered as an extension." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2010-11-24" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; - doap:developer , - _:larsl ; - lv2:documentation """ -

This extension defines a generic time-stamped event port type, which can be -used to create plugins that read and write real-time events, such as MIDI, -OSC, or any other type of event payload. The type(s) of event supported by -a port is defined in the data file for a plugin, for example:

-
-<http://example.org/some-plugin>
-    lv2:port [
-        a ev:EventPort, lv2:InputPort ;
-        lv2:index 0 ;
-        ev:supportsEvent <http://lv2plug.in/ns/ext/midi#MidiEvent> ;
-        lv2:symbol "midi_input" ;
-        lv2:name "MIDI input" ;
-    ] .
-
-""" . - -ev:EventPort - a rdfs:Class ; - rdfs:label "Event port" ; - rdfs:subClassOf lv2:Port ; - rdfs:comment """ -Ports of this type will be connected to a struct of type LV2_Event_Buffer, -defined in event.h. These ports contain a sequence of generic events -(possibly several types mixed in a single stream), the specific types of -which are defined by some URI in another LV2 extension. -""" . - -ev:Event - a rdfs:Class ; - rdfs:label "LV2 event" ; - rdfs:comment """ -A single generic time-stamped event. - -An ev:EventPort contains an LV2_Event_Buffer which contains a sequence -of these events. The binary format of LV2 events is defined by the -LV2_Event struct in event.h. - -Specific event types (e.g. MIDI, OSC) are defined by extensions, and should -be rdfs:subClassOf this class. -""" . - -ev:TimeStamp - a rdfs:Class ; - rdfs:label "LV2 event time stamp" ; - rdfs:comment """ -The time stamp of an Event. - -This defines the meaning of the 'frames' and 'subframes' fields of an -LV2_Event (both unsigned 32-bit integers). -""" . - -ev:FrameStamp - a rdfs:Class ; - rdfs:subClassOf ev:TimeStamp ; - rdfs:label "Audio frame time stamp" ; - rdfs:comment """ -The default time stamp unit for an LV2 event: the frames field represents -audio frames (in the sample rate passed to intantiate), and the subframes -field is 1/UINT32_MAX of a frame. -""" . - -ev:generic - a lv2:PortProperty ; - rdfs:label "Generic event port" ; - rdfs:comment """ -Indicates that this port does something meaningful for any event type -(e.g. event mixers, delays, serialisers, etc). If this property is set, hosts -should consider the port suitable for any type of event. Otherwise, hosts -should consider the port 'appropriate' only for the specific event types -listed with :supportsEvent. Note that plugins must gracefully handle unknown -event types whether or not this property is present. -""" . - -ev:supportsEvent - a rdf:Property ; - rdfs:domain lv2:Port ; - rdfs:range ev:Event ; - rdfs:label "Supports event type" ; - rdfs:comment """ -Indicates that this port supports or "understands" a certain event type. -For input ports, this means the plugin understands and does something useful -with events of this type. For output ports, this means the plugin may generate -events of this type. If the plugin never actually generates events of this type, -but might pass them through from an input, this property should not be set (use -ev:inheritsEvent for that). -Plugins with event input ports must always gracefully handle any type of event, -even if it does not 'support' it. This property should always be set for -event types the plugin understands/generates so hosts can discover plugins -appropriate for a given scenario (e.g. plugins with a MIDI input). -Hosts are not expected to consider event ports suitable for some type of -event if the relevant :supportsEvent property is not set, unless the -ev:generic property for that port is also set. -""" . - -ev:inheritsEvent - a rdf:Property ; - rdfs:domain lv2:Port ; - rdfs:range lv2:Port ; - rdfs:label "Inherits event type" ; - rdfs:comment """ -Indicates that this output port might pass through events that arrived at some -other input port (or generate an event of the same type as events arriving at -that input). The host must always check the stamp type of all outputs when -connecting an input, but this property should be set whenever it applies. -""" . - -ev:supportsTimeStamp - a rdf:Property ; - rdfs:domain lv2:Port ; - rdfs:range ev:TimeStamp ; - rdfs:label "Supports time stamp type" ; - rdfs:comment """ -Indicates that this port supports or "understands" a certain time stamp type. -Meaningful only for input ports, the host must never connect a port to an -event buffer with a time stamp type that isn't supported by the port. -""" . - -ev:generatesTimeStamp - a rdf:Property ; - rdfs:domain lv2:Port ; - rdfs:range ev:TimeStamp ; - rdfs:label "Outputs time stamp type" ; - rdfs:comment """ -Indicates that this port may output a certain time stamp type, regardless of -the time stamp type of any input ports. If the port outputs stamps based on -what type inputs are connected to, this property should not be set (use the -ev:inheritsTimeStamp property for that). Hosts MUST check the time_stamp value -of any output port buffers after a call to connect_port on ANY event input -port on the plugin. If the plugin changes the stamp_type field of an output -event buffer during a call to run(), the plugin must call the -stamp_type_changed function provided by the host in the LV2_Event_Feature -struct, if it is non-NULL. -""" . - -ev:inheritsTimeStamp - a rdf:Property ; - rdfs:domain lv2:Port ; - rdfs:range lv2:Port ; - rdfs:label "Inherits time stamp type" ; - rdfs:comment """ -Indicates that this port follows the time stamp type of an input port. -This property is not necessary, but it should be set for outputs that -base their output type on an input port so the host can make more sense -of the plugin and provide a more sensible interface. -""" . diff --git a/lv2/ns/ext/event/ext.pc.in b/lv2/ns/ext/event/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/event/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/event/manifest.ttl b/lv2/ns/ext/event/manifest.ttl deleted file mode 100644 index fa12f94..0000000 --- a/lv2/ns/ext/event/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 1 ; - lv2:microVersion 4 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/event/waf b/lv2/ns/ext/event/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/event/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/event/wscript b/lv2/ns/ext/event/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/event/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/host-info/ext.pc.in b/lv2/ns/ext/host-info/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/host-info/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/host-info/host-info.ttl b/lv2/ns/ext/host-info/host-info.ttl deleted file mode 100644 index 4f563bb..0000000 --- a/lv2/ns/ext/host-info/host-info.ttl +++ /dev/null @@ -1,117 +0,0 @@ -# LV2 Host Info Extension -# Copyright (C) 2009 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 hi: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . -@prefix owl: . -@prefix xsd: . -@prefix doap: . -@prefix foaf: . -@prefix amb: . - - a lv2:Specification ; - doap:license ; - doap:name "LV2 Host Info" ; - doap:shortdesc "A format for describing LV2 hosts." ; - doap:maintainer [ - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - rdfs:seeAlso - ] ; - lv2:documentation """ -

This specification defines various properties to represent useful information -about LV2 hosts. Currently, the primary use of this specification is to describe which -extensions are supported by a given host.

- -

The extensions supported by a host can be described like this:

-
-@prefix hi: <http://lv2plug.in/ns/ext/host-info#> .
-
-<http://example.org/some-host>
-    a hi:Host ;
-    doap:name "Foo Rack" ;
-    hi:supportsExtension [
-        hi:extension <http://example.org/some-extension> ;
-        hi:sinceVersion "1.2.0"
-    ] .
-
-""" . - - -## Core Classes / Properties - -hi:Host a rdfs:Class ; - rdfs:label "LV2 Host" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty doap:name ; - owl:someValuesFrom xsd:string ; - owl:minCardinality 1 ; - rdfs:comment "A hi:Host MUST have at least one string doap:name" - ] ; - rdfs:comment """ -An application that supports loading LV2 plugins, or performs other -LV2 related functionality. -""" . - -hi:supportsExtension a rdf:Property ; - rdfs:domain hi:Host ; - rdfs:range hi:ExtensionSupport ; - rdfs:label "supports extension" ; - rdfs:comment "Relates a Host to its ExtensionSupport" . - -hi:ExtensionSupport a rdfs:Class ; - rdfs:label "Extension Support" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty hi:sinceVersion ; - owl:someValuesFrom xsd:string ; - owl:minCardinality 1 ; - rdfs:comment """ -A hi:ExtensionSupport MUST have at least one string hi:sinceVersion -""" ] ; - rdfs:comment "A description of the support for an extension by a Host" . - -hi:extension a rdf:Property ; - rdfs:domain hi:ExtensionSupport ; - rdfs:range lv2:Specification ; - rdfs:label "extension" ; - rdfs:comment "Indicates the extension supported by a host." . - -hi:sinceVersion a rdf:Property ; - rdfs:domain hi:ExtensionSupport ; - rdfs:range xsd:string ; - rdfs:label "since version" ; - rdfs:comment """ -The initial version of a host which supported an extension. -This property MUST always be given -""" . - -hi:untilVersion a rdf:Property ; - rdfs:domain hi:ExtensionSupport ; - rdfs:range xsd:string ; - rdfs:label "until version" ; - rdfs:comment """ -The final version of a host which supported an extension. This property can -be used if support for an extension was discontinued in a host for some reason. -""" . - diff --git a/lv2/ns/ext/host-info/manifest.ttl b/lv2/ns/ext/host-info/manifest.ttl deleted file mode 100644 index ae1e097..0000000 --- a/lv2/ns/ext/host-info/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/host-info/waf b/lv2/ns/ext/host-info/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/host-info/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/host-info/wscript b/lv2/ns/ext/host-info/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/host-info/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/instance-access/ext.pc.in b/lv2/ns/ext/instance-access/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/instance-access/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/instance-access/instance-access.h b/lv2/ns/ext/instance-access/instance-access.h deleted file mode 100644 index 7e18ee4..0000000 --- a/lv2/ns/ext/instance-access/instance-access.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - LV2 Instance Access Extension - Copyright 2008-2011 David Robillard - - 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_INSTANCE_ACCESS_H -#define LV2_INSTANCE_ACCESS_H - -#define LV2_INSTANCE_ACCESS_URI "http://lv2plug.in/ns/ext/instance-access" - - -/** @file - * C header for the LV2 Instance Access extension - * . - * - * This extension defines a method for (e.g.) plugin UIs to get a direct - * handle to an LV2 plugin instance (LV2_Handle), if possible. - * - * To support this feature the host must pass an LV2_Feature struct to the - * UI instantiate method with URI "http://lv2plug.in/ns/ext/instance-access" - * and data pointed directly to the LV2_Handle of the plugin instance. - */ - - -#endif /* LV2_INSTANCE_ACCESS_H */ - diff --git a/lv2/ns/ext/instance-access/instance-access.ttl b/lv2/ns/ext/instance-access/instance-access.ttl deleted file mode 100644 index 14eb732..0000000 --- a/lv2/ns/ext/instance-access/instance-access.ttl +++ /dev/null @@ -1,80 +0,0 @@ -# LV2 Instance Access Extension -# Copyright 2008-2011 David Robillard -# -# 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. - -@prefix dcs: . -@prefix doap: . -@prefix foaf: . -@prefix ia: . -@prefix lv2: . -@prefix lv2ev: . -@prefix rdf: . -@prefix rdfs: . - - - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - foaf:mbox ; - rdfs:seeAlso . - - - a lv2:Specification ; - doap:license ; - doap:name "LV2 Instance Access" ; - doap:shortdesc "Provides access to the LV2_Handle of a plugin." ; - doap:developer ; - doap:release [ - doap:revision "1.4" ; - doap:created "2011-11-21" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Update packaging." - ] , [ - rdfs:label "Improve documentation." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2011-05-26" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add build system for installation." - ] , [ - rdfs:label "Switch to ISC license." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2010-10-04" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; - lv2:documentation """ -

This extension defines a feature which allows plugin UIs to get a direct -handle to an LV2 plugin instance (LV2_Handle), if possible.

- -

To support this feature the host must pass an LV2_Feature struct to the UI -instantiate method with URI LV2_INSTANCE_ACCESS_URI and data pointed directly -to the LV2_Handle of the plugin instance.

-""" . diff --git a/lv2/ns/ext/instance-access/manifest.ttl b/lv2/ns/ext/instance-access/manifest.ttl deleted file mode 100644 index d6412c5..0000000 --- a/lv2/ns/ext/instance-access/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 1 ; - lv2:microVersion 4 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/instance-access/waf b/lv2/ns/ext/instance-access/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/instance-access/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/instance-access/wscript b/lv2/ns/ext/instance-access/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/instance-access/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/log/ext.pc.in b/lv2/ns/ext/log/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/log/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/log/log.h b/lv2/ns/ext/log/log.h deleted file mode 100644 index c139a27..0000000 --- a/lv2/ns/ext/log/log.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - Copyright 2012 David Robillard - - 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. -*/ - -/** - @file log.h C header for the LV2 Log extension - . -*/ - -#ifndef LV2_LOG_H -#define LV2_LOG_H - -#define LV2_LOG_URI "http://lv2plug.in/ns/ext/log" -#define LV2_LOG_LOG_URI LV2_LOG_URI "#log" -#define LV2_LOG_ERROR_URI LV2_LOG_URI "#Error" -#define LV2_LOG_INFO_URI LV2_LOG_URI "#Info" -#define LV2_LOG_WARN_URI LV2_LOG_URI "#Warn" - -#include - -#include "lv2/lv2plug.in/ns/ext/urid/urid.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __GNUC__ -/** Allow type checking of printf-like functions. */ -# define LV2_LOG_FUNC(fmt, arg1) __attribute__((format(printf, fmt, arg1))) -#else -# define LV2_LOG_FUNC -#endif - -/** - Opaque data to host data for LV2_Log_Log. -*/ -typedef void* LV2_Log_Handle; - -/** - Log (http://lv2plug.in/ns/ext/log#log). -*/ -typedef struct _LV2_Log { - /** - Opaque pointer to host data. - - This MUST be passed to methods in this struct henever they are called. - Otherwise, it must not be interpreted in any way. - */ - LV2_Log_Handle handle; - - /** - Log a message, passing format parameters directly. - - The API of this function matches that of the standard C printf - function, except for the addition of the first two parameters. - */ - LV2_LOG_FUNC(3, 4) - int (*printf)(LV2_Log_Handle handle, - LV2_URID level, - const char* fmt, ...); - - /** - Log a message, passing format parameters in a va_list. - - The API of this function matches that of the standard C vprintf - function, except for the addition of the first two parameters. - */ - LV2_LOG_FUNC(3, 0) - int (*vprintf)(LV2_Log_Handle handle, - LV2_URID level, - const char* fmt, - va_list ap); -} LV2_Log_Log; - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* LV2_LOG_H */ diff --git a/lv2/ns/ext/log/log.ttl b/lv2/ns/ext/log/log.ttl deleted file mode 100644 index 567333f..0000000 --- a/lv2/ns/ext/log/log.ttl +++ /dev/null @@ -1,74 +0,0 @@ -# LV2 Log Extension -# Copyright 2012 David Robillard -# -# 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. - -@prefix doap: . -@prefix foaf: . -@prefix log: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - a lv2:Specification ; - doap:name "LV2 Log" ; - doap:shortdesc "A feature for writing log messages." ; - doap:maintainer [ - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - rdfs:seeAlso - ] ; - lv2:documentation """ - -

This extension defines a feature, LV2_Log_Log, which allows plugins to print -messages to logs implemented by the host with an API much like the standard C -printf functions. This allows, for example, plugin logs to be nicely presented -to the user in a graphical user interface.

- -

Different log levels (e.g. error or information) are -defined by URI and passed as an LV2_URID. Thus, the possible number of log -levels is unlimited, but implementations SHOULD use the levels defined in this -extension unless they have a special reason to do otherwise.

-""" . - -log:Level - a rdfs:Class ; - lv2:documentation """ -

A log level. Subclasses of this class can be passed to LV2_Log_Log methods -to describe the nature of the log message.

""" . - -log:Error - a rdfs:Class ; - rdfs:subClassOf log:Level ; - rdfs:comment "An error" . - -log:Info - a rdfs:Class ; - rdfs:subClassOf log:Level ; - rdfs:comment "An informative message" . - -log:Warn - a rdfs:Class ; - rdfs:subClassOf log:Level ; - rdfs:comment "A warning" . - -log:log - a lv2:Feature ; - lv2:documentation """ -

A feature which plugins may use to log messages. To support this feature, -the host must pass an LV2_Feature to LV2_Descriptor::instantiate() with URI -LV2_LOG_LOG_URI and data pointed to an instance of LV2_Log_Log.

-""" . diff --git a/lv2/ns/ext/log/manifest.ttl b/lv2/ns/ext/log/manifest.ttl deleted file mode 100644 index 7d00e2e..0000000 --- a/lv2/ns/ext/log/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/log/waf b/lv2/ns/ext/log/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/log/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/log/wscript b/lv2/ns/ext/log/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/log/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/midi/ext.pc.in b/lv2/ns/ext/midi/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/midi/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/midi/manifest.ttl b/lv2/ns/ext/midi/manifest.ttl deleted file mode 100644 index a8e194e..0000000 --- a/lv2/ns/ext/midi/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 1 ; - lv2:microVersion 4 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/midi/midi.ttl b/lv2/ns/ext/midi/midi.ttl deleted file mode 100644 index 64edf0e..0000000 --- a/lv2/ns/ext/midi/midi.ttl +++ /dev/null @@ -1,115 +0,0 @@ -# LV2 MIDI Extension -# Copyright 2008-2011 David Robillard -# Copyright 2006 Lars Luthman -# -# 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. - -@prefix dcs: . -@prefix atom: . -@prefix doap: . -@prefix ev: . -@prefix foaf: . -@prefix lv2: . -@prefix midi: . -@prefix rdfs: . - - - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - foaf:mbox ; - rdfs:seeAlso . - -_:larsl - a foaf:Person ; - foaf:name "Lars Luthman" ; - foaf:mbox . - - - a lv2:Specification ; - doap:license ; - doap:name "LV2 MIDI" ; - doap:shortdesc "A data type for raw MIDI." ; - doap:maintainer ; - doap:developer _:larsl ; - doap:release [ - doap:revision "1.4" ; - doap:created "2011-11-21" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Update packaging." - ] , [ - rdfs:label "Improve documentation." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2011-05-26" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add build system for installation." - ] , [ - rdfs:label "Switch to ISC license." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2010-10-04" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; - lv2:documentation """ -

This extension defines a data type for a MIDI message, midi:MidiEvent, which -is normalized for fast and convenient processing by plugins. It is -particularly useful as the payload of an Atom or Event.

-""" . - -midi:MidiEvent - a rdfs:Class ; - rdfs:label "LV2 MIDI message." ; - rdfs:subClassOf ev:Event , - atom:Atom ; - lv2:documentation """ -

A single raw MIDI message (i.e. a sequence of bytes).

- -

This is equivalent to a standard MIDI messages, except with the following -restrictions to simplify handling:

-
    -
  • Running status is not allowed, every message must have its own status - byte.
  • - -
  • Note On messages with velocity 0 are not allowed. These messages are - equivalent to Note Off in standard MIDI streams, but here only proper Note - Off messages are allowed.
  • - -
  • "Realtime messages" (status bytes 0xF8 to 0xFF) are allowed, but may - not occur inside other messages like they can in standard MIDI streams.
  • - -
  • All messages are complete valid MIDI messages. This means, for example, - that only the first byte in each event (the status byte) may have the eighth - bit set, that Note On and Note Off events are always 3 bytes long, etc. - Where messages are communicated, the writer is responsible for writing valid - messages, and the reader may assume that all events are valid.
  • -
-""" . diff --git a/lv2/ns/ext/midi/waf b/lv2/ns/ext/midi/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/midi/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/midi/wscript b/lv2/ns/ext/midi/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/midi/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/osc/ext.pc.in b/lv2/ns/ext/osc/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/osc/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/osc/lv2_osc.c b/lv2/ns/ext/osc/lv2_osc.c deleted file mode 100644 index afea2c9..0000000 --- a/lv2/ns/ext/osc/lv2_osc.c +++ /dev/null @@ -1,238 +0,0 @@ -/* LV2 OSC Messages Extension - * Copyright (C) 2007-2009 David Robillard - * - * This program 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 3 of the License, or - * (at your option) any later version. - * - * This program 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, see . - */ - -#include -#include -#include -#include -#include "lv2_osc.h" -#include "lv2_osc_print.h" - -/*#ifndef BIG_ENDIAN - #ifndef LITTLE_ENDIAN - #warning This code requires BIG_ENDIAN or LITTLE_ENDIAN to be defined - #warning Assuming little endian. THIS MAY BREAK HORRIBLY! - #endif -#endif*/ - -#define lv2_osc_swap32(x) \ -({ \ - uint32_t __x = (x); \ - ((uint32_t)( \ - (((uint32_t)(__x) & (uint32_t)0x000000ffUL) << 24) | \ - (((uint32_t)(__x) & (uint32_t)0x0000ff00UL) << 8) | \ - (((uint32_t)(__x) & (uint32_t)0x00ff0000UL) >> 8) | \ - (((uint32_t)(__x) & (uint32_t)0xff000000UL) >> 24) )); \ -}) - -#define lv2_osc_swap64(x) \ -({ \ - uint64_t __x = (x); \ - ((uint64_t)( \ - (uint64_t)(((uint64_t)(__x) & (uint64_t)0x00000000000000ffULL) << 56) | \ - (uint64_t)(((uint64_t)(__x) & (uint64_t)0x000000000000ff00ULL) << 40) | \ - (uint64_t)(((uint64_t)(__x) & (uint64_t)0x0000000000ff0000ULL) << 24) | \ - (uint64_t)(((uint64_t)(__x) & (uint64_t)0x00000000ff000000ULL) << 8) | \ - (uint64_t)(((uint64_t)(__x) & (uint64_t)0x000000ff00000000ULL) >> 8) | \ - (uint64_t)(((uint64_t)(__x) & (uint64_t)0x0000ff0000000000ULL) >> 24) | \ - (uint64_t)(((uint64_t)(__x) & (uint64_t)0x00ff000000000000ULL) >> 40) | \ - (uint64_t)(((uint64_t)(__x) & (uint64_t)0xff00000000000000ULL) >> 56) )); \ -}) - - -/** Pad a size to a multiple of 32 bits */ -inline static uint32_t -lv2_osc_pad_size(uint32_t size) -{ - return size + 3 - ((size-1) % 4); -} - - -inline static uint32_t -lv2_osc_string_size(const char *s) -{ - return lv2_osc_pad_size((uint32_t)strlen(s) + 1); -} - - -static inline uint32_t -lv2_osc_blob_size(const void* blob) -{ - return sizeof(uint32_t) + lv2_osc_pad_size(*((uint32_t*)blob)); -} - - -uint32_t -lv2_osc_arg_size(char type, const LV2_OSC_Argument* arg) -{ - switch (type) { - case 'c': - case 'i': - case 'f': - case 'S': // Symbol (URI-mapped integer) - return 4; - - case 'h': - case 'd': - return 8; - - case 's': - return lv2_osc_string_size(&arg->s); - - case 'b': - return lv2_osc_blob_size(&arg->b); - - default: - fprintf(stderr, "Warning: unknown OSC type '%c'.", type); - return 0; - } -} - - -void -lv2_osc_argument_swap_byte_order(char type, LV2_OSC_Argument* arg) -{ - switch (type) { - case 'i': - case 'f': - case 'b': - case 'c': - *(int32_t*)arg = lv2_osc_swap32(*(int32_t*)arg); - break; - - case 'h': - case 'd': - *(int64_t*)arg = lv2_osc_swap64(*(int64_t*)arg); - break; - } -} - - -/** Convert a message from network byte order to host byte order. */ -void -lv2_osc_message_swap_byte_order(LV2_OSC_Event* msg) -{ - const char* const types = lv2_osc_get_types(msg); - - for (uint32_t i=0; i < msg->argument_count; ++i) - lv2_osc_argument_swap_byte_order(types[i], lv2_osc_get_argument(msg, i)); -} - - -/** Not realtime safe, returned value must be free()'d by caller. */ -LV2_OSC_Event* -lv2_osc_message_new(const char* path, const char* types, ...) -{ - /* FIXME: path only */ - - LV2_OSC_Event* result = malloc(sizeof(LV2_OSC_Event) - + 4 + lv2_osc_string_size(path)); - - const uint32_t path_size = lv2_osc_string_size(path); - result->data_size = path_size + 4; // 4 for types - result->argument_count = 0; - result->types_offset = lv2_osc_string_size(path) + 1; - (&result->data)[result->types_offset - 1] = ','; - (&result->data)[result->types_offset] = '\0'; - - memcpy(&result->data, path, strlen(path) + 1); - - return result; -} - - -/** Create a new LV2_OSC_Event from a raw OSC message. - * - * If \a out_buf is NULL, new memory will be allocated. Otherwise the returned - * value will be equal to buf, unless there is insufficient space in which - * case NULL is returned. - */ -LV2_OSC_Event* -lv2_osc_message_from_raw(uint32_t out_buf_size, - void* out_buf, - uint32_t raw_msg_size, - void* raw_msg) -{ - const uint32_t message_header_size = (sizeof(uint32_t) * 4); - - const uint32_t path_size = lv2_osc_string_size((char*)raw_msg); - const uint32_t types_len = strlen((char*)(raw_msg + path_size + 1)); - uint32_t index_size = types_len * sizeof(uint32_t); - - if (out_buf == NULL) { - out_buf_size = message_header_size + index_size + raw_msg_size; - out_buf = malloc((size_t)out_buf_size); - } else if (out_buf && out_buf_size < message_header_size + raw_msg_size) { - return NULL; - } - - LV2_OSC_Event* write_loc = (LV2_OSC_Event*)(out_buf); - write_loc->argument_count = types_len; - write_loc->data_size = index_size + raw_msg_size; - - // Copy raw message - memcpy(&write_loc->data + index_size, raw_msg, raw_msg_size); - - write_loc->types_offset = index_size + path_size + 1; - const char* const types = lv2_osc_get_types(write_loc); - - // Calculate/Write index - uint32_t args_base_offset = write_loc->types_offset + lv2_osc_string_size(types) - 1; - uint32_t arg_offset = 0; - - for (uint32_t i=0; i < write_loc->argument_count; ++i) { - ((uint32_t*)&write_loc->data)[i] = args_base_offset + arg_offset; - const LV2_OSC_Argument* const arg = (LV2_OSC_Argument*)(&write_loc->data + args_base_offset + arg_offset); - // Special case because size is still big-endian -#ifndef BIG_ENDIAN - if (types[i] == 'b') // special case because size is still big-endian - arg_offset += lv2_osc_swap32(*((int32_t*)arg)); - else -#endif - arg_offset += lv2_osc_arg_size(types[i], arg); - } - - /*printf("Index:\n"); - for (uint32_t i=0; i < write_loc->argument_count; ++i) { - printf("%u ", ((uint32_t*)&write_loc->data)[i]); - } - printf("\n"); - - printf("Data:\n"); - for (uint32_t i=0; i < (write_loc->argument_count * 4) + size; ++i) { - printf("%3u", i % 10); - } - printf("\n"); - for (uint32_t i=0; i < (write_loc->argument_count * 4) + size; ++i) { - char c = *(((char*)&write_loc->data) + i); - if (c >= 32 && c <= 126) - printf("%3c", c); - else - printf("%3d", (int)c); - } - printf("\n");*/ - - // Swap to host byte order if necessary -#ifndef BIG_ENDIAN - lv2_osc_message_swap_byte_order(write_loc); -#endif - - printf("Created message:\n"); - lv2_osc_message_print(write_loc); - - return write_loc; -} diff --git a/lv2/ns/ext/osc/lv2_osc_print.c b/lv2/ns/ext/osc/lv2_osc_print.c deleted file mode 100644 index 5282d46..0000000 --- a/lv2/ns/ext/osc/lv2_osc_print.c +++ /dev/null @@ -1,66 +0,0 @@ -/* LV2 OSC Messages Extension - Pretty printing methods - * Copyright (C) 2007-2009 David Robillard - * - * This program 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 3 of the License, or - * (at your option) any later version. - * - * This program 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, see . - */ - -#include -#include "lv2_osc_print.h" - -void -lv2_osc_argument_print(char type, const LV2_OSC_Argument* arg) -{ - int32_t blob_size; - - switch (type) { - case 'c': - printf("%c", arg->c); break; - case 'i': - printf("%d", arg->i); break; - case 'f': - printf("%f", arg->f); break; - case 'h': - printf("%ld", arg->h); break; - case 'd': - printf("%f", arg->d); break; - case 's': - printf("\"%s\"", &arg->s); break; - /*case 'S': - printf("\"%s\"", &arg->S); break;*/ - case 'b': - blob_size = *((int32_t*)arg); - printf("{ "); - for (int32_t i=0; i < blob_size; ++i) - printf("%X, ", (&arg->b)[i+4]); - printf(" }"); - break; - default: - printf("?"); - } -} - - -void -lv2_osc_print(const LV2_OSC_Event* msg) -{ - const char* const types = lv2_osc_get_types(msg); - - printf("%s (%s) ", lv2_osc_get_path(msg), types); - for (uint32_t i=0; i < msg->argument_count; ++i) { - lv2_osc_argument_print(types[i], lv2_osc_get_argument(msg, i)); - printf(" "); - } - printf("\n"); -} - diff --git a/lv2/ns/ext/osc/lv2_osc_test.c b/lv2/ns/ext/osc/lv2_osc_test.c deleted file mode 100644 index 3f76d41..0000000 --- a/lv2/ns/ext/osc/lv2_osc_test.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include -#include -#include -#include "lv2_osc.h" -#include "lv2_osc_print.h" - -int -main() -{ - lo_message lo_msg = lo_message_new(); - //lo_message_add_symbol(lo_msg, "a_sym"); - lo_message_add_string(lo_msg, "Hello World"); - lo_message_add_char(lo_msg, 'a'); - lo_message_add_int32(lo_msg, 1234); - lo_message_add_float(lo_msg, 0.1234); - lo_message_add_int64(lo_msg, 5678); - lo_message_add_double(lo_msg, 0.5678); - - - /*unsigned char blob_data[] = { 0,1,2,3,4,5,6,7,8,9 }; - lo_blob blob = lo_blob_new(10, blob_data); - lo_message_add_blob(lo_msg, blob);*/ - - /* Leaks like a sieve */ - - size_t raw_msg_size = 0; - void* raw_msg = lo_message_serialise(lo_msg, "/foo/bar", NULL, &raw_msg_size); - - LV2Message* msg = lv2_osc_message_from_raw(0.0, 0, NULL, raw_msg_size, raw_msg); - assert(msg); - - LV2OSCBuffer* buf = lv2_osc_buffer_new(1024); - - int ret = lv2_osc_buffer_append_message(buf, msg); - if (ret) - fprintf(stderr, "Message append failed: %s", strerror(ret)); - - lo_message lo_msg_2 = lo_message_new(); - lo_message_add_string(lo_msg_2, "Another message"); - - raw_msg = lo_message_serialise(lo_msg_2, "/baz", NULL, &raw_msg_size); - - msg = lv2_osc_message_from_raw(0.0, 0, NULL, raw_msg_size, raw_msg); - assert(msg); - - ret = lv2_osc_buffer_append_message(buf, msg); - if (ret) - fprintf(stderr, "Message append failed: %s", strerror(ret)); - - printf("\nBuffer contents:\n\n"); - lv2_osc_buffer_print(buf); - - return 0; -} diff --git a/lv2/ns/ext/osc/manifest.ttl b/lv2/ns/ext/osc/manifest.ttl deleted file mode 100644 index 7209b05..0000000 --- a/lv2/ns/ext/osc/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/osc/osc-print.h b/lv2/ns/ext/osc/osc-print.h deleted file mode 100644 index ceebbf7..0000000 --- a/lv2/ns/ext/osc/osc-print.h +++ /dev/null @@ -1,42 +0,0 @@ -/* LV2 OSC Messages Extension - Pretty printing methods - * Copyright (C) 2007-2009 David Robillard - * - * This program 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 3 of the License, or - * (at your option) any later version. - * - * This program 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, see . - */ - -/** @file - * Helper functions for printing LV2 OSC messages as defined by the - * LV2 OSC extension . - */ - -#ifndef LV2_OSC_PRINT_H -#define LV2_OSC_PRINT_H - -#include "lv2/lv2plug.in/ns/ext/osc/osc.h" - -#ifdef __cplusplus -extern "C" { -#endif - -void -lv2_osc_argument_print(char type, const LV2_OSC_Argument* arg); - -void -lv2_osc_message_print(const LV2_OSC_Event* msg); - -#ifdef __cplusplus -} -#endif - -#endif /* LV2_OSC_PRINT_H */ diff --git a/lv2/ns/ext/osc/osc.h b/lv2/ns/ext/osc/osc.h deleted file mode 100644 index 05e39cc..0000000 --- a/lv2/ns/ext/osc/osc.h +++ /dev/null @@ -1,119 +0,0 @@ -/* LV2 OSC Messages Extension - * Copyright (C) 2007-2009 David Robillard - * - * 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_OSC_H -#define LV2_OSC_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** @file - * C header for the LV2 OSC extension . - * This extension defines a format for (raw) OSC messages/events. - */ - - -/** Argument (in a message). - * - * The name of the element in this union directly corresponds to the OSC - * type tag character in LV2_Event::types. - */ -typedef union { - /* Standard OSC types */ - int32_t i; /**< 32 bit signed integer */ - float f; /**< 32 bit IEEE-754 floating point number ("float") */ - char s; /**< Standard C, NULL terminated string */ - uint8_t b; /**< Blob (int32 size then size bytes padded to 32 bits) */ - - /* "Nonstandard" OSC types (defined in the OSC standard) */ - int64_t h; /* 64 bit signed integer */ - // t /* OSC-timetag */ - double d; /* 64 bit IEEE 754 floating point number ("double") */ - // S /* Symbol, represented as an OSC-string */ - int32_t c; /* Character, represented as a 32-bit integer */ - // r /* 32 bit RGBA color */ - // m /* 4 byte MIDI message. Bytes from MSB to LSB are: port id, status byte, data1, data2 */ - // T /* True. No bytes are allocated in the argument data. */ - // F /* False. No bytes are allocated in the argument data. */ - // N /* Nil. No bytes are allocated in the argument data. */ - // I /* Infinitum. No bytes are allocated in the argument data. */ - // [ /* The beginning of an array. */ - // ] /* The end of an array. */ -} LV2_OSC_Argument; - - - -/** Message. - * - * This is an OSC message at heart, but with some additional cache information - * to allow fast access to parameters. This is the payload of an LV2_Event, - * time stamp and size (being generic) are in the containing header. - */ -typedef struct { - uint32_t data_size; /**< Total size of data, in bytes */ - uint32_t argument_count; /**< Number of arguments in data */ - uint32_t types_offset; /**< Offset of types string in data */ - - /** Take the address of this member to get a pointer to the remaining data. - * - * Contents are an argument index: - * uint32_t argument_index[argument_count] - * - * followed by a standard OSC message: - * char path[path_length] (padded OSC string) - * char types[argument_count] (padded OSC string) - * void data[data_size] - */ - char data; - -} LV2_OSC_Event; - -LV2_OSC_Event* lv2_osc_event_new(const char* path, const char* types, ...); - -LV2_OSC_Event* lv2_osc_event_from_raw(uint32_t out_buf_size, void* out_buf, - uint32_t raw_msg_size, void* raw_msg); - -static inline uint32_t lv2_osc_get_osc_message_size(const LV2_OSC_Event* msg) - { return (msg->argument_count * sizeof(char) + 1) + msg->data_size; } - -static inline const void* lv2_osc_get_osc_message(const LV2_OSC_Event* msg) - { return (const void*)(&msg->data + (sizeof(uint32_t) * msg->argument_count)); } - -static inline const char* lv2_osc_get_path(const LV2_OSC_Event* msg) - { return (const char*)(&msg->data + (sizeof(uint32_t) * msg->argument_count)); } - -static inline const char* lv2_osc_get_types(const LV2_OSC_Event* msg) - { return (const char*)(&msg->data + msg->types_offset); } - -static inline LV2_OSC_Argument* lv2_osc_get_argument(const LV2_OSC_Event* msg, uint32_t i) - { return (LV2_OSC_Argument*)(&msg->data + ((uint32_t*)&msg->data)[i]); } - -/* -int lv2_osc_buffer_append_message(LV2_Event_Buffer* buf, LV2_Event* msg); -int lv2_osc_buffer_append(LV2_Event_Buffer* buf, double time, const char* path, const char* types, ...); -void lv2_osc_buffer_compact(LV2_Event_Buffer* buf); -*/ - -#ifdef __cplusplus -} -#endif - -#endif /* LV2_OSC_H */ diff --git a/lv2/ns/ext/osc/osc.ttl b/lv2/ns/ext/osc/osc.ttl deleted file mode 100644 index c83a69d..0000000 --- a/lv2/ns/ext/osc/osc.ttl +++ /dev/null @@ -1,39 +0,0 @@ -# LV2 OSC Messages Extension -# 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 osc: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . -@prefix doap: . -@prefix foaf: . - - a lv2:Specification ; - doap:license ; - doap:name "LV2 OSC Events" ; - doap:shortdesc "A data type for raw OSC." ; - doap:maintainer [ - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - rdfs:seeAlso - ] . diff --git a/lv2/ns/ext/osc/waf b/lv2/ns/ext/osc/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/osc/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/osc/wscript b/lv2/ns/ext/osc/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/osc/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/parameter/ext.pc.in b/lv2/ns/ext/parameter/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/parameter/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/parameter/manifest.ttl b/lv2/ns/ext/parameter/manifest.ttl deleted file mode 100644 index d7af7ff..0000000 --- a/lv2/ns/ext/parameter/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/parameter/parameter.ttl b/lv2/ns/ext/parameter/parameter.ttl deleted file mode 100644 index e43cc48..0000000 --- a/lv2/ns/ext/parameter/parameter.ttl +++ /dev/null @@ -1,111 +0,0 @@ -# LV2 Parameter Extension -# Copyright (C) 2010 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 atom: . -@prefix doap: . -@prefix foaf: . -@prefix lv2: . -@prefix param: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - a lv2:Specification ; - doap:name "LV2 Parameter" ; - doap:shortdesc "Dynamic message-controlled LV2 plugin parameters." ; - doap:maintainer [ - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - rdfs:seeAlso - ] ; - rdfs:comment """ -""" . - - -param:Parameter a rdfs:Class ; a lv2:Resource ; - rdfs:label "Parameter" ; - lv2:documentation """ -

A parameter on an LV2 plugin. Parameters can be manipulated to alter -the behaviour or output of a plugin. Unlike lv2:ControlPort:

-
    -
  • A parameter may have any data type
  • -
  • Parameters can be dynamically added or removed
  • -
  • Parameter values can be manipulated by the plugin
  • -
- -

Note that plugins are not required to support this potential functionality, -parameters can be used to provide a basic LADSPA-like set of floating point -parameters in a more extensible manner.

- -

Parameters are essentially controls that are not 1:1 associated with ports -(manipulation of parameters can be accomplished by e.g. sending messages -to a command port).

-""" . - - -param:supportsType a rdf:Property ; - rdfs:domain param:Parameter ; - rdfs:range atom:Atom ; - rdfs:label "supports type" ; - lv2:documentation """ -

Indicates that a Parameter has values of a particular type. A Parameter may -support many types. Parameter values are always LV2 Atoms as defined by the LV2 Atom Extension Any type of LV2 -Atom may be used as a parameter value.

-""" . - - -param:value a rdf:Property ; - rdfs:domain param:Parameter ; - rdfs:label "value" ; - rdfs:comment """ -Indicates that a Parameter has a certain value. A Parameter has at most -one value at any given time. The type of the value specified must be -one of the types specified by param:supportsType. When used in a plugin -data file this property specifies the default value of a parameter. -""" . - - -param:minimum a rdf:Property ; - rdfs:domain param:Parameter ; - rdfs:label "minimum" ; - rdfs:comment """ -Specifies the minimum value of a Parameter (for Parameters with comparable -types for which this makes sense). The type of the minimum must be one of -the types specified by param:supportsType. The host MAY attempt to set a -parameter to any value (of a legal type), i.e. the plugin MUST NOT assume -attempts to change a parameter are within range and SHOULD clamp accordingly. -""" . - - -param:maximum a rdf:Property ; - rdfs:domain param:Parameter ; - rdfs:label "maximum" ; - rdfs:comment """ -Specifies the maximum value of a Parameter (for Parameters with comparable -types for which this makes sense). The type of the maximum must be one of -the types specified by param:supportsType. The host MAY attempt to set a -parameter to any value (of a legal type), i.e. the plugin MUST NOT assume -attempts to change a parameter are within range and SHOULD clamp accordingly. -""" . - diff --git a/lv2/ns/ext/parameter/waf b/lv2/ns/ext/parameter/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/parameter/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/parameter/wscript b/lv2/ns/ext/parameter/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/parameter/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/port-groups/ext.pc.in b/lv2/ns/ext/port-groups/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/port-groups/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/port-groups/manifest.ttl b/lv2/ns/ext/port-groups/manifest.ttl deleted file mode 100644 index ff4205b..0000000 --- a/lv2/ns/ext/port-groups/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/port-groups/port-groups.ttl b/lv2/ns/ext/port-groups/port-groups.ttl deleted file mode 100644 index edf5359..0000000 --- a/lv2/ns/ext/port-groups/port-groups.ttl +++ /dev/null @@ -1,490 +0,0 @@ -# LV2 Port Groups Extension -# Copyright 2009-2011 David Robillard -# Copyright 2008-2009 Lars Luthman -# -# 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. - -@prefix pg: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . -@prefix owl: . -@prefix xsd: . -@prefix doap: . -@prefix foaf: . -@prefix amb: . - - a lv2:Specification ; - doap:license ; - doap:name "LV2 Port Groups" ; - doap:shortdesc "Multi-channel groups of LV2 ports." ; - rdfs:comment "Defines semantic groupings of LV2 ports" ; - doap:maintainer [ - a foaf:Person ; - foaf:name "Lars Luthman" ; - foaf:mbox - ] , [ - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - rdfs:seeAlso - ] . - - -## Core Classes / Properties - -pg:Group a rdfs:Class ; - rdfs:label "LV2 Port Group" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty lv2:symbol ; - owl:someValuesFrom xsd:string ; - owl:cardinality 1 ; - rdfs:comment """ -A pg:Group MUST have exactly one string lv2:symbol. This symbol must be -unique according to the same rules as the lv2:symbol for an lv2:Port, where -group symbols and port symbols reside in the same namespace. In other words, -a group on a plugin MUST NOT have the same symbol as another group or a port -on that plugin. Rationale: Hosts or bindings may find it useful to construct -an identifier to refer to groups for the same reasons this is useful for ports. -""" - ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty pg:hasRole ; - owl:someValuesFrom pg:RoleAssignment ; - owl:minCardinality 1 ; - rdfs:comment "A Group MUST have at least one role assignment" - ] ; - rdfs:comment """ -A grouping of ports that can be logically considered a single "stream", e.g. -two audio ports in a group may form a stereo stream. The pg:source predicate -can also be used to describe this correspondence between separate ports/groups. -""" . - -pg:index a rdf:Property ; - rdfs:domain pg:RoleAssignment ; - rdfs:range xsd:nonNegativeInteger ; - rdfs:label "index" ; - rdfs:comment "Index of a role within some group" . - -pg:RoleAssignment a rdfs:Class ; - rdfs:label "Role Assignment" ; - rdfs:comment "A numbered role within some Group." ; - rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty pg:index ; - owl:cardinality 1 ; - rdfs:comment """ -A RoleAssignment MUST have exactly one index. -""" ] ; - rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty pg:role ; - owl:cardinality 1 ; - rdfs:comment """ -A RoleAssignment MUST have exactly one role. -""" ] ; - rdfs:comment """ -All group definitions MUST define the order of channels. Note that this -does not have anything to do with port indices, this information is only -defined here for use by other extensions. For simply assigning groups -and roles to a basic LV2 plugin, index is irrelevant. -""" . - -pg:hasRole a rdf:Property ; - rdfs:domain pg:Group ; - rdfs:range pg:Role ; - rdfs:label "Has port with role" ; - rdfs:comment """ -Indicates that a group always has a port with a particular role. -""" . - -pg:mayHaveRole a rdf:Property ; - rdfs:domain pg:Group ; - rdfs:range pg:Role ; - rdfs:label "May have port with role" ; - rdfs:comment """ -Indicates that a group may have a port with a particular role. -""" . - -pg:sideChainOf a rdf:Property ; - rdfs:domain pg:Group , lv2:Port ; - rdfs:range pg:Group , lv2:Port ; - rdfs:label "Side-chain of" ; - rdfs:comment """ -Indicates that this port or group should be considered a "side chain" of -some other port or group. The precise definition of "side chain" depends -on the plugin, but in general this group should be considered a modifier to -some other group, rather than an independent input itself. -""" . - -pg:subGroupOf a rdf:Property ; - rdfs:domain pg:Group ; - rdfs:range pg:Group ; - rdfs:label "Sub-group of" ; - rdfs:comment """ -Indicates that this group is a child of another group. This property has -no meaning with respect to plugin execution, but the host may find this -information useful (e.g. to provide a compact user interface). Note that -all groups on a plugin MUST have a unique symbol with respect to the plugin -as documented for pg:Group, i.e. sub-groups must have a unique symbol among -all groups and ports on the plugin. -""" . - -pg:source a rdf:Property ; - rdfs:domain pg:Group , lv2:Port ; - rdfs:range pg:Group , lv2:Port ; - rdfs:label "Source group" ; - rdfs:comment """ -Indicates that this port or group should be considered the "result" of -some other port or group. This property only makes sense on groups with -outputs when the source is a group with inputs. This can be used to convey -a relationship between corresponding input and output groups with different -types, e.g. a mono->stereo plugin. -""" . - -pg:mainGroup a rdf:Property ; - rdfs:domain lv2:Plugin ; - rdfs:range pg:Group ; - rdfs:label "Main port group" ; - rdfs:comment """ -Indicates that this group should be considered the "main" inputs/outputs of -the plugin, e.g. it probably makes sense to just connect main groups and set -some controls. A plugin MUST NOT have more than one :mainGroup property. -High-level hosts that simply want to insert an plugin in a given stream -should use this property to determine where the plugin 'fits'. -""" . - -pg:inGroup a rdf:Property ; - rdfs:domain lv2:Port ; - rdfs:range pg:Group ; - rdfs:label "In port group" ; - rdfs:comment """ -Indicates that this port is a part of a group of ports on the plugin. -Ports that have a meaningful "role" that may be useful to hosts SHOULD also -have a :role property, otherwise ports in the group have no meaningful order. -""" . - -pg:Role a rdfs:Class ; - rdfs:label "Port role" ; - rdfs:comment """ -The role of a port with respect to its plugin or group. If the port is a -member of a group (has an :inGroup property) the role is relevant with respect -to that group. Otherwise the role is relevant with respect to the plugin. -""" . - -pg:role a rdf:Property ; - rdfs:range pg:Role ; - rdfs:label "Role" ; - rdfs:comment """ -Indicates that this port has a particular role with respect to its enclosing -plugin or group (whichever is smaller). A port may have several roles if it -makes sense to do so (though some Role or Group definition may forbid this). -""" . - - -# Discrete - -pg:DiscreteGroup a rdfs:Class ; - rdfs:subClassOf pg:Group ; - rdfs:comment """ -"Discrete" channel configurations. These groups are divided into channels -where each represents a particular speaker location. The position of sound -in one of these groups depends on a particular speaker configuration. -""" . - -pg:leftChannel a pg:Role ; rdfs:label "Left" . -pg:rightChannel a pg:Role ; rdfs:label "Right" . -pg:centerChannel a pg:Role ; rdfs:label "Center" . -pg:sideChannel a pg:Role ; rdfs:label "Side" . -pg:centerLeftChannel a pg:Role ; rdfs:label "Center Left" . -pg:centerRightChannel a pg:Role ; rdfs:label "Center Right" . -pg:sideLeftChannel a pg:Role ; rdfs:label "Side Left" . -pg:sideRightChannel a pg:Role ; rdfs:label "Side Right" . -pg:rearLeftChannel a pg:Role ; rdfs:label "Rear Left" . -pg:rearRightChannel a pg:Role ; rdfs:label "Rear Right" . -pg:rearCenterChannel a pg:Role ; rdfs:label "Rear Center" . -pg:lfeChannel a pg:Role ; rdfs:label "Sub (LFE)" . - -pg:MonoGroup a rdfs:Class ; - rdfs:subClassOf pg:DiscreteGroup ; - rdfs:label "Mono" ; - pg:hasRole [ pg:index 0; pg:role pg:centerChannel ] . - -pg:StereoGroup a rdfs:Class ; - rdfs:subClassOf pg:DiscreteGroup ; - rdfs:label "Stereo" ; - pg:hasRole [ pg:index 0; pg:role pg:leftChannel ] ; - pg:hasRole [ pg:index 1; pg:role pg:rightChannel ] . - -pg:MidSideGroup a rdfs:Class ; - rdfs:subClassOf pg:DiscreteGroup ; - rdfs:label "Mid-Side Stereo" ; - pg:hasRole [ pg:index 0; pg:role pg:centerChannel ] ; - pg:hasRole [ pg:index 1; pg:role pg:sideChannel ] . - -pg:ThreePointZeroGroup a rdfs:Class ; - rdfs:subClassOf pg:DiscreteGroup ; - rdfs:label "3.0 Surround" ; - pg:hasRole [ pg:index 0; pg:role pg:leftChannel ] ; - pg:hasRole [ pg:index 1; pg:role pg:rightChannel ] ; - pg:hasRole [ pg:index 2; pg:role pg:rearCenterChannel ] . - -pg:FourPointZeroGroup a rdfs:Class ; - rdfs:subClassOf pg:DiscreteGroup ; - rdfs:label "4.0 Surround (Quadraphonic)" ; - pg:hasRole [ pg:index 0; pg:role pg:leftChannel ] ; - pg:hasRole [ pg:index 1; pg:role pg:centerChannel ] ; - pg:hasRole [ pg:index 2; pg:role pg:rightChannel ] ; - pg:hasRole [ pg:index 3; pg:role pg:rearCenterChannel ] . - -pg:FivePointZeroGroup a rdfs:Class ; - rdfs:subClassOf pg:DiscreteGroup ; - rdfs:label "5.0 Surround (3-2 stereo)" ; - pg:hasRole [ pg:index 0; pg:role pg:leftChannel ] ; - pg:hasRole [ pg:index 1; pg:role pg:centerChannel ] ; - pg:hasRole [ pg:index 2; pg:role pg:rightChannel ] ; - pg:hasRole [ pg:index 3; pg:role pg:rearLeftChannel ] ; - pg:hasRole [ pg:index 4; pg:role pg:rearRightChannel ] . - -pg:FivePointOneGroup a rdfs:Class ; - rdfs:subClassOf pg:DiscreteGroup ; - rdfs:label "5.1 Surround (3-2 stereo)" ; - pg:hasRole [ pg:index 0; pg:role pg:leftChannel ] ; - pg:hasRole [ pg:index 1; pg:role pg:centerChannel ] ; - pg:hasRole [ pg:index 2; pg:role pg:rightChannel ] ; - pg:hasRole [ pg:index 3; pg:role pg:rearLeftChannel ] ; - pg:hasRole [ pg:index 4; pg:role pg:rearRightChannel ] ; - pg:hasRole [ pg:index 5; pg:role pg:lfeChannel ] . - -pg:SixPointOneGroup a rdfs:Class ; - rdfs:subClassOf pg:DiscreteGroup ; - rdfs:label "6.1 Surround" ; - pg:hasRole [ pg:index 0; pg:role pg:leftChannel ] ; - pg:hasRole [ pg:index 1; pg:role pg:centerChannel ] ; - pg:hasRole [ pg:index 2; pg:role pg:rightChannel ] ; - pg:hasRole [ pg:index 3; pg:role pg:sideLeftChannel ] ; - pg:hasRole [ pg:index 4; pg:role pg:sideRightChannel ] ; - pg:hasRole [ pg:index 5; pg:role pg:rearCenterChannel ] ; - pg:hasRole [ pg:index 6; pg:role pg:lfeChannel ] . - -pg:SevenPointOneGroup a rdfs:Class ; - rdfs:subClassOf pg:DiscreteGroup ; - rdfs:label "7.1 Surround" ; - pg:hasRole [ pg:index 0; pg:role pg:leftChannel ] ; - pg:hasRole [ pg:index 1; pg:role pg:centerChannel ] ; - pg:hasRole [ pg:index 2; pg:role pg:rightChannel ] ; - pg:hasRole [ pg:index 3; pg:role pg:sideLeftChannel ] ; - pg:hasRole [ pg:index 4; pg:role pg:sideRightChannel ] ; - pg:hasRole [ pg:index 5; pg:role pg:rearLeftChannel ] ; - pg:hasRole [ pg:index 6; pg:role pg:rearRightChannel ] ; - pg:hasRole [ pg:index 7; pg:role pg:lfeChannel ] . - -pg:SevenPointOneWideGroup a rdfs:Class ; - rdfs:subClassOf pg:DiscreteGroup ; - rdfs:label "7.1 Surround (Wide)" ; - pg:hasRole [ pg:index 0; pg:role pg:leftChannel ] ; - pg:hasRole [ pg:index 1; pg:role pg:centerLeftChannel ] ; - pg:hasRole [ pg:index 2; pg:role pg:centerChannel ] ; - pg:hasRole [ pg:index 3; pg:role pg:centerRightChannel ] ; - pg:hasRole [ pg:index 4; pg:role pg:rightChannel ] ; - pg:hasRole [ pg:index 5; pg:role pg:rearLeftChannel ] ; - pg:hasRole [ pg:index 6; pg:role pg:rearRightChannel ] ; - pg:hasRole [ pg:index 7; pg:role pg:lfeChannel ] . - - -# Ambisonic - -pg:AmbisonicGroup a rdfs:Class ; - rdfs:subClassOf pg:Group ; - rdfs:comment """ -"Ambisonic" channel configurations. These groups are divided into channels -which together represent a position in an abstract n-dimensional space. -The position of sound in one of these groups does not depend on a particular -speaker configuration; a decoder can be used to convert an ambisonic stream -for any speaker configuration. -""" . - -#amb:ACN0 a pg:Role ; rdfs:label "ACN 0 (W)" . -#amb:ACN1 a pg:Role ; rdfs:label "ACN 1 (Y)" . -#amb:ACN2 a pg:Role ; rdfs:label "ACN 2 (Z)" . -#amb:ACN3 a pg:Role ; rdfs:label "ACN 3 (X)" . -#amb:ACN4 a pg:Role ; rdfs:label "ACN 4 (V)" . -#amb:ACN5 a pg:Role ; rdfs:label "ACN 5 (T)" . -#amb:ACN6 a pg:Role ; rdfs:label "ACN 6 (R)" . -#amb:ACN7 a pg:Role ; rdfs:label "ACN 7 (S)" . -#amb:ACN8 a pg:Role ; rdfs:label "ACN 8 (U)" . -#amb:ACN9 a pg:Role ; rdfs:label "ACN 9 (Q)" . -#amb:ACN10 a pg:Role ; rdfs:label "ACN 10 (O)" . -#amb:ACN11 a pg:Role ; rdfs:label "ACN 11 (M)" . -#amb:ACN12 a pg:Role ; rdfs:label "ACN 12 (K)" . -#amb:ACN13 a pg:Role ; rdfs:label "ACN 13 (L)" . -#amb:ACN14 a pg:Role ; rdfs:label "ACN 14 (N)" . -#amb:ACN15 a pg:Role ; rdfs:label "ACN 15 (P)" . - -pg:AmbisonicBH1P0Group a rdfs:Class ; - rdfs:subClassOf pg:AmbisonicGroup ; - rdfs:label "Ambisonic B stream of horizontal order 1 and peripheral order 0." ; - pg:hasRole [ pg:index 0; pg:role amb:ACN0 ] ; - pg:hasRole [ pg:index 1; pg:role amb:ACN1 ] ; - pg:hasRole [ pg:index 2; pg:role amb:ACN3 ] . - -pg:AmbisonicBH1P1Group a rdfs:Class ; - rdfs:subClassOf pg:AmbisonicGroup ; - rdfs:label "Ambisonic B stream of horizontal order 1 and peripheral order 1." ; - pg:hasRole [ pg:index 0; pg:role amb:ACN0 ] ; - pg:hasRole [ pg:index 1; pg:role amb:ACN1 ] ; - pg:hasRole [ pg:index 2; pg:role amb:ACN2 ] ; - pg:hasRole [ pg:index 3; pg:role amb:ACN3 ] . - -pg:AmbisonicBH2P0Group a rdfs:Class ; - rdfs:subClassOf pg:AmbisonicGroup ; - rdfs:label "Ambisonic B stream of horizontal order 2 and peripheral order 0." ; - pg:hasRole [ pg:index 0; pg:role amb:ACN0 ] ; - pg:hasRole [ pg:index 1; pg:role amb:ACN1 ] ; - pg:hasRole [ pg:index 2; pg:role amb:ACN3 ] ; - pg:hasRole [ pg:index 3; pg:role amb:ACN4 ] ; - pg:hasRole [ pg:index 4; pg:role amb:ACN8 ] . - -pg:AmbisonicBH2P1Group a rdfs:Class ; - rdfs:subClassOf pg:AmbisonicGroup ; - rdfs:label "Ambisonic B stream of horizontal order 2 and peripheral order 1." ; - pg:hasRole [ pg:index 0; pg:role amb:ACN0 ] ; - pg:hasRole [ pg:index 1; pg:role amb:ACN1 ] ; - pg:hasRole [ pg:index 2; pg:role amb:ACN2 ] ; - pg:hasRole [ pg:index 3; pg:role amb:ACN3 ] ; - pg:hasRole [ pg:index 4; pg:role amb:ACN4 ] ; - pg:hasRole [ pg:index 5; pg:role amb:ACN8 ] . - -pg:AmbisonicBH2P2Group a rdfs:Class ; - rdfs:subClassOf pg:AmbisonicGroup ; - rdfs:label "Ambisonic B stream of horizontal order 2 and peripheral order 2." ; - pg:hasRole [ pg:index 0; pg:role amb:ACN0 ] ; - pg:hasRole [ pg:index 1; pg:role amb:ACN1 ] ; - pg:hasRole [ pg:index 2; pg:role amb:ACN2 ] ; - pg:hasRole [ pg:index 3; pg:role amb:ACN3 ] ; - pg:hasRole [ pg:index 4; pg:role amb:ACN4 ] ; - pg:hasRole [ pg:index 5; pg:role amb:ACN5 ] ; - pg:hasRole [ pg:index 6; pg:role amb:ACN6 ] ; - pg:hasRole [ pg:index 7; pg:role amb:ACN7 ] ; - pg:hasRole [ pg:index 8; pg:role amb:ACN8 ] . - -pg:AmbisonicBH3P0Group a rdfs:Class ; - rdfs:subClassOf pg:AmbisonicGroup ; - rdfs:label "Ambisonic B stream of horizontal order 3 and peripheral order 0." ; - pg:hasRole [ pg:index 0; pg:role amb:ACN0 ] ; - pg:hasRole [ pg:index 1; pg:role amb:ACN1 ] ; - pg:hasRole [ pg:index 2; pg:role amb:ACN3 ] ; - pg:hasRole [ pg:index 3; pg:role amb:ACN4 ] ; - pg:hasRole [ pg:index 4; pg:role amb:ACN8 ] ; - pg:hasRole [ pg:index 5; pg:role amb:ACN9 ] ; - pg:hasRole [ pg:index 6; pg:role amb:ACN15 ] . - -pg:AmbisonicBH3P1Group a rdfs:Class ; - rdfs:subClassOf pg:AmbisonicGroup ; - rdfs:label "Ambisonic B stream of horizontal order 3 and peripheral order 1." ; - pg:hasRole [ pg:index 0; pg:role amb:ACN0 ] ; - pg:hasRole [ pg:index 1; pg:role amb:ACN1 ] ; - pg:hasRole [ pg:index 2; pg:role amb:ACN2 ] ; - pg:hasRole [ pg:index 3; pg:role amb:ACN3 ] ; - pg:hasRole [ pg:index 4; pg:role amb:ACN4 ] ; - pg:hasRole [ pg:index 5; pg:role amb:ACN8 ] ; - pg:hasRole [ pg:index 6; pg:role amb:ACN9 ] ; - pg:hasRole [ pg:index 7; pg:role amb:ACN15 ] . - -pg:AmbisonicBH3P2Group a rdfs:Class ; - rdfs:subClassOf pg:AmbisonicGroup ; - rdfs:label "Ambisonic B stream of horizontal order 3 and peripheral order 2." ; - pg:hasRole [ pg:index 0; pg:role amb:ACN0 ] ; - pg:hasRole [ pg:index 1; pg:role amb:ACN1 ] ; - pg:hasRole [ pg:index 2; pg:role amb:ACN2 ] ; - pg:hasRole [ pg:index 3; pg:role amb:ACN3 ] ; - pg:hasRole [ pg:index 4; pg:role amb:ACN4 ] ; - pg:hasRole [ pg:index 5; pg:role amb:ACN5 ] ; - pg:hasRole [ pg:index 6; pg:role amb:ACN6 ] ; - pg:hasRole [ pg:index 7; pg:role amb:ACN7 ] ; - pg:hasRole [ pg:index 8; pg:role amb:ACN8 ] ; - pg:hasRole [ pg:index 9; pg:role amb:ACN9 ] ; - pg:hasRole [ pg:index 10; pg:role amb:ACN15 ] . - -pg:AmbisonicBH3P3Group a rdfs:Class ; - rdfs:subClassOf pg:AmbisonicGroup ; - rdfs:label "Ambisonic B stream of horizontal order 3 and peripheral order 3." ; - pg:hasRole [ pg:index 0; pg:role amb:ACN0 ] ; - pg:hasRole [ pg:index 1; pg:role amb:ACN1 ] ; - pg:hasRole [ pg:index 2; pg:role amb:ACN2 ] ; - pg:hasRole [ pg:index 3; pg:role amb:ACN3 ] ; - pg:hasRole [ pg:index 4; pg:role amb:ACN4 ] ; - pg:hasRole [ pg:index 5; pg:role amb:ACN5 ] ; - pg:hasRole [ pg:index 6; pg:role amb:ACN6 ] ; - pg:hasRole [ pg:index 7; pg:role amb:ACN7 ] ; - pg:hasRole [ pg:index 8; pg:role amb:ACN8 ] ; - pg:hasRole [ pg:index 9; pg:role amb:ACN9 ] ; - pg:hasRole [ pg:index 10; pg:role amb:ACN10 ] ; - pg:hasRole [ pg:index 11; pg:role amb:ACN11 ] ; - pg:hasRole [ pg:index 12; pg:role amb:ACN12 ] ; - pg:hasRole [ pg:index 13; pg:role amb:ACN13 ] ; - pg:hasRole [ pg:index 14; pg:role amb:ACN14 ] ; - pg:hasRole [ pg:index 15; pg:role amb:ACN15 ] . - - -# Controls - -pg:ControlGroup a rdfs:Class ; - rdfs:subClassOf pg:Group ; - rdfs:comment """ -A group representing a set of associated controls. -""" . - -pg:amplitude a pg:Role ; rdfs:label "Amplitude" . -pg:attack a pg:Role ; rdfs:label "Attack" . -pg:cutoffFrequency a pg:Role ; rdfs:label "Cutoff Frequency" . -pg:decay a pg:Role ; rdfs:label "Decay" . -pg:delay a pg:Role ; rdfs:label "Delay" . -pg:frequency a pg:Role ; rdfs:label "Frequency" . -pg:hold a pg:Role ; rdfs:label "Hold" . -pg:pulseWidth a pg:Role ; rdfs:label "Pulse Width" . -pg:ratio a pg:Role ; rdfs:label "Ratio" . -pg:release a pg:Role ; rdfs:label "Release" . -pg:resonance a pg:Role ; rdfs:label "Resonance" . -pg:sustain a pg:Role ; rdfs:label "Sustain" . -pg:threshold a pg:Role ; rdfs:label "Threshold" . -pg:waveform a pg:Role ; rdfs:label "Waveform" . - -pg:EnvelopeControlGroup a rdfs:Class ; - rdfs:subClassOf pg:ControlGroup ; - rdfs:label "Controls for a DAHDSR envelope." ; - pg:mayHaveRole pg:delay ; - pg:mayHaveRole pg:attack ; - pg:mayHaveRole pg:hold ; - pg:mayHaveRole pg:decay ; - pg:mayHaveRole pg:sustain ; - pg:mayHaveRole pg:release . - -pg:OscillatorControlGroup a rdfs:Class ; - rdfs:subClassOf pg:ControlGroup ; - rdfs:label "Controls for an oscillator." ; - pg:mayHaveRole pg:frequency ; - pg:mayHaveRole pg:amplitude ; - pg:mayHaveRole pg:waveform ; - pg:mayHaveRole pg:pulseWidth . - -pg:FilterControlGroup a rdfs:Class ; - rdfs:subClassOf pg:ControlGroup ; - rdfs:label "Controls for a filter." ; - pg:mayHaveRole pg:cutoffFrequency ; - pg:mayHaveRole pg:resonance . - -pg:CompressorControlGroup a rdfs:Class ; - rdfs:subClassOf pg:ControlGroup ; - rdfs:label "Controls for a compressor." ; - pg:mayHaveRole pg:threshold ; - pg:mayHaveRole pg:ratio . - diff --git a/lv2/ns/ext/port-groups/waf b/lv2/ns/ext/port-groups/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/port-groups/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/port-groups/wscript b/lv2/ns/ext/port-groups/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/port-groups/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/port-props/ext.pc.in b/lv2/ns/ext/port-props/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/port-props/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/port-props/manifest.ttl b/lv2/ns/ext/port-props/manifest.ttl deleted file mode 100644 index b4afe2f..0000000 --- a/lv2/ns/ext/port-props/manifest.ttl +++ /dev/null @@ -1,8 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . diff --git a/lv2/ns/ext/port-props/port-props.ttl b/lv2/ns/ext/port-props/port-props.ttl deleted file mode 100644 index d811959..0000000 --- a/lv2/ns/ext/port-props/port-props.ttl +++ /dev/null @@ -1,217 +0,0 @@ -@prefix pprops: . -@prefix doap: . -@prefix foaf: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - a lv2:Specification ; - doap:name "LV2 Port Properties" ; - doap:release [ - doap:revision "0.1" ; - doap:created "2011-11-01" - ] ; - doap:created "2009-01-01" ; - doap:shortdesc "Additional properties for LV2 plugin ports." ; - doap:maintainer [ - a foaf:Person ; - foaf:name "Krzysztof Foltman" - ] , [ - a foaf:Person ; - foaf:name "David Robillard" ; - rdfs:seeAlso - ] ; - lv2:documentation """ -

This extension defines several useful properties for LV2 plugin ports, which -can be used in plugin descriptions to better describe ports. Using this -metadata, hosts can build better UIs for plugins, and provide more advanced -automatic functionality.

-""" . - -pprops:trigger - a lv2:PortProperty ; - rdfs:label "Trigger" ; - rdfs:comment """ -Indicates that the data item corresponds to a momentary event that has been -detected (control output ports) or is to be triggered (control input ports). -For input ports, the port needs to be reset to lv2:default value after run() -function of the plugin has returned. If the control port is assigned a GUI -widget by the host, the widget should be of auto-off (momentary, one-shot) type -- for example, a push button if the port is also declared as lv2:toggled, or a -series of push button or auto-clear input box with a "Send" button if the port -is also lv2:integer. -""" . - -pprops:supportsStrictBounds - a lv2:Feature ; - rdfs:label "Supports strict bounds" ; - rdfs:comment """ -Indicates use of host support for pprops:hasStrictBounds port property. A -plugin that specifies it as optional feature can omit value clamping for -hasStrictBounds ports, if the feature is supported by the host. When specified -as required feature, it indicates that the plugin does not do any clamping for -input ports that have a pprops:hasStrictBounds property. -""" . - -pprops:hasStrictBounds - a lv2:PortProperty ; - rdfs:label "Has strict bounds" ; - rdfs:comment """ -For hosts that support pprops:supportsStrictBounds, this indicates that the -value of the port should never exceed the port's minimum and maximum control -points. For input ports, it moves the responsibility for limiting the range of -values to host, if it supports pprops:supportsStrictBounds. For output ports, -it indicates that values within specified range are to be expected, and -breaking that should be considered by the host as error in plugin -implementation. -""" . - -pprops:expensive - a lv2:PortProperty ; - rdfs:label "Changes trigger expensive calculation" ; - rdfs:comment """ -Input ports only. Indicates that any changes to the port value may trigger -expensive background calculation (e.g. regenerate some lookup tables in a -background thread). Any value changes may have not have immediate effect, or -may cause silence or diminished-quality version of the output until background -processing is finished. Ports having this property are typically not well -suited for connection to outputs of other plugins, and should not be offered as -connection targets or for automation by default. -""" . - -pprops:causesArtifacts - a lv2:PortProperty ; - rdfs:label "May cause audio artifacts when changed" ; - rdfs:comment """ -Input ports only. Indicates that any changes to the port value may produce -slight artifacts to produced audio signals (zipper noise and other results of -signal discontinuities). Connecting ports of this type to continuous signals -is not recommended, and when presenting a list of automation targets, those -ports may be marked as artifact-producing. -""" . - -pprops:continuousCV - a lv2:PortProperty ; - rdfs:label "Carries a smooth modulation signal" ; - rdfs:comment """ -Indicates that the port carries a "smooth" modulation signal. Control input -ports of this type are well-suited for being connected to sources of smooth -signals (knobs with smoothing, modulation rate oscillators, output ports with -continuousCV type, etc.). Typically, the plugin with ports which have this -property will implement appropriate smoothing to avoid audio artifacts. For -output ports, this property suggests the value of the port is likely to change -frequently, and describes a smooth signal (e.g. successive values may be -considered points along a curve). -""" . - -pprops:discreteCV - a lv2:PortProperty ; - rdfs:label "Carries a discrete modulation signal" ; - rdfs:comment """ -Indicates that the port carries a "discrete" modulation signal. Input ports of -this type are well-suited for being connected to sources of discrete signals -(switches, buttons, classifiers, event detectors, etc.). May be combined with -pprops:trigger property. For output ports, this property suggests the value of -the port describe discrete values that should be interpreted as steps (and not -points along a curve). -""" . - -pprops:reportsBpm - a lv2:PortProperty ; - rdfs:label "Carries the current tempo expressed in BPM" ; - rdfs:comment """ -Indicates that the port is used to pass the current tempo in context of the -plugin (which may be current song tempo, or tempo of a particular subset of the -song, or the subgraph the plugin resides in). For input ports, the host may -automatically feed the port with current tempo and hide the port from the user, -unless the user or other factors encourage different behaviour. -""" . - -pprops:reportsBeatsPerBar - a lv2:PortProperty ; - rdfs:label "Carries the current number of beats in a bar" ; - rdfs:comment """ -Indicates that the port may be used to pass the current number of beats in a -bar. """ . - -pprops:reportsBeatUnit - a lv2:PortProperty ; - rdfs:label "Carries the current beat size" ; - rdfs:comment """ -Indicates that the port may be used to pass the current size of a beat (4 for a -crochet/quarter note, 8 for a quaver/eighth note, etc.). -""" . - -pprops:logarithmic - a lv2:PortProperty ; - rdfs:label "Port value uses a logarithmic scale" ; - rdfs:comment """ -Indicates that port value behaviour within specified range (bounds) is a value -using logarithmic scale. The lower and upper bounds must be specified, and -must be of the same sign. -""" . - -pprops:notAutomatic - a lv2:PortProperty ; - rdfs:label "Port is not intended as a CV input" ; - rdfs:comment """ -Indicates that the port is not primarily intended to be fed with modulation -signals from external sources (other plugins, etc.). It is merely a UI hint -and hosts may allow the user to override it. -""" . - -pprops:notOnGUI - a lv2:PortProperty ; - rdfs:label "Port is not to be displayed on a GUI or equivalent" ; - rdfs:comment """ -Indicates that the port is not primarily intended to be represented by a -separate control in the user interface window (or any similar mechanism used -for direct, immediate control of control ports). It is merely a UI hint and -hosts may allow the user to override it. -""" . - -pprops:priority - a rdf:Property ; - rdfs:domain lv2:Port ; - rdfs:range xsd:float ; - rdfs:label "Relative usefulness of a port" ; - rdfs:comment """ -Indicates how (typically) useful is the port comparing to other ports with that -property (higher value = more important). The values do not need to be unique, -and ports can be grouped based on their priorities. -""" . - -pprops:rangeSteps - a rdf:Property ; - rdfs:domain lv2:Port ; - rdfs:range xsd:nonNegativeInteger ; - rdfs:label "Number of value quantization steps" ; - lv2:documentation """ -

This value indicates into how many evenly-divided points the (control) port -range shoujld be divided for step-wise control. This may be used for changing -the value with step-based controllers like arrow keys, mouse wheel, rotary -encoders, etc.

- -

Note that when used with a pprops:logarithmic port, the steps are -logarithmic too, and port value can be calculated as:

- -
-value = lower * pow(upper / lower, step / (steps - 1))
-
- -

and the step from value is:

- -
-step = (steps - 1) * log(value / lower) / log(upper / lower)
-
- -

where:

-
    -
  • value is the port value
  • -
  • step is the step number (0..steps)
  • -
  • steps is the number of steps (= value of :rangeSteps property)
  • -
  • lower and upper are the bounds
  • -
-""" . diff --git a/lv2/ns/ext/port-props/waf b/lv2/ns/ext/port-props/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/port-props/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/port-props/wscript b/lv2/ns/ext/port-props/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/port-props/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/presets/ext.pc.in b/lv2/ns/ext/presets/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/presets/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/presets/manifest.ttl b/lv2/ns/ext/presets/manifest.ttl deleted file mode 100644 index 51985ab..0000000 --- a/lv2/ns/ext/presets/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 2 ; - lv2:microVersion 2 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/presets/presets.ttl b/lv2/ns/ext/presets/presets.ttl deleted file mode 100644 index e11210a..0000000 --- a/lv2/ns/ext/presets/presets.ttl +++ /dev/null @@ -1,148 +0,0 @@ -# LV2 Presets Extension -# Copyright 2009-2011 David Robillard -# -# 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. - -@prefix dcs: . -@prefix doap: . -@prefix foaf: . -@prefix lv2: . -@prefix owl: . -@prefix pset: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - foaf:mbox ; - rdfs:seeAlso . - - - a lv2:Specification ; - doap:license ; - doap:name "LV2 Presets" ; - doap:shortdesc "Presets for LV2 plugins. " ; - doap:maintainer ; - doap:release [ - doap:revision "2.2" ; - doap:created "2011-11-21" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Update packaging." - ] , [ - rdfs:label "Improve documentation." - ] - ] - ] , [ - doap:revision "2.0" ; - doap:created "2010-10-04" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; - lv2:documentation """ -

This extension describes a format for presets (i.e. named sets of control -values) for LV2 plugins. The structure of pset:Preset is deliberately very -similar to the description of a plugin and can be thought of as a plugin -overlay. For example:

- -
-@prefix eg: <http://example.org/> .
-
-eg:mypreset
-    a pset:Preset ;
-    rdfs:label "One louder" ;
-    pset:appliesTo eg:myplugin ;
-    lv2:port [
-        lv2:symbol "volume1" ;
-        pset:value 11
-    ] , [
-        lv2:symbol "volume2" ;
-        pset:value 11.0
-    ] .
-
- -

Presets may be defined in any bundles, including the plugin's bundle, -separate third party preset bundles, or user-created preset bundles created by -hosts. The manifest.ttl of a bundle containing presets should list the -presets like so:

- -
-eg:mypreset
-    a              pset:Preset ;
-    pset:appliesTo eg:myplugin ;
-    rdfs:seeAlso   <mypreset.ttl> .
-
- -

This extension does not define a dynamic mechanism for changing plugin -presets for plugins that require such a facility, but may be extended to do -so.

-""" . - -pset:Preset - a rdfs:Class ; - rdfs:subClassOf lv2:PluginBase ; - rdfs:label "LV2 Preset" ; - rdfs:subClassOf [ - a owl:Restriction ; - owl:onProperty rdfs:label ; - owl:someValuesFrom xsd:string ; - rdfs:comment "A Preset MUST have at least one string rdfs:label." - ] ; - rdfs:comment """ -A Preset for an LV2 Plugin. A preset can be considered an "overlay" on a -Plugin. Rather than attempting to define all valid predicates for a Preset -(which is not possible since presets may need to specify values for things -defined in other extensions), the presets extension simply provides this -class which can be augmented with any data in the exact same fashion as the -definition of a Plugin. - -A Preset SHOULD have at least one pset:appliesTo property. -Each Port on a Preset MUST have at least a lv2:symbol property and a -pset:value property. -""" . - -pset:appliesTo - a rdf:Property ; - rdfs:domain pset:Preset ; - rdfs:range lv2:Plugin ; - rdfs:label "Applies to" ; - rdfs:comment """ -Specifies the Plugin(s) a Preset may be applied to. When a Preset applies -to a Plugin, that Preset SHOULD have ports for every control port on that -plugin, each of which SHOULD have a pset:value property. If the Preset is -missing ports, or refers to ports which do not exist on the Plugin, then -the host SHOULD apply all the values in the preset that do match the Plugin. - -The Preset MAY have any other values that should be applied to the Plugin -in some way. The host SHOULD simply ignore any values on a Preset it does -not understand. -""" . - -pset:value - a rdf:Property ; - rdfs:domain lv2:Port ; - rdfs:label "Has value" ; - rdfs:comment """ -Specifies the value of a Port on some Preset. This property is used -in a similar way to e.g. lv2:default. -""" . diff --git a/lv2/ns/ext/presets/waf b/lv2/ns/ext/presets/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/presets/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/presets/wscript b/lv2/ns/ext/presets/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/presets/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/pui/ext.pc.in b/lv2/ns/ext/pui/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/pui/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/pui/manifest.ttl b/lv2/ns/ext/pui/manifest.ttl deleted file mode 100644 index 1229118..0000000 --- a/lv2/ns/ext/pui/manifest.ttl +++ /dev/null @@ -1,8 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification; - lv2:minorVersion 0; - lv2:microVersion 1; - rdfs:seeAlso . diff --git a/lv2/ns/ext/pui/pui.h b/lv2/ns/ext/pui/pui.h deleted file mode 100644 index caa7deb..0000000 --- a/lv2/ns/ext/pui/pui.h +++ /dev/null @@ -1,374 +0,0 @@ -/************************************************************************ - * - * Plugin UI extension for LV2 - * - * Copyright (C) 2006-2011 Lars Luthman - * - * Based on lv2.h, which was - * - * Copyright (C) 2000-2002 Richard W.E. Furse, Paul Barton-Davis, - * Stefan Westerfeld - * Copyright (C) 2006 Steve Harris, David Robillard. - * - * This header is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; either version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 - * USA. - * - ***********************************************************************/ - -/** - @file pui.h C API for the LV2 UI extension . - - This file specifies a C API for communication between an LV2 host and an - LV2 UI. The interface is similar to the one used for actual LV2 plugins. - - The entry point is the function lv2ui_descriptor(). -*/ - -#ifndef LV2_PUI_H -#define LV2_PUI_H - -#include - -/** The URI of this extension (note this is not the same as the prefix). */ -#define LV2_PUI_URI "http://lv2plug.in/ns/ext/pui" - -/** The numerical ID returned by LV2_PUI_Host_Descriptor::port_index() for - invalid port symbols. */ -#define LV2_PUI_INVALID_PORT_INDEX ((uint32_t)-1) - -/** The full URI for the pui:floatControl PortProtocol. */ -#define LV2_PUI_FLOAT_CONTROL_URI "http://lv2plug.in/ns/ext/pui#floatControl" - -/** The full URI for the pui:floatPeakRMS PortProtocol. */ -#define LV2_PUI_FLOAT_PEAK_RMS_URI "http://lv2plug.in/ns/ext/pui#floatPeakRMS" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - A data type that is used to pass peak and RMS values for a period of - audio data at an input or output port to an UI, using port_event. See the - documentation for pui:floatPeakRMS for details about how and when this - should be done. -*/ -typedef struct _LV2_PUI_Peak_RMS_Data { - - /** - The start of the measurement period. This is just a running counter that - must not be interpreted as any sort of global frame position. It should - only be interpreted relative to the starts of other measurement periods - in port_event() calls to the same plugin instance. - - This counter is allowed to overflow, in which case it should just wrap - around. - */ - uint32_t period_start; - - /** - The size of the measurement period, in the same units as period_start. - */ - uint32_t period_size; - - /** - The peak value for the measurement period. This should be the maximal - value for abs(sample) over all the samples in the period. - */ - float peak; - - /** - The RMS value for the measurement period. This should be the root mean - square value of the samples in the period, equivalent to - sqrt((pow(sample1, 2) + pow(sample2, 2) + ... + pow(sampleN, 2)) / N) - where N is period_size. - */ - float rms; - -} LV2_PUI_Peak_RMS_Data; - -/** - A pointer to a widget or other type of UI. - The actual type is defined by the type of the UI defined in the RDF data. - All the functionality provided by this extension is toolkit independent, the - host only needs to pass the necessary callbacks and display the widget, if - possible. Plugins may have several UIs, in various toolkits. -*/ -typedef void* LV2_PUI_Widget; - -/** - Handle for a particular instance of a UI. - It is valid to compare this to NULL (0 for C++) but otherwise the host MUST - NOT attempt to interpret it. The UI may use it to reference internal - instance data. -*/ -typedef void* LV2_PUI_Handle; - -/** - Handle for host functions and data provided to a UI. - An object of this type is passed to the UI's instantiate() function, and the - UI must in turn pass it as the first parameter to the callbacks in - LV2_PUI_Host_Descriptor. The host may use it to reference internal data, such - as the plugin instance that the UI is associated with. The UI MUST NOT - interpret the value of an LV2_PUI_Host_Handle in any way. -*/ -typedef void* LV2_PUI_Host_Handle; - -/** - Host-provided functions that the UI can use to control the plugin instance. - - A pointer to an object of this type is passed to the lv2ui_descriptor() - function. - - The host MUST provide non-NULL values for all the function pointers. -*/ -typedef struct _LV2_PUI_Host_Descriptor { - - /** - Send data to one of the plugin's input ports. - - The @c buffer parameter MUST point to a block of data @c buffer_size - bytes large. The contents of this buffer and what the host should do - with it depends on the value of the @c port_protocol parameter. - - The @c port_protocol parameter MUST be a numeric ID for a - pui:PortProtocol. Numeric IDs for PortProtocols are retrieved using the - port_protocol_id() function. - - The @c buffer is only valid during the time of this function call, so if - the host wants to keep it for later use it has to copy the contents to an - internal buffer. - - @param host_handle The @c host_handle that was passed to the UI's - instantiate() function. - @param port_index The index of the port that the data should be written - to, as returned by port_index(). - @param buffer_size The size of the data pointed to by @c buffer, in - bytes. - @param port_protocol The numeric ID of the Port Protocol to use, - as returned by port_protocol_id(). - */ - void (*write_port)(LV2_PUI_Host_Handle host_handle, - uint32_t port_index, - uint32_t buffer_size, - uint32_t port_protocol, - void const* buffer); - - /** - Return the numerical index for a port. - This index is used when writing data to ports using write_port() and whe - receiving data using port_event(). If @c port_symbol is not a valid port - symbol for @c plugin the host it MUST return - LV2_PUI_INVALID_PORT_INDEX. For performance reasons it may be a good idea - to cache port indices in the UI at instantiation time. - - @param host_handle The LV2_PUI_Host_Handle that was passed to the UI's - instantiate() function. - @param port_symbol The port's symbol, as defined in the RDF data for - the plugin. - */ - uint32_t (*port_index)(LV2_PUI_Host_Handle host_handle, - char const* port_symbol); - - /** - Subscribe to updates for a port. - This means that the host will call the UI's port_event() function when - the port value changes (as defined by the PortProtocol). - - Calling this function with the same @c port_index and @c port_protocol - as an already active subscription has no effect. - - @param host_handle The @c host_handle that was passed to the UI's - instantiate() function. - @param port_index The index of the port, as returned by port_index(). - @param port_protocol The numeric ID of the PortProtocol, as - returned by port_protocol_id(). - */ - void (*subscribe_to_port)(LV2_PUI_Host_Handle host_handle, - uint32_t port_index, - uint32_t port_protocol, - const LV2_Feature* const* features); - - /** - Unsubscribe from updates for a port. - This means that the host will cease calling calling port_event() when - the port value changes. - - Calling this function with a @c port_index and @c port_protocol that - does not refer to an active port subscription has no effect. - - @param host_handle The @c host_handle that was passed to the UI's - instantiate() function. - @param port_index The index of the port, as returned by port_index(). - @param port_protocol The numeric ID of the PortProtocol, as - returned by port_protocol_id(). - */ - void (*unsubscribe_from_port)(LV2_PUI_Host_Handle host_handle, - uint32_t port_index, - uint32_t port_protocol, - const LV2_Feature* const* features); - - -} LV2_PUI_Host_Descriptor; - -/** - This struct contains the implementation of an UI. A pointer to an - object of this type is returned by the lv2ui_descriptor() function. -*/ -typedef struct _LV2_PUI_Descriptor { - - /** - The URI for this UI (not for the plugin it controls). - */ - char const* URI; - - /** - Create a new UI object and return a handle to it. This function works - similarly to the instantiate() member in LV2_Descriptor. - - @param descriptor The descriptor for the UI to instantiate. - - @param plugin_uri The URI of the plugin that this UI will control. - - @param bundle_path The path to the bundle containing the RDF data that - references this shared object file, with trailing separator (e.g. '/'). - - @param host_descriptor A pointer to an object that contains function - pointers that the UI instance should use to control the plugin - instance. This pointer MUST be valid until cleanup() is called for this - UI instance. - - @param host_handle A handle that the host may use to reference internal - data. It MUST be passed as the first parameter to the function - pointers in @c host_descriptor, and MUST NOT be interpreted in any other - way by the UI. - - @param features A NULL-terminated array of LV2_Feature pointers. The - host must pass all feature URIs that it and the UI supports and any - additional data, just like in the LV2 plugin instantiate() - function. Note that UI features and plugin features are NOT necessarily - the same; @c features will probably not be the same array as the one the - plugin host passes to a plugin. - */ - LV2_PUI_Handle (*instantiate)( - struct _LV2_PUI_Descriptor const* descriptor, - char const* plugin_uri, - char const* bundle_path, - LV2_PUI_Host_Descriptor const* host_descriptor, - LV2_PUI_Host_Handle host_handle, - LV2_Feature const* const* features); - - /** - Return the widget pointer for the UI object. - This MUST return the same value during the entire lifetime of the UI - object. - */ - LV2_PUI_Widget (*get_widget)(LV2_PUI_Handle ui); - - /** - Destroy the UI object and the associated widget. - The host must not try to access the widget after calling this function. - */ - void (*cleanup)(LV2_PUI_Handle ui); - - /** - Notify the UI that something has happened to a subscribed port. - - This is called by the host when something happens at a plugin port that - has been subscribed to using - LV2_PUI_Host_Descriptor::add_port_subscription(). - - The @c buffer is only valid during the time of this function call, so if - the UI wants to keep it for later use it has to copy the contents to an - internal buffer. - - @param ui A handle for the UI object. - @param port_index The index of the port that has changed, as returned by - LV2_PUI_Host_Descriptor::port_index(). - @param buffer_size The size of the data buffer in bytes. - @param port_protocol The format of the data buffer, as returned by - LV2_PUI_Host_Descriptor::port_protocol_id(). - @param buffer A pointer to the data buffer. - */ - void (*port_event)(LV2_PUI_Handle ui, - uint32_t port_index, - uint32_t buffer_size, - uint32_t port_protocol, - void const* buffer); - - /** - Return a data structure associated with an extension URI. - - This facility can be used by extensions to extend the LV2_PUI_Descriptor - API. This function adheres to the same rules as - LV2_Descriptor::extension_data, except it applies to UIs rather than - plugins. - */ - void const* (*extension_data)(char const* uri); - -} LV2_PUI_Descriptor; - -typedef void* LV2_PUI_Lib_Data; - -/** - Descriptor for a plugin UI library. - - Each plugin UI shared library has exactly one of these objects, accessed - via the lv2_pui_lib_descriptor() function in that library. -*/ -typedef struct { - /** - Opaque library data which must be passed as the first parameter to - all the methods of this struct. - */ - LV2_PUI_Lib_Data lib_data; - - void (*cleanup)(LV2_PUI_Lib_Data lib_data); - - /** - Prototype for UI accessor function. - - This function follows the same rules as lv2_descriptor(), except it - applies to UIs rather than plugins. - */ - LV2_PUI_Descriptor const* (*pui_descriptor)(LV2_PUI_Lib_Data lib_data, - uint32_t index); - -} LV2_PUI_Lib_Descriptor; - -/** - Prototype for UI library accessor function. - - This is the entry point for a plugin UI library. Hosts load this symbol - from the library and call this function to obtain a library descriptor which - can be used to access all the UIs contained in this library. The returned - object must not be destroyed (with LV2_PUI_Lib_Descriptor::cleanup()) until - all UIs loaded from that library have been destroyed. -*/ -LV2_PUI_Lib_Descriptor const* lv2_pui_lib_descriptor( - const char* bundle_path, - LV2_Feature const* const* features); - -/** - Type of the lv2_pui_lib_descriptor() function in a UI library. -*/ -typedef LV2_PUI_Lib_Descriptor const* (*LV2_PUI_Lib_Descriptor_Func)( - const char* bundle_path, - LV2_Feature const* const* features); - -#ifdef __cplusplus -} -#endif - -#endif /* LV2_PUI_H */ diff --git a/lv2/ns/ext/pui/pui.ttl b/lv2/ns/ext/pui/pui.ttl deleted file mode 100644 index d305769..0000000 --- a/lv2/ns/ext/pui/pui.ttl +++ /dev/null @@ -1,284 +0,0 @@ -# LV2 Plugin UI Extension -# Copyright (C) 2010-2011 Lars Luthman -# -# Based on lv2.ttl, which is -# Copyright (C) 2006-2008 Steve Harris, David Robillard -# -# This extension should be considered a replacement for the earlier -# in-process UI extension with the URI . -# Hosts and plugins that used that extension should use this one instead. -# The earlier in-process UI extension is not compatible with LV2 revision 3 -# and later and may break in subtle ways. -# -# 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 doap: . -@prefix foaf: . -@prefix lv2: . -@prefix pui: . -@prefix rdf: . -@prefix rdfs: . - - - a lv2:Specification ; - doap:license ; - doap:name "LV2 UI" ; - doap:shortdesc "Generic UI interface for LV2 plugins." ; - doap:release [ - doap:revision "0.1" ; - doap:created "2011-03-26" - ] ; - doap:maintainer [ - a foaf:Person ; - foaf:name "Lars Luthman" ; - foaf:mbox - ] ; - lv2:documentation """ -

This extension defines an interface that can be used to create UIs for -plugins. The UIs are code that reside in shared object files in an LV2 -bundle and are referenced in the RDF data using the triples:

-
-@prefix pui: <http://lv2plug.in/ns/ext/pui#> .
-
-<http://example.org/my-ui>
-    a             pui:Gtk2UI ;
-    lv2:appliesTo <http://example.org/my-plugin> ;
-    pui:binary    <my-ui.so> .
-
-

... where http://example.org/my-plugin is the URI of the plugin, -http://example.org/my-ui is the URI of the plugin UI and -my-ui.so is the relative URI to the shared object file. While it -is possible to have the plugin UI and the plugin in the same shared object file -it is probably a good idea to keep them separate so that hosts that don't want -UIs don't have to load the UI code.

- -

A UI MUST specify its class in the RDF data and the class MUST be a proper -subclass of pui:UI, in this case pui:Gtk2UI. The class defines what type the -UI is, e.g. what graphics toolkit it uses. There are no UI classes defined in -this extension, those are specified separately (and anyone can define their -own).

- -

It's entirely possible to have multiple UIs for the same plugin, or to have -the UI for a plugin in a different bundle from the actual plugin - this way -people other than the plugin author can write plugin UIs independently without -editing the original plugin bundle. It is also possible to have one UI that -works with several different plugins.

- -

UIs should also be written in such a way that the host may load several -instances of an UI, or different UIs, and use them with the same plugin -instance.

- -

Note that the process that loads the shared object file containing the UI -code and the process that loads the shared object file containing the actual -plugin implementation do not have to be the same. There are many valid reasons -for having the plugin and the UI in different processes, or even on different -machines. This means that you can not use singletons and -global variables and expect them to refer to the same objects in the UI and the -actual plugin. The function callback interface defined in the header pui.h is -all you can expect to work.

-""" . - -pui:UI - a rdfs:Class ; - rdfs:subClassOf lv2:Feature ; - rdfs:label "UI" ; - lv2:documentation """ -

The class which represents an LV2 plugin UI. -

- -

To be used by a host a UI MUST have at least the following properties:

-
    -
  • rdf:type (with object a proper subclass of pui:UI)
  • -
  • doap:name (one without language tag)
  • -
  • lv2:binary (with a shared object file as object)
  • -
  • lv2:appliesTo (with a LV2 plugin as object)
  • -
- -

The rdf:type of an UI is used by the host to decide whether it supports the -UI and how to handle the LV2_PUI_Widget object that is returned by the UIs -get_widget() function. For example, a type of pui:Gtk2UI might tell the -host that LV2_PUI_Widget is a pointer to an object of a type defined in the -Gtk+ library. No UI types are defined in this extension, that is intentionally -left for other extensions.

- -

The doap:name property should be at most a few words in length using title -capitalization, e.g. "Flashy Mixer GUI". Use lv2:documentation for more -detailed descriptions.

- -

UIs may have optional or required features, specified using lv2:optionalFeature -or lv2:requiredFeature. The same rules apply here as for plugins; a host MUST -pass the LV2_Feature objects for all features it supports to the UI's -instantiate() function, a host SHOULD NOT try to instantiate an UI if it -doesn't support all of its required features, and an UI MUST fail to -instantiate if the host doesn't pass all required features to instantiate(). -

- -

For details about the C API used to load UIs, see the file pui.h. -

-""" . - -pui:PortProtocol - a rdfs:Class ; - rdfs:subClassOf lv2:Feature ; - rdfs:label "Port protocol" ; - lv2:documentation """ -

A PortProtocol defines a certain way of communicating port data between UI -and plugin. PortProtocols can be specified in additional extensions, and -those extensions MUST specify: -

- -
    -
  1. Which plugin port types the buffer type is valid for
  2. -
  3. When the host should call port_event() in LV2_PUI_Descriptor
  4. -
  5. The format of the data in the buffer passed to port_event()
  6. -
  7. The format of the data in the buffer passed to write_port()
  8. -
  9. What happens when the UI calls write_port() in LV2_PUI_Host_Descriptor
  10. -
  11. What data (if any) should be passed in the LV2_Feature data pointer.
  12. -
- -

For an example, see pui:floatControl or pui:floatPeakRMS. -

- -

PortProtocol is a subclass of lv2:Feature, so UIs use lv2:optionalFeature and -lv2:requiredFeature to specify which PortProtocols they want to use. -

-""" . - -pui:floatControl - a pui:PortProtocol ; - rdfs:label "Floating point value" ; - lv2:documentation """ -

The rules (see pui:PortProtocol) for this port protocol are:

-
    -
  1. This PortProtocol is valid for ports with the type lv2:ControlPort.
  2. -
  3. The host SHOULD call port_event() as soon as possible when the port value - has changed, but the plugin MUST NOT depend on a call for every change or - the timing of the calls. However, the host MUST do the calls in the same - order that the value changes occur in.
  4. -
  5. The format of the data in the buffer passed to port_event() is a single - float, and the buffer size is sizeof(float).
  6. -
  7. Same as 3.
  8. -
  9. The host SHOULD change the port value as soon as possible when write_port() - is called, but the UI MUST NOT depend on a change for every call or the - timing of the changes. However, the host MUST do the changes in the same - order that the function calls occur in.
  10. -
  11. The data pointer in the LV2_Feature object for this feature should be - NULL.
  12. -
-""" . - -pui:floatPeakRMS - a pui:PortProtocol ; - rdfs:label "Peak and RMS for a period of audio data" ; - lv2:documentation """ -

This port protocol defines a way for the host to send continuous peak -and RMS measurements of the audio signal at a certain port to the UI. The -intended use is visualisation, e.g. an animated meter widget that shows -the level of the audio input or output.

- -

A contiguous sequence of audio samples for which a single peak value -and a single RMS value have been computed is called a measurement -period.

- -

The rules (see pui:PortProtocol) for this port protocol are:

-
    -
  1. This PortProtocol is valid for ports with the type lv2:AudioPort.
  2. -
  3. The host SHOULD call port_event() at regular intervals. The measurement - periods used for calls to port_event() for the same port SHOULD be - contiguous (i.e. the measurement period for one call should begin right - after the end of the measurement period for the previous call ends) unless - the UI has removed and re-added the port subscription between those calls. - However, UIs MUST NOT depend on either the regularity of the calls or the - contiguity of the measurement periods; hosts may change the call rate - or skip calls for performance or other reasons. Measurement periods for - different calls to port_event() for the same port MUST NOT overlap.
  4. -
  5. The format of the data in the buffer passed to port_event() is a single - LV2_PUI_Peak_RMS_Data object, and the buffer size is - sizeof(LV2_PUI_Peak_RMS_Data).
  6. -
  7. The UI MUST NOT call write_port() with the ID for this port protocol as - the port_protocol parameter.
  8. -
  9. The host MUST ignore any write_port() calls with the ID for this port - protocol as the port_protocol parameter.
  10. -
  11. The data pointer in the LV2_Feature object for this feature should be - NULL.
  12. -
-""" . - -pui:events - a pui:PortProtocol ; - rdfs:label "Event buffer" ; - lv2:documentation """ -
    -
  1. This PortProtocol is valid for ports with the type ev:EventPort.
  2. -
  3. The host MUST call port_event() whenever there is an event in an input port - prior to the plugin instance's run() function is called, and whenever there - is an event in an output port after run() has been called. The UI MUST NOT - depend on the timing of the calls. However, the host MUST do the calls in - the same order that the events occur in. The host is allowed and encouraged - to bundle multiple events into a single port_event() call if it improves - performance.
  4. -
  5. The data buffer passed to port_event() is an LV2_Event_Buffer, as specified - in the Event extension. The stamp_type MUST be ignored. The frames and - subframes fields of every event in the buffer MUST be ignored. Events with - type 0 (reference counted events) MUST be ignored.
  6. -
  7. The data buffer passed to write_event() is an LV2_Event_Buffer, as - specified in the Event extension. The stamp_type MUST be ignored. The - frames and subframes fields of every event in the buffer MUST be - ignored. The host MUST NOT pass events with type 0 (references) unless the - UI supports the feature "http://lv2plug.in/ns/ext/event".
  8. -
  9. The host MUST pass all the events in the buffer to the plugin instance's - event port in the same order, but the plugin and the UI MUST NOT depend on - the timing of the events, or on whether they are all sent to the plugin in - the same run() call or distributed over multiple calls.
  10. -
  11. The data pointer in the LV2_Feature object for this feature should be - NULL.
  12. -
-""" . - -pui:Gtk2UI - a rdfs:Class ; - rdfs:subClassOf pui:UI ; - rdfs:label "Gtk+ UI" ; - lv2:documentation """ -

The class which represents a Gtk+ UI. For a successfully created instance of -an UI of this class, the get_widget() function MUST return a pointer to a valid -GtkWidget object compatible with Gtk+ version 2.0. The host MUST ensure that -the Gtk+ library has been initialised and that the Glib main loop is running -before an UI of this type is instantiated.

- -

Unless otherwise specified by extensions, all function pointers in -LV2_PUI_Descriptor may only be called from the thread that runs the Glib main -loop.

-""" . - -pui:noHostResize - a lv2:Feature ; - rdfs:label "No host resize" ; - lv2:documentation """ -

This Feature should only be used with UIs.

- -

When this Feature is active the host SHOULD NOT resize the UI widget to any -other size than its natural size, which the host should be able to determine -via the API of whatever toolkit the UI is implemented in. However, the UI MUST -NOT break if the widget is resized to another size. This Feature can be used -for example when the widget uses a fixed-size pixmap interface.

- -

The data pointer in the LV2_Feature object for this Feature should be set to -NULL.

-""" . diff --git a/lv2/ns/ext/pui/waf b/lv2/ns/ext/pui/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/pui/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/pui/wscript b/lv2/ns/ext/pui/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/pui/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/reference/ext.pc.in b/lv2/ns/ext/reference/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/reference/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/reference/manifest.ttl b/lv2/ns/ext/reference/manifest.ttl deleted file mode 100644 index e25c54d..0000000 --- a/lv2/ns/ext/reference/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/reference/reference.h b/lv2/ns/ext/reference/reference.h deleted file mode 100644 index 26ef4c3..0000000 --- a/lv2/ns/ext/reference/reference.h +++ /dev/null @@ -1,161 +0,0 @@ -/* - Copyright 2008-2011 David Robillard - - 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. -*/ - -/** - @file reference.h C header for the LV2 Reference extension - . -*/ - -#ifndef LV2_REFERENCE_H -#define LV2_REFERENCE_H - -#define LV2_REFERENCE_URI "http://lv2plug.in/ns/ext/reference" -#define LV2_REFERENCE_BLOB_SUPPORT_URI LV2_REFERENCE_URI "#blobSupport" - -#include -#include - -#include "lv2/lv2plug.in/ns/ext/atom/atom.h" - -/** - Dynamically Allocated Data. - - This is an opaque piece of data of any type, dynamically allocated in memory. - Unlike an "atom", a "blob" is not necessarily POD. Non-POD data is referred - to by a "reference (a special case of atom with type 0). - - This is a pointer to host data which is opaque to the plugin. Plugins MUST - NOT interpret this data in any way, except via host-provided functions in - LV2_Blob_Support. -*/ -typedef void* LV2_Blob; - -typedef LV2_Atom LV2_Reference; - -typedef void* LV2_Blob_Support_Data; - -typedef void (*LV2_Blob_Destroy)(LV2_Blob* blob); - -/** - The data field of the LV2_Feature for reference:blobSupport. - - A host which supports blobs must pass an LV2_Feature to the plugin's - instantiate method with 'URI' = "http://lv2plug.in/ns/ext/reference#blobSupport" - and 'data' pointing to an instance of this struct. All fields of this struct - MUST be set to non-NULL values by the host, except possibly 'data'. -*/ -typedef struct { - - /** - Pointer to opaque host data. - - The plugin MUST pass this to any call to functions in this struct. - Otherwise, the plugin MUST NOT interpret this value in any way. - */ - LV2_Blob_Support_Data data; - - /** - The size of a reference, in bytes. - - This value is provided by the host so plugins can allocate large enough - chunks of memory to store references. Note a reference is an LV2_Reference - with type reference:Reference, hence ref_size is a uint16, like - LV2_Reference.size. - */ - uint16_t ref_size; - - /** - Return the Blob referred to by @a ref. - - The returned value MUST NOT be used in any way other than by calling - methods defined in LV2_Blob_Support (e.g. it MUST NOT be directly - accessed, copied, or destroyed). The actual payload of the blob can - be accessed with LV2_Blob_Support.blob_get. - */ - LV2_Blob (*ref_get)(LV2_Blob_Support_Data data, - LV2_Reference* ref); - - /** - Copy a reference. - This copies a reference but not the blob it refers to, - i.e. after this call @a dst and @a src refer to the same LV2_Blob. - */ - void (*ref_copy)(LV2_Blob_Support_Data data, - LV2_Reference* dst, - LV2_Reference* src); - - /** - Reset (release) a reference. - After this call, @a ref is invalid. Implementations must be sure to - call this function when necessary, or memory leaks will result. The - specific times this is necessary MUST be defined by any extensions that - define a mechanism for transporting references. The standard semantics are: -
  • Whenever passed a Reference (e.g. via a Port) and run, the - plugin owns that reference.
  • -
  • The plugin owns any reference it creates (e.g. by using blob_new or - ref_copy).
  • -
  • For any reference it owns, the plugin MUST either: -
    • Copy the reference and store it (to be used in future runs and - released later).
    • -
    • Copy the reference to an output port exactly once.
    • -
    • Release it with ref_reset.
  • -
- */ - void (*ref_reset)(LV2_Blob_Support_Data data, - LV2_Reference* ref); - - /** - Initialize a reference to point to a newly allocated Blob. - - @param data Must be the data member of this struct. - @param ref Pointer to an area of memory at least as large as - the ref_size field of this struct. On return, this will - be the unique reference to the new blob, which is owned by the - caller. Assumed to be uninitialised, i.e. the caller MUST NOT - pass a valid reference since this could cause a memory leak. - @param destroy Function to destroy this blob. This function - MUST clean up any resources contained in the blob, but MUST NOT - attempt to free the memory pointed to by its LV2_Blob* parameter - (since this is allocated by the host). - @param type ID of type of blob to allocate. - @param size Size of blob to allocate in bytes. - */ - void (*blob_new)(LV2_Blob_Support_Data data, - LV2_Reference* ref, - LV2_Blob_Destroy destroy, - uint32_t type, - size_t size); - - /** - Get blob's type as an ID. - - The return value may be any type URI, mapped to an integer with the - URI Map extension with context = NULL. - */ - uint32_t (*blob_type)(LV2_Blob blob); - - /** - Get blob's body. - - Returns a pointer to the start of the blob data. The format of this - data is defined by the return value of the type method. It MUST NOT - be used in any way by code which does not understand that type. - */ - void* (*blob_data)(LV2_Blob blob); - -} LV2_Blob_Support; - -#endif /* LV2_REFERENCE_H */ diff --git a/lv2/ns/ext/reference/reference.ttl b/lv2/ns/ext/reference/reference.ttl deleted file mode 100644 index bbf56d4..0000000 --- a/lv2/ns/ext/reference/reference.ttl +++ /dev/null @@ -1,82 +0,0 @@ -# LV2 Reference Extension -# Copyright 2007-2011 David Robillard -# -# 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. - -@prefix atom: . -@prefix doap: . -@prefix foaf: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . -@prefix reference: . - - - a lv2:Specification ; - doap:name "LV2 Reference" ; - doap:shortdesc "A reference data type for using non-POD data." ; - doap:release [ - doap:revision "0.1" ; - doap:created "2011-07-22" - ] ; - doap:maintainer [ - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - rdfs:seeAlso - ] ; - lv2:documentation """ -

This extension defines a mechanism for working with generic/opaque -dynamically allocated memory, called a "Blob", which is -(unlike an Atom) not necessarily POD. Blobs are accessed via a -reference:Reference, which is a special case of Atom that always has type = -0, is not POD, and can only be copied using host provided functions. -This allows plugins and hosts to work with data of any type at all.

-""" . - -reference:Reference a rdfs:Class ; - rdfs:subClassOf atom:Atom ; - rdfs:label "Reference" ; - lv2:documentation """ -

Reference to an lv2:Blob. The actual contents of a Reference are opaque and -host specific, and must not be copied, serialized, or otherwise interpreted by -a plugin, except via functions provided by the host in LV2_Blob_Support.

- -

A Reference is a special case of Atom with type = 0. -"Null" is the unique Atom with type = 0 and -size = 0.

-""" . - -reference:blobSupport a lv2:Feature ; - rdfs:label "Blob support" ; - lv2:documentation """ -

Support for dynamically allocated blobs. If a host supports this feature, -it MUST pass a LV2_Feature with URI -http://lv2plug.in/ns/ext/atom#blobSupport and data pointing to a -LV2_Blob_Support.

-""" . - -reference:Blob a rdfs:Class ; - rdfs:label "Blob" ; - lv2:documentation """ -

Base class for all dynamically allocated blobs. An LV2_Blob is an opaque -pointer to host data. The type and data of a blob can be accessed via -host-provided functions in LV2_Blob_Support. The type of a blob can be any URI -that describes a data format. Blobs are always allocated by the host, and -unlike atoms are not necessarily POD.

- -

Blob data MUST NOT be used in any way by an implementation that does not -understand that blob type (unlike Atoms, meaningful type-oblivious use -of a Blob is impossible).

-""" . diff --git a/lv2/ns/ext/reference/waf b/lv2/ns/ext/reference/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/reference/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/reference/wscript b/lv2/ns/ext/reference/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/reference/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/resize-port/ext.pc.in b/lv2/ns/ext/resize-port/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/resize-port/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/resize-port/manifest.ttl b/lv2/ns/ext/resize-port/manifest.ttl deleted file mode 100644 index 37d1b42..0000000 --- a/lv2/ns/ext/resize-port/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/resize-port/resize-port.h b/lv2/ns/ext/resize-port/resize-port.h deleted file mode 100644 index 7f014a3..0000000 --- a/lv2/ns/ext/resize-port/resize-port.h +++ /dev/null @@ -1,57 +0,0 @@ -/* LV2 Resize Port Extension - * Copyright (C) 2007-2009 David Robillard - * - * 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 -#include -#include - -#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/lv2/ns/ext/resize-port/resize-port.ttl b/lv2/ns/ext/resize-port/resize-port.ttl deleted file mode 100644 index a458431..0000000 --- a/lv2/ns/ext/resize-port/resize-port.ttl +++ /dev/null @@ -1,80 +0,0 @@ -# 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: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . -@prefix doap: . -@prefix foaf: . - - - a lv2:Specification ; - a lv2:Feature ; - doap:name "LV2 Resize Port Extension" ; - doap:shortdesc "Dynamically sized LV2 port buffers." ; - lv2:documentation """ -

An extension that allows LV2 plugins to request a resize of an output -port.

- -

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. This structure provides a -resize_port function which plugins may use to resize output port buffers as -necessary.

- -

This extension also defines several predicates useful for describing the -amount of space required for a particular port buffer.

-""" . - -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/lv2/ns/ext/resize-port/waf b/lv2/ns/ext/resize-port/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/resize-port/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/resize-port/wscript b/lv2/ns/ext/resize-port/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/resize-port/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/state/ext.pc.in b/lv2/ns/ext/state/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/state/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/state/manifest.ttl b/lv2/ns/ext/state/manifest.ttl deleted file mode 100644 index bff9ad5..0000000 --- a/lv2/ns/ext/state/manifest.ttl +++ /dev/null @@ -1,8 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 5 ; - rdfs:seeAlso . diff --git a/lv2/ns/ext/state/state.h b/lv2/ns/ext/state/state.h deleted file mode 100644 index b450b93..0000000 --- a/lv2/ns/ext/state/state.h +++ /dev/null @@ -1,359 +0,0 @@ -/* - Copyright 2010-2012 David Robillard - Copyright 2010 Leonard Ritter - - 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. -*/ - -/** - @file - C API for the LV2 State extension . -*/ - -#ifndef LV2_STATE_H -#define LV2_STATE_H - -#include -#include - -#include "lv2/lv2plug.in/ns/lv2core/lv2.h" - -#ifdef __cplusplus -extern "C" { -#else -# include -#endif - -#define LV2_STATE_URI "http://lv2plug.in/ns/ext/state" - -#define LV2_STATE_INTERFACE_URI LV2_STATE_URI "#Interface" -#define LV2_STATE_PATH_URI LV2_STATE_URI "#Path" -#define LV2_STATE_MAP_PATH_URI LV2_STATE_URI "#mapPath" -#define LV2_STATE_MAKE_PATH_URI LV2_STATE_URI "#makePath" - -typedef void* LV2_State_Handle; -typedef void* LV2_State_Map_Path_Handle; -typedef void* LV2_State_Make_Path_Handle; - -/** - Flags describing value characteristics. - - These flags are used along with the value's type URI to determine how to - (de-)serialise the value data, or whether it is even possible to do so. -*/ -typedef enum { - - /** - Plain Old Data. - - Values with this flag contain no references to non-persistent or - non-global resources (e.g. pointers, handles, local paths, etc.). It is - safe to copy POD values with a simple memcpy and store them for use at - any time in the future on a machine with a compatible architecture - (e.g. the same endianness and alignment). - - Implementations MUST NOT attempt to copy or serialise a non-POD value if - they do not understand its type (and thus know how to correctly do so). - */ - LV2_STATE_IS_POD = 1, - - /** - Portable (architecture independent) data. - - Values with this flag are in a format that is usable on any - architecture, i.e. if the value is saved on one machine it can safely be - restored on another machine regardless of endianness, alignment, etc. - */ - LV2_STATE_IS_PORTABLE = 1 << 1, - - /** - Native data. - - This flag is used by the host to indicate that the saved data is only - going to be used locally in the currently running process (e.g. for - instance duplication or snapshots), so the plugin should use the most - efficient representation possible and not worry about serialisation - and portability. - */ - LV2_STATE_IS_NATIVE = 1 << 2 - -} LV2_State_Flags; - -/** - A host-provided function to store a property. - @param handle Must be the handle passed to LV2_State_Interface.save(). - @param key The key (predicate) to store @c value under (URI mapped integer). - @param value Pointer to the value (object) to be stored. - @param size The size of the data at @c value in bytes. - @param type The type of @c value (URI). - @param flags LV2_State_Flags for @c value. - @return 0 on success, otherwise a non-zero error code. - - The host passes a callback of this type to LV2_State_Interface.save(). This - callback is called repeatedly by the plugin within - LV2_State_Interface.save() to store all the statements that describe its - current state. - - DO NOT INVENT NONSENSE URI SCHEMES FOR THE KEY. Best is to use keys from - existing vocabularies. If nothing appropriate is available, use http URIs - that point to somewhere you can host documents, so you can make - documentation resolvable. If this is not possible, invent a URN scheme, - e.g. urn:myproj:whatever. The plugin MUST NOT pass an invalid URI key. - - The host MAY fail to store a property for whatever reason, but SHOULD - store any property that is LV2_STATE_IS_POD and LV2_STATE_IS_PORTABLE. - Implementations SHOULD use the types from the LV2 Atom extension - (http://lv2plug.in/ns/ext/atom) wherever possible. - - Note that @c size MUST be > 0, and @c value MUST point to a valid region of - memory @c size bytes long (this is required to make restore unambiguous). - - The plugin MUST NOT attempt to use this function outside of the - LV2_State_Interface.restore() context. -*/ -typedef int (*LV2_State_Store_Function)(LV2_State_Handle handle, - uint32_t key, - const void* value, - size_t size, - uint32_t type, - uint32_t flags); - -/** - A host-provided function to retrieve a property. - @param handle Must be the handle passed to - LV2_State_Interface.restore(). - @param key The key (predicate) of the property to retrieve (URI). - @param size (Output) If non-NULL, set to the size of the restored value. - @param type (Output) If non-NULL, set to the type of the restored value. - @param flags (Output) If non-NULL, set to the LV2_State_Flags for - the returned value. - @return A pointer to the restored value (object), or NULL if no value - has been stored under @c key. - - A callback of this type is passed by the host to - LV2_State_Interface.restore(). This callback is called repeatedly by the - plugin within LV2_State_Interface.restore() to retrieve any properties it - requires to restore its state. - - The returned value MUST remain valid until LV2_State_Interface.restore() - returns. - - The plugin MUST NOT attempt to use this function, or any value returned from - it, outside of the LV2_State_Interface.restore() context. Returned values - MAY be copied for later use if necessary, assuming the plugin knows how to - do so correctly (e.g. the value is POD, or the plugin understands the type). -*/ -typedef const void* (*LV2_State_Retrieve_Function)(LV2_State_Handle handle, - uint32_t key, - size_t* size, - uint32_t* type, - uint32_t* flags); - -/** - State Extension Data. - - When the plugin's extension_data is called with argument LV2_STATE_URI, - the plugin MUST return an LV2_State structure, which remains valid for the - lifetime of the plugin. - - The host can use the contained function pointers to save and restore the - state of a plugin instance at any time (provided the threading restrictions - for the given function are met). - - The typical use case is to save the plugin's state when a project is saved, - and to restore the state when a project has been loaded. Other uses are - possible (e.g. cloning plugin instances or taking a snapshot of plugin - state). - - Stored data is only guaranteed to be compatible between instances of plugins - with the same URI (i.e. if a change to a plugin would cause a fatal error - when restoring state saved by a previous version of that plugin, the plugin - URI MUST change just as it must when ports change incompatibly). Plugin - authors should consider this possibility, and always store sensible data - with meaningful types to avoid such compatibility issues in the future. -*/ -typedef struct _LV2_State_Interface { - - /** - Save plugin state using a host-provided @c store callback. - - @param instance The instance handle of the plugin. - @param store The host-provided store callback. - @param handle An opaque pointer to host data, e.g. the map or - file where the values are to be stored. If @c store is called, this MUST - be passed as its handle parameter. - @param flags Flags describing desires properties of this save. The - plugin SHOULD use these values to determine the most appropriate and/or - efficient serialisation, but is not required to do so. - @param features Extensible parameter for passing any additional - features to be used for this save. - - The plugin is expected to store everything necessary to completely - restore its state later (possibly much later, in a different process, on - a completely different machine, etc.) - - The @c handle pointer and @c store function MUST NOT be used - beyond the scope of save(). - - This function has its own special threading class: it may not be called - concurrently with any "Instantiation" function, but it may be called - concurrently with functions in any other class, unless the definition of - that class prohibits it (e.g. it may not be called concurrently with a - "Discovery" function, but it may be called concurrently with an "Audio" - function. The plugin is responsible for any locking or lock-free - techniques necessary to make this possible. - - Note that in the simple case where state is only modified by restore(), - there are no synchronization issues since save() is never called - concurrently with restore() (though run() may read it during a save). - - Plugins that dynamically modify state while running, however, must take - care to do so in such a way that a concurrent call to save() will save a - consistent representation of plugin state for a single instant in time. - */ - void (*save)(LV2_Handle instance, - LV2_State_Store_Function store, - LV2_State_Handle handle, - uint32_t flags, - const LV2_Feature *const * features); - - /** - Restore plugin state using a host-provided @c retrieve callback. - - @param instance The instance handle of the plugin. - @param retrieve The host-provided retrieve callback. - @param handle An opaque pointer to host data, e.g. the map or - file from which the values are to be restored. If @c retrieve is - called, this MUST be passed as its handle parameter. - @param flags Currently unused. - @param features Extensible parameter for passing any additional - features to be used for this restore. - - The plugin MAY assume a restored value was set by a previous call to - LV2_State_Interface.save() by a plugin with the same URI. - - The plugin MUST gracefully fall back to a default value when a value can - not be retrieved. This allows the host to reset the plugin state with an - empty map. - - The @c handle pointer and @c store function MUST NOT be used - beyond the scope of restore(). - - This function is in the "Instantiation" threading class as defined by - LV2. This means it MUST NOT be called concurrently with any other - function on the same plugin instance. - */ - void (*restore)(LV2_Handle instance, - LV2_State_Retrieve_Function retrieve, - LV2_State_Handle handle, - uint32_t flags, - const LV2_Feature *const * features); - -} LV2_State_Interface; - -/** - Feature data for state:mapPath (LV2_STATE_MAP_PATH_URI). -*/ -typedef struct { - - /** - Opaque host data. - */ - LV2_State_Map_Path_Handle handle; - - /** - Map an absolute path to an abstract path for use in plugin state. - @param handle MUST be the @a handle member of this struct. - @param absolute_path The absolute path of a file. - @return An abstract path suitable for use in plugin state. - - The plugin MUST use this function to map any paths that will be stored - in files in plugin state. The returned value is an abstract path which - MAY not be an actual file system path; @ref absolute_path MUST be used - to map it to an actual path in order to use the file. - - Hosts MAY map paths in any way (e.g. by creating symbolic links within - the plugin's state directory or storing a list of referenced files - elsewhere). Plugins MUST NOT make any assumptions about abstract paths - except that they can be mapped back to an absolute path using @ref - absolute_path. - - This function may only be called within the context of - LV2_State_Interface.save() or LV2_State_Interface.restore(). The caller - is responsible for freeing the returned value. - */ - char* (*abstract_path)(LV2_State_Map_Path_Handle handle, - const char* absolute_path); - - /** - Map an abstract path from plugin state to an absolute path. - @param handle MUST be the @a handle member of this struct. - @param abstract_path An abstract path (e.g. a path from plugin state). - @return An absolute file system path. - - Since abstract paths are not necessarily actual file paths (or at least - not necessarily absolute paths), this function MUST be used in order to - actually open or otherwise use the file referred to by an abstract path. - - This function may only be called within the context of - LV2_State_Interface.save() or LV2_State_Interface.restore(). The caller - is responsible for freeing the returned value. - */ - char* (*absolute_path)(LV2_State_Map_Path_Handle handle, - const char* abstract_path); - -} LV2_State_Map_Path; - -/** - Feature data for state:makePath (@ref LV2_STATE_MAKE_PATH_URI). -*/ -typedef struct { - - /** - Opaque host data. - */ - LV2_State_Make_Path_Handle handle; - - /** - Return a path the plugin may use to create a new file. - @param handle MUST be the @a handle member of this struct. - @param path The path of the new file relative to a namespace unique - to this plugin instance. - @return The absolute path to use for the new file. - - This function can be used by plugins to create files and directories, - either at state saving time (if this feature is passed to - LV2_State_Interface.save()) or any time (if this feature is passed to - LV2_Descriptor.instantiate()). - - The host must do whatever is necessary for the plugin to be able to - create a file at the returned path (e.g. using fopen), including - creating any leading directories. - - If this function is passed to LV2_Descriptor.instantiate(), it may be - called from any non-realtime context. If it is passed to - LV2_State_Interface.save(), it may only be called within the dynamic - scope of that function call. - - The caller is responsible for freeing the returned value with free(). - */ - char* (*path)(LV2_State_Make_Path_Handle handle, - const char* path); - -} LV2_State_Make_Path; - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* LV2_STATE_H */ diff --git a/lv2/ns/ext/state/state.ttl b/lv2/ns/ext/state/state.ttl deleted file mode 100644 index 6c0656a..0000000 --- a/lv2/ns/ext/state/state.ttl +++ /dev/null @@ -1,359 +0,0 @@ -# LV2 State Extension -# Copyright 2010-2012 David Robillard -# Copyright 2010 Leonard Ritter -# -# 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. - -@prefix dcs: . -@prefix doap: . -@prefix foaf: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . -@prefix state: . - - - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - foaf:mbox ; - rdfs:seeAlso . - - - a lv2:Specification ; - doap:name "LV2 State" ; - doap:shortdesc "An interface for LV2 plugins to save and restore state." ; - doap:license ; - doap:release [ - doap:revision "0.5" ; - doap:created "2012-01-29" ; - dcs:blame - ] ; - doap:developer [ - a foaf:Person ; - foaf:name "Leonard Ritter" ; - foaf:homepage - ] ; - doap:maintainer [ - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - rdfs:seeAlso - ] ; - lv2:documentation """ -

This extension provides a simple mechanism for plugins to save and restore -state across instances, allowing hosts to save and restore a plugin instance's -state at any time. The goal is for an instance's state to be -completely described by port values (as with all LV2 plugins) and a -dictionary.

- -

The state described by this extension is conceptually a simple -key:value dictionary, where keys are URIDs (URIs mapped to integers) and values -are type-tagged blobs of any type. A single key:value pair is called a -property. To implement state, the plugin provides a state:Interface to -the host. To save or restore, the host calls LV2_State_Interface::save() or -LV2_State_Interface::restore(), passing a callback to be used for handling a -single property. The host is free to implement property storage and retrieval -in any way.

- -

This state model is simple yet has many benefits:

-
    -
  • URID keys provide both fast performance and RDF compatibility.
  • -
  • Fully extensible, no limitations on keys or value types.
  • -
  • Easy to serialise in many formats (e.g. any RDF syntax, plain - text, JSON, XML, key:value databases, SQL, s-expressions, etc.).
  • -
  • Elegantly described in Turtle, which is useful for describing presets - or default state in LV2 data files (the predicate state:state is provided - for this purpose).
  • -
  • Does not impose any file formats, data structures, or file system - requirements.
  • -
  • Suitable for portable persistent state as well as fast in-memory - snapshots.
  • -
  • Easily stored in a typical map or dictionary data - structure.
  • -
  • Keys may be defined by extensions and used by several plugins, - making state meaningful enabling dynamic state control.
  • -
- -

Implementations or further extensions which work with plugin state -(including dynamic plugin control) SHOULD work entirely within this model. -That is, do not complicate the state model. All -information required to express an instance's state at any given time can, and -should, be expressed within this model.

- -

Plugin Code Example

- -
-#define NS_EG   "http://example.org/"
-#define NS_ATOM "http://lv2plug.in/ns/ext/atom#"
-
-LV2_Handle my_instantiate(...)
-{
-    MyPlugin* plugin = ...;
-    plugin->uris.atom_String = map_uri(NS_ATOM "String");
-    plugin->uris.eg_greeting = map_uri(NS_EG "greeting");
-    plugin->state.greeting   = strdup("Hello");
-    return plugin;
-}
-
-void my_save(LV2_Handle                 instance,
-             LV2_State_Store_Function   store,
-             void*                      handle,
-             uint32_t                   flags,
-             const LV2_Feature *const * features)
-{
-    MyPlugin*   plugin   = (MyPlugin*)instance;
-    const char* greeting = plugin->state.greeting;
-
-    store(handle,
-          plugin->uris.eg_greeting,
-          greeting,
-          strlen(greeting) + 1,
-          plugin->uris.atom_String,
-          LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE);
-}
-
-void my_restore(LV2_Handle                  instance,
-                LV2_State_Retrieve_Function retrieve,
-                void*                       handle,
-                uint32_t                    flags,
-                const LV2_Feature *const *  features)
-{
-    MyPlugin* plugin = (MyPlugin*)instance;
-
-    size_t      size;
-    uint32_t    type;
-    uint32_t    flags;
-    const char* greeting = retrieve(
-        handle, plugin->uris.eg_greeting, &size, &type, &flags);
-
-    if (greeting) {
-        free(plugin->state->greeting);
-        plugin->state->greeting = strdup(greeting);
-    } else {
-        plugin->state->greeting = strdup("Hello");
-    }
-}
-
-const void* my_extension_data(const char* uri)
-{
-    static const LV2_State_Interface state_iface = { my_save, my_restore };
-    if (!strcmp(uri, LV2_STATE_INTERFACE_URI)) {
-        return &state_iface;
-    }
-}
-
- -

Host Code Example

- -
-int store_callback(void*       handle,
-                   uint32_t    key,
-                   const void* value,
-                   size_t      size,
-                   uint32_t    type,
-                   uint32_t    flags)
-{
-    if ((flags & LV2_STATE_IS_POD)) {
-        /* We only care about POD since we're keeping state in memory only.
-           If this was for disk or network storage/transmission,
-           LV2_STATE_IS_PORTABLE would have to be checked as well.
-        */
-        Map* state_map = (Map*)handle;
-        state_map->insert(key, Value(copy(value), size, type, pod));
-        return 0;
-    } else {
-        return 1; /* Non-POD events are unsupported. */
-    }
-}
-
-Map get_plugin_state(LV2_Handle instance)
-{
-    LV2_State* state = instance.extension_data("http://lv2plug.in/ns/ext/state");
-    Map state_map;
-    /** Request a fast/native/POD save, since we're just copying in memory */
-    state.save(instance, store_callback, &state_map,
-               LV2_STATE_IS_POD|LV2_STATE_IS_NATIVE);
-    return state_map;
-}
-
- -

Referring to Existing Files

- -

Plugins may need to refer to files (e.g. loaded samples) in their state. -This is done by storing the file's path as a property just like any other -value. However, there are some rules which MUST be followed when storing -paths, see state:mapPath for details.

- -

Creating New Files or Directories

- -

Implementations are strongly encouraged to avoid the use of files and simply -store all state as properties whenever possible. However, occasionally the -ability to create files is necessary. The feature state:newPath makes this possible, if it is provided by the -host.

-""" . - -state:Interface - a rdfs:Class ; - rdfs:subClassOf lv2:ExtensionData ; - lv2:documentation """ -

A structure (LV2_State_Interface) which contains functions to be called by -the host to save and restore state. In order to support this extension, the -plugin must return a valid LV2_State_Interface from -LV2_Descriptor::extension_data() when it is called with -LV2_STATE_INTERFACE_URI.

- -

The plugin data file should describe this like so:

-
-@prefix state: <http://lv2plug.in/ns/ext/state#> .
-
-<plugin>
-    a lv2:Plugin ;
-    lv2:extensionData state:Interface .
-
-""" . - -state:State - a rdfs:Class ; - rdfs:label "Plugin Instance State" ; - lv2:documentation """ -

This class is used to express a plugin instance's state in RDF. The -key/value properties of the instance form the predicate/object (respectively) -of triples with a state:State as the subject (see state:state for an example). This may be used wherever it is -useful to express a plugin instance's state in RDF (e.g. for serialisation, -storing in a model, or transmitting over a network). Note that this class is -provided because it may be useful for hosts, plugins, or extensions that work -with instance state, but its use is not required to support the LV2 State -extension.

-""" . - -state:state - a rdf:Property ; - rdfs:range state:State ; - lv2:documentation """ -

Predicate to relate a plugin instance to its State. This may be used -wherever the state of a particular plugin instance needs to be represented. -Note that the domain of this property is unspecified, since LV2 does not define -any RDF class for plugin instance. This predicate may be used wherever it makes -sense to do so, e.g.:

-
-@prefix eg: <http://example.org/> .
-
-<plugininstance>
-    state:state [
-        eg:somekey "some value" ;
-        eg:someotherkey "some other value" ;
-        eg:favourite-number 2
-    ] .
-
-

Note that this property is provided because it may be useful for hosts, -plugins, or extensions that work with instance state, but its use is not -required to support this extension.

-""" . - -state:mapPath - a lv2:Feature ; - rdfs:label "Support for storing paths in files" ; - lv2:documentation """ - -

This feature maps absolute paths to/from abstract paths which are -stored in state. To support this feature a host must pass an LV2_Feature with -URI LV2_STATE_MAP_PATH_URI and data pointed to an LV2_State_Map_Path to the -plugin's LV2_State_Interface methods.

- -

The plugin MUST map all paths stored in its state (including in any -files in its state). This is necessary to enable host to handle file system -references correctly, e.g. for distribution or archival.

- -

For example, a plugin may write a path to a state file like so:

- -
-void write_path(LV2_State_Map_Path* map_path, FILE* myfile, const char* path)
-{
-    char* abstract_path = map_path->abstract_path(map_path->handle, path);
-    fprintf(myfile, "%s", abstract_path);
-    free(abstract_path);
-}
-
- -

Then, later reload the path like so:

- -
-char* read_path(LV2_State_Map_Path* map_path, FILE* myfile)
-{
-    /* Obviously this is not production quality code! */
-    char abstract_path[1024];
-    fscanf(myfile, "%s", abstract_path);
-    return map_path->absolute_path(map_path->handle, abstract_path);
-}
-
-""" . - -state:makePath - a lv2:Feature ; - rdfs:label "Support for creating new files and directories" ; - lv2:documentation """ - -

This feature allows plugins to create new files and/or directories. To -support this feature the host passes an LV2_Feature with URI -LV2_STATE_MAKE_PATH_URI and data pointed to an LV2_State_Make_Path to the -plugin. The host may make this feature available only during save by passing -it to LV2_State_Interface::save(), or available any time by passing it to -LV2_Descriptor::instantiate(). If passed to LV2_State_Interface::save(), the -feature MUST NOT be used beyond the scope of that call.

- -

The plugin is guaranteed a hierarchial namespace unique to that plugin -instance, and may expect the returned path to have the requested path as a -suffix. There is one such namespace, even if the feature is passed to -both LV2_Descriptor::instantiate() and -LV2_State_Interface::save(). Beyond this, the plugin MUST NOT make any -assumptions about the returned paths.

- -

Like any other paths, the plugin MUST map these paths using state:mapPath before storing them in state. The plugin -MUST NOT assume these paths will be available across a save/restore otherwise, -i.e. only mapped paths saved to state are persistent, any other created paths -are temporary.

- -

For example, a plugin may create a file in a subdirectory like so:

- -
-char* save_myfile(LV2_State_Make_Path* make_path)
-{
-    char* path   = make_path->path(make_path->handle, "foo/bar/myfile.txt");
-    FILE* myfile = fopen(path, 'w');
-    fprintf(myfile, "Hello");
-    fclose(myfile);
-    return path;
-}
-
-""" . - -state:Path - a rdfs:Class ; - rdfs:label "Path" ; - lv2:documentation """ -

A path to a file or directory.

- -

The format of a state:Path is a C string, possibly escaped or otherwise -restricted in a system-specific manner. This URI (LV2_STATE_PATH_URI), mapped -to an integer, MUST be used as the type parameter for any files -passed to the LV2_State_Store_Function; and will likewise be returned by the -corresponding call to the LV2_State_Retrieve_Function.

- -

When storing and retrieving a path, the plugin MUST NOT assume the same path -will be restored. However, the restored path will refer to a file with -equivalent contents to the original.

-""" . diff --git a/lv2/ns/ext/state/waf b/lv2/ns/ext/state/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/state/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/state/wscript b/lv2/ns/ext/state/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/state/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/string-port/ext.pc.in b/lv2/ns/ext/string-port/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/string-port/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/string-port/manifest.ttl b/lv2/ns/ext/string-port/manifest.ttl deleted file mode 100644 index d0e618e..0000000 --- a/lv2/ns/ext/string-port/manifest.ttl +++ /dev/null @@ -1,8 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . diff --git a/lv2/ns/ext/string-port/string-port.h b/lv2/ns/ext/string-port/string-port.h deleted file mode 100644 index e7fc8c7..0000000 --- a/lv2/ns/ext/string-port/string-port.h +++ /dev/null @@ -1,58 +0,0 @@ -/* lv2_string_port.h - C header file for LV2 string port extension. - * Draft Revision 3 - * Copyright (C) 2008 Krzysztof Foltman - * - * This header is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser 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 Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this header; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 01222-1307 USA - */ - -/** @file - * C header for the LV2 String Port extension - * . - */ - -#ifndef LV2_STRING_PORT_H -#define LV2_STRING_PORT_H - -#include - -/** URI for the string port transfer mechanism feature */ -#define LV2_STRING_PORT_URI "http://lv2plug.in/ns/ext/string-port#StringTransfer" - -/** Flag: port data has been updated; for input ports, this flag is set by -the host. For output ports, this flag is set by the plugin. */ -#define LV2_STRING_DATA_CHANGED_FLAG 1 - -/** structure for string port data */ -typedef struct -{ - /** Buffer for UTF-8 encoded zero-terminated string value; host-allocated */ - char *data; - - /** Length in bytes (not characters), not including zero byte */ - size_t len; - - /** Output ports: storage space in bytes; must be >= RDF-specified requirements */ - size_t storage; - - /** Flags defined above */ - uint32_t flags; - - /** Undefined (pad to 8 bytes) */ - uint32_t pad; - -} LV2_String_Data; - -#endif - diff --git a/lv2/ns/ext/string-port/string-port.ttl b/lv2/ns/ext/string-port/string-port.ttl deleted file mode 100644 index f36fa7a..0000000 --- a/lv2/ns/ext/string-port/string-port.ttl +++ /dev/null @@ -1,105 +0,0 @@ -# LV2 String Port Extension. -# Draft Revision 3 -# Copyright (C) 2008 Krzysztof Foltman -# -# 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 sp: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . -@prefix doap: . -@prefix foaf: . - - a lv2:Specification ; - doap:license ; - doap:name "LV2 String Ports" ; - doap:maintainer [ - a foaf:Person ; - foaf:name "Krzysztof Foltman" ; - ] ; - lv2:documentation """ -

Defines ports which contain string data.

- -

UI issues

-

When using port_event / write_port (and possible other communication -mechanisms), the format parameter should contain the numeric value of URI -LV2_STRING_PORT_URI (mapped with http://lv2plug.in/ns/extensions/ui specified -as map URI).

- -

It's probably possible to use ports belonging to message context -<http://lv2plug.in/ns/ext/contexts#MessageContext> for transfer. However, -contexts mechanism does not offer any way to notify the message recipient about -which ports have been changed. To remedy that, this extension defines a flag -LV2_STRING_DATA_CHANGED_FLAG that carries that information inside a port value -structure.

- -

Storage

-

The value of string port are assumed to be "persistent": if a host saves and -restores a state of a plugin (e.g. control port values), the values of input -string ports should also be assumed to belong to that state. This also applies -to message context: if a session is being restored, the host MUST resend the -last value that was sent to the port before session has been saved. In other -words, string port values "stick" to message ports.

-""" . - -sp:StringTransfer a lv2:Feature ; - rdfs:label "String data transfer via LV2_String_Data" . - -sp:StringPort a lv2:Port ; - rdfs:label "String port" ; - lv2:documentation """ -

Indicates that the port data points to a LV2_String_Data structure -as defined in accompanying header file.

- -

Input Port Semantics

-

If the port does not have a context specified (it runs in the default, -realtime audio processing context), the values in the structure and the actual -string data MUST remain unchanged for the time a run() function of a plugin -is executed. However, if the port belongs to a different context, the same -data MUST remain unchanged only for the time a run() or message_process() -function of a given context is executed.

- -

Output Port Semantics

-

The plugin may only change the string or length in a run() function (if -the port belongs to default context) or in context-defined counterparts -(if the port belongs to another context). Because of that, using default -context output string ports is contraindicated for longer strings.

-""" . - -sp:default a rdf:Property ; - rdfs:label "Default value" ; - rdfs:domain sp:StringPort ; - rdfs:range xsd:string ; - rdfs:comment """ -Gives a default value for a string port. -""" . - -sp:requiredSpace a rdf:Property ; - rdfs:label "Required storage space in bytes" ; - rdfs:domain sp:StringPort ; - rdfs:range xsd:nonNegativeInteger ; - rdfs:comment """ -Specifies required buffer space for output string ports and those of -input string ports that are meant to be GUI-controlled. The host MUST -allocate a buffer of at least required size to accommodate for all values -that can be produced by the plugin. -""" . - diff --git a/lv2/ns/ext/string-port/waf b/lv2/ns/ext/string-port/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/string-port/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/string-port/wscript b/lv2/ns/ext/string-port/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/string-port/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/time/ext.pc.in b/lv2/ns/ext/time/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/time/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/time/manifest.ttl b/lv2/ns/ext/time/manifest.ttl deleted file mode 100644 index 2657388..0000000 --- a/lv2/ns/ext/time/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/time/time.h b/lv2/ns/ext/time/time.h deleted file mode 100644 index f3b2e77..0000000 --- a/lv2/ns/ext/time/time.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - Copyright 2011 David Robillard - - 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. -*/ - -/** - @file time.h C header for the LV2 Time extension - . -*/ - -#ifndef LV2_TIME_H -#define LV2_TIME_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - Time states. -*/ -typedef enum { - LV2_TIME_STOPPED = 0, /**< Transport halted */ - LV2_TIME_ROLLING = 1, /**< Transport playing */ -} LV2_Time_State; - -/** - Bits indicating properties of an LV2_Time_Position. -*/ -typedef enum { - LV2_TIME_HAS_BBT = 1 /**< Has Bar, Beat, Tick */ -} LV2_Time_Flags; - -/** - Description of a position and/or tempo. - - This struct is used as the payload of an event to notify the plugin about - time state, such as position and tempo. -*/ -typedef struct { - /** - @{ - @name Mandatory Fields - */ - - /** - Frame number on the timeline. - */ - uint64_t frame; - - /** - Bit field of LV2_Time_Flags values indicating which fields - of this struct are valid. - */ - uint32_t flags; - - /** - Transport state. - */ - LV2_Time_State state; - - /** - @} - @{ - @name LV2_TIME_BBT fields - These fields are valid iff the LV2_TIME_BBT bit is set in @ref flags. - */ - - /** - Current bar. - The first bar is number 0 (but should be represented in a UI as bar 1). - */ - int64_t bar; - - /** - Beat within the current bar. - The first beat is number 0. - Always <= @ref beats_per_bar. - */ - int32_t beat; - - /** - Tick within the current beat. - The first tick is number 0. - Always <= @ref ticks_per_beat. - */ - int32_t tick; - - /** - Number of beats per bar (top of time signature). - */ - int32_t beats_per_bar; - - /** - Type of note that counts as one beat (bottom of time signature). - */ - int32_t beat_type; - - /** - Number of ticks per beat. - Typically this is a large integer with many even divisors. - */ - int32_t ticks_per_beat; - - /** - Current tempo, in beats per minute. - */ - double beats_per_minute; - - /** - @} - */ -} LV2_Time_Position; - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* LV2_TIME_H */ diff --git a/lv2/ns/ext/time/time.ttl b/lv2/ns/ext/time/time.ttl deleted file mode 100644 index 40bfdbb..0000000 --- a/lv2/ns/ext/time/time.ttl +++ /dev/null @@ -1,57 +0,0 @@ -# LV2 Time Extension -# Copyright 2011 David Robillard -# -# 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. - -@prefix time: . -@prefix doap: . -@prefix foaf: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - a lv2:Specification ; - doap:name "LV2 Time" ; - doap:shortdesc "A data type for transport speed and position." ; - doap:maintainer [ - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - rdfs:seeAlso - ] ; - lv2:documentation """ -

This extension defines a structure type, LV2_Time_Position, which -describes a tempo and position along a timeline. This can be used as -an event payload by the host to notify plugins about the current -tempo and position.

-""" . - -time:Position - a rdfs:Class ; - rdfs:label "LV2 time position" ; - lv2:documentation """ -

Type for an LV2_Time_Position struct. This can be mapped to an integer and -used as the type field of an event to indicate that the event payload is an -LV2_Time_Positon struct. Plugins SHOULD indicate that a port supports time -information using the ev:supports predicate, e.g.:

-
-<plugin> lv2:port [
-    a lv2:InputPort , ev:EventPort ;
-    lv2:name "control" ;
-    lv2:index 0 ;
-    ev:supportsEvent time:Position
-] .
-
-""" . diff --git a/lv2/ns/ext/time/waf b/lv2/ns/ext/time/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/time/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/time/wscript b/lv2/ns/ext/time/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/time/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/ui-resize/ext.pc.in b/lv2/ns/ext/ui-resize/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/ui-resize/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/ui-resize/manifest.ttl b/lv2/ns/ext/ui-resize/manifest.ttl deleted file mode 100644 index ca5cdf9..0000000 --- a/lv2/ns/ext/ui-resize/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 0 ; - lv2:microVersion 1 ; - rdfs:seeAlso . - diff --git a/lv2/ns/ext/ui-resize/ui-resize.h b/lv2/ns/ext/ui-resize/ui-resize.h deleted file mode 100644 index cf5ccc6..0000000 --- a/lv2/ns/ext/ui-resize/ui-resize.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - Copyright 2011 David Robillard - - 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_UI_RESIZE_H -#define LV2_UI_RESIZE_H - -#define LV2_UI_RESIZE_URI "http://lv2plug.in/ns/ext/ui-resize" - -typedef void* LV2_UI_Resize_Feature_Data; - -/** - UI Resize Feature. - - This structure may be used in two ways: as a feature passed by the host - (e.g. via the features parameter of LV2UI_Descriptor::instantiate()) or - as a feature exposed by a UI (e.g. via LV2UI_Descriptor::extension_data()). - - In both cases, the URI to be used is - http://lv2plug.in/ns/ext/ui-resize#UIResize -*/ -typedef struct { - - LV2_UI_Resize_Feature_Data data; - - /** - Request or notify a size change. - - When this struct is provided by the host, the UI may call this - function to notify the host that a size change is desired, or notify - the host of the initial size of the UI. - - When this struct is provided by the plugin, the host may call this - function in the UI thread to notify the UI that it should change its - size to the given dimensions. - - @return 0 on success. - */ - int (*ui_resize)(LV2_UI_Resize_Feature_Data data, - int width, - int height); - -} LV2_UI_Resize_Feature; - -#endif /* LV2_UI_RESIZE_H */ - diff --git a/lv2/ns/ext/ui-resize/ui-resize.ttl b/lv2/ns/ext/ui-resize/ui-resize.ttl deleted file mode 100644 index f3b7d92..0000000 --- a/lv2/ns/ext/ui-resize/ui-resize.ttl +++ /dev/null @@ -1,43 +0,0 @@ -# LV2 UI Resize Extension -# Copyright 2011 David Robillard -# -# 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. - -@prefix uirsz: . -@prefix lv2: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . -@prefix doap: . -@prefix foaf: . - - - a lv2:Specification ; - doap:name "LV2 UI Resize Extension" ; - doap:shortdesc "A feature for self-resizing plugin UIs." ; - doap:license ; - lv2:documentation """ -

An extension that allows LV2 plugin UIs to notify the host about size -changes, or for the host to notify plugin UIs about size changes.

-""" . - -uirsz:UIResize - a lv2:Feature ; - lv2:documentation """ -

A feature that allows the UI to notify the host about its current size, or -request a size change. This feature corresponds to the LV2_UI_Resize_Feature -struct, which should be passed with the feature URI -http://lv2plug.in/ns/ext/ui-resize#UIResize. This struct may also -be provided by the UI as extension data using the same URI, in which case it -is used by the host to request that the UI change its size.

-""" . diff --git a/lv2/ns/ext/ui-resize/waf b/lv2/ns/ext/ui-resize/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/ui-resize/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/ui-resize/wscript b/lv2/ns/ext/ui-resize/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/ui-resize/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/uri-map/ext.pc.in b/lv2/ns/ext/uri-map/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/uri-map/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/uri-map/manifest.ttl b/lv2/ns/ext/uri-map/manifest.ttl deleted file mode 100644 index 0348a55..0000000 --- a/lv2/ns/ext/uri-map/manifest.ttl +++ /dev/null @@ -1,8 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . - - - a lv2:Specification ; - lv2:minorVersion 1 ; - lv2:microVersion 4 ; - rdfs:seeAlso . diff --git a/lv2/ns/ext/uri-map/uri-map.h b/lv2/ns/ext/uri-map/uri-map.h deleted file mode 100644 index 6767cd1..0000000 --- a/lv2/ns/ext/uri-map/uri-map.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - Copyright 2008-2011 David Robillard - - 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. -*/ - -/** - @file - C header for the LV2 URI Map extension . - - This extension defines a simple mechanism for plugins to map URIs to - integers, usually for performance reasons (e.g. processing events typed by - URIs in real time). The expected use case is for plugins to map URIs to - integers for things they 'understand' at instantiation time, and store those - values for use in the audio thread without doing any string comparison. - This allows the extensibility of RDF with the performance of integers (or - centrally defined enumerations). -*/ - -#ifndef LV2_URI_MAP_H -#define LV2_URI_MAP_H - -#define LV2_URI_MAP_URI "http://lv2plug.in/ns/ext/uri-map" - -#include - -/** - Opaque pointer to host data. -*/ -typedef void* LV2_URI_Map_Callback_Data; - -/** - URI Map Feature. - - To support this feature the host must pass an LV2_Feature struct to the - plugin's instantiate method with URI "http://lv2plug.in/ns/ext/uri-map" - and data pointed to an instance of this struct. -*/ -typedef struct { - - /** - Opaque pointer to host data. - - The plugin MUST pass this to any call to functions in this struct. - Otherwise, it must not be interpreted in any way. - */ - LV2_URI_Map_Callback_Data callback_data; - - /** - Get the numeric ID of a URI from the host. - - @param callback_data Must be the callback_data member of this struct. - @param map The 'context' of this URI. Certain extensions may define a - URI that must be passed here with certain restrictions on the return - value (e.g. limited range). This value may be NULL if the plugin needs - an ID for a URI in general. Extensions SHOULD NOT define a context - unless there is a specific need to do so, e.g. to restrict the range of - the returned value. - @param uri The URI to be mapped to an integer ID. - - This function is referentially transparent; any number of calls with the - same arguments is guaranteed to return the same value over the life of a - plugin instance (though the same URI may return different values with a - different map parameter). However, this function is not necessarily very - fast: plugins SHOULD cache any IDs they might need in performance - critical situations. - - The return value 0 is reserved and indicates that an ID for that URI - could not be created for whatever reason. Extensions MAY define more - precisely what this means in a certain context, but in general plugins - SHOULD handle this situation as gracefully as possible. However, hosts - SHOULD NOT return 0 from this function in non-exceptional circumstances - (e.g. the URI map SHOULD be dynamic). Hosts that statically support only - a fixed set of URIs should not expect plugins to function correctly. - */ - uint32_t (*uri_to_id)(LV2_URI_Map_Callback_Data callback_data, - const char* map, - const char* uri); - -} LV2_URI_Map_Feature; - -#endif /* LV2_URI_MAP_H */ diff --git a/lv2/ns/ext/uri-map/uri-map.ttl b/lv2/ns/ext/uri-map/uri-map.ttl deleted file mode 100644 index 88f0fdd..0000000 --- a/lv2/ns/ext/uri-map/uri-map.ttl +++ /dev/null @@ -1,93 +0,0 @@ -# LV2 URI Map Extension -# Copyright 2008-2011 David Robillard -# -# 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. - -@prefix dcs: . -@prefix doap: . -@prefix foaf: . -@prefix lv2: . -@prefix lv2ev: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix umap: . - - - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - foaf:mbox ; - rdfs:seeAlso . - -_:larsl - a foaf:Person ; - foaf:name "Lars Luthman" . - - - a lv2:Specification , - lv2:Feature ; - owl:deprecated true ; - doap:license ; - doap:name "LV2 URI Map" ; - doap:shortdesc "A feature for mapping URIs to integers." ; - doap:release [ - doap:revision "1.4" ; - doap:created "2011-11-21" ; - dcs:blame ; - doap:file-release ; - dcs:changeset [ - dcs:item [ - rdfs:label "Update packaging." - ] , [ - rdfs:label "Deprecate uri-map in favour of urid." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2011-05-26" ; - dcs:blame ; - doap:file-release ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add build system (for installation)." - ] , [ - rdfs:label "Mark up documentation in HTML using lv2:docum" - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2010-10-18" ; - doap:file-release ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; - doap:maintainer , - _:larsl ; - lv2:documentation """ -

This extension is deprecated. New -implementations should use LV2 URID -instead.

- -

This extension defines a simple mechanism for plugins to map URIs to -integers, usually for performance reasons (e.g. processing events typed by URIs -in real time). The expected use case is for plugins to map URIs to integers -for things they 'understand' at instantiation time, and store those values for -use in the audio thread without doing any string comparison. This allows the -extensibility of RDF with the performance of integers (or centrally defined -enumerations).

-""" . diff --git a/lv2/ns/ext/uri-map/waf b/lv2/ns/ext/uri-map/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/uri-map/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/uri-map/wscript b/lv2/ns/ext/uri-map/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/uri-map/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file diff --git a/lv2/ns/ext/urid/ext.pc.in b/lv2/ns/ext/urid/ext.pc.in deleted file mode 120000 index 82b50df..0000000 --- a/lv2/ns/ext/urid/ext.pc.in +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.pc.in \ No newline at end of file diff --git a/lv2/ns/ext/urid/manifest.ttl b/lv2/ns/ext/urid/manifest.ttl deleted file mode 100644 index 4b23244..0000000 --- a/lv2/ns/ext/urid/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: . -@prefix rdfs: . -@prefix urid: . - - - a lv2:Specification ; - lv2:minorVersion 1 ; - lv2:microVersion 0 ; - rdfs:seeAlso . diff --git a/lv2/ns/ext/urid/urid.h b/lv2/ns/ext/urid/urid.h deleted file mode 100644 index 22c9a66..0000000 --- a/lv2/ns/ext/urid/urid.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - Copyright 2011 Gabriel M. Beddingfield - Copyright 2008-2011 David Robillard - - 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. -*/ - -/** - @file - C header for the LV2 URID extension -*/ - -#ifndef LV2_URID_H -#define LV2_URID_H - -#define LV2_URID_URI "http://lv2plug.in/ns/ext/urid" -#define LV2_URID_MAP_URI LV2_URID_URI "#map" -#define LV2_URID_UNMAP_URI LV2_URID_URI "#unmap" - -#include - -/** - Opaque pointer to host data for LV2_URID_Map. -*/ -typedef void* LV2_URID_Map_Handle; - -/** - Opaque pointer to host data for LV2_URID_Unmap. -*/ -typedef void* LV2_URID_Unmap_Handle; - -/** - URI mapped to an integer. -*/ -typedef uint32_t LV2_URID; - -/** - URI Map (http://lv2plug.in/ns/ext/urid#map). -*/ -typedef struct { - /** - Opaque pointer to host data. - - This MUST be passed to map_uri() whenever it is called. - Otherwise, it must not be interpreted in any way. - */ - LV2_URID_Map_Handle handle; - - /** - Get the numeric ID of a URI. - - If the ID does not already exist, it will be created. - - This function is referentially transparent; any number of calls with the - same arguments is guaranteed to return the same value over the life of a - plugin instance. Note, however, that several URIs MAY resolve to the - same ID if the host considers those URIs equivalent. - - This function is not necessarily very fast or RT-safe: plugins SHOULD - cache any IDs they might need in performance critical situations. - - The return value 0 is reserved and indicates that an ID for that URI - could not be created for whatever reason. However, hosts SHOULD NOT - return 0 from this function in non-exceptional circumstances (i.e. the - URI map SHOULD be dynamic). - - @param handle Must be the callback_data member of this struct. - @param uri The URI to be mapped to an integer ID. - */ - LV2_URID (*map)(LV2_URID_Map_Handle handle, - const char* uri); -} LV2_URID_Map; - -/** - URI Unmap (http://lv2plug.in/ns/ext/urid#unmap). -*/ -typedef struct { - /** - Opaque pointer to host data. - - This MUST be passed to unmap() whenever it is called. - Otherwise, it must not be interpreted in any way. - */ - LV2_URID_Unmap_Handle handle; - - /** - Get the URI for a previously mapped numeric ID. - - Returns NULL if @c urid is not yet mapped. Otherwise, the corresponding - URI is returned in a canonical form. This MAY not be the exact same - string that was originally passed to LV2_URID_Map::map(), but it MUST be - an identical URI according to the URI syntax specification (RFC3986). A - non-NULL return for a given @c urid will always be the same for the life - of the plugin. Plugins that intend to perform string comparison on - unmapped URIs SHOULD first canonicalise URI strings with a call to - map_uri() followed by a call to unmap_uri(). - - @param handle Must be the callback_data member of this struct. - @param urid The ID to be mapped back to the URI string. - */ - const char* (*unmap)(LV2_URID_Unmap_Handle handle, - LV2_URID urid); -} LV2_URID_Unmap; - -#endif /* LV2_URID_H */ diff --git a/lv2/ns/ext/urid/urid.ttl b/lv2/ns/ext/urid/urid.ttl deleted file mode 100644 index 121ffaf..0000000 --- a/lv2/ns/ext/urid/urid.ttl +++ /dev/null @@ -1,81 +0,0 @@ -# LV2 URID Extension -# Copyright 2011 Gabriel M. Beddingfield -# Copyright 2008-2011 David Robillard -# -# 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. - -@prefix dcs: . -@prefix doap: . -@prefix foaf: . -@prefix lv2: . -@prefix rdfs: . -@prefix urid: . - - - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage ; - foaf:mbox ; - rdfs:seeAlso . - -_:gabrbedd - a foaf:Person ; - foaf:name "Gabriel M. Beddingfield" ; - foaf:homepage . - - - a lv2:Specification ; - doap:license ; - doap:name "LV2 URID" ; - doap:shortdesc "Features for mapping URIs to and from integers." ; - doap:release [ - doap:revision "1.0" ; - doap:created "2011-11-21" ; - dcs:blame ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; - doap:developer _:gabrbedd ; - lv2:documentation """ -

This extension defines a simple mechanism for plugins to map URIs to and -from integers, usually for performance reasons (e.g. processing events typed by -URIs in real time). Typically, plugins map URIs to integers for things they -"understand" at instantiation time, and store those values for use in the audio -thread without doing any string comparison. This allows for the extensibility -of RDF but with the performance of integers.

- -

This extension is intended as an improved and simplified replacement for the -uri-map extension, since the -map context parameter has been found problematic. New implementations -are strongly encouraged to use this extension for URI mapping.

-""" . - -urid:map - a lv2:Feature ; - lv2:documentation """ -

A feature which is used to map URIs to integers. To support this feature, -the host must pass an LV2_Feature to LV2_Descriptor::instantiate() with URI -LV2_URID_MAP_URI and data pointed to an instance of LV2_URID_Map.

-""" . - -urid:unmap - a lv2:Feature ; - lv2:documentation """ -

A feature which is used to unmap URIs previously mapped to integers by -urid:map. To support this feature, the host must pass an LV2_Feature to -LV2_Descriptor::instantiate() with URI LV2_URID_UNMAP_URI and data pointed to -an instance of LV2_URID_Unmap.

-""" . diff --git a/lv2/ns/ext/urid/waf b/lv2/ns/ext/urid/waf deleted file mode 120000 index b955110..0000000 --- a/lv2/ns/ext/urid/waf +++ /dev/null @@ -1 +0,0 @@ -../../../../waf \ No newline at end of file diff --git a/lv2/ns/ext/urid/wscript b/lv2/ns/ext/urid/wscript deleted file mode 120000 index ec20a77..0000000 --- a/lv2/ns/ext/urid/wscript +++ /dev/null @@ -1 +0,0 @@ -../../../../ext.wscript \ No newline at end of file -- cgit v1.2.1