diff options
Diffstat (limited to 'lv2/event')
-rw-r--r-- | lv2/event/event-helpers.h | 255 | ||||
-rw-r--r-- | lv2/event/event.h | 306 | ||||
-rw-r--r-- | lv2/event/event.meta.ttl | 256 | ||||
-rw-r--r-- | lv2/event/event.ttl | 87 | ||||
-rw-r--r-- | lv2/event/manifest.ttl | 9 | ||||
-rw-r--r-- | lv2/event/meson.build | 41 |
6 files changed, 0 insertions, 954 deletions
diff --git a/lv2/event/event-helpers.h b/lv2/event/event-helpers.h deleted file mode 100644 index bf1b885..0000000 --- a/lv2/event/event-helpers.h +++ /dev/null @@ -1,255 +0,0 @@ -/* - Copyright 2008-2015 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#ifndef LV2_EVENT_HELPERS_H -#define LV2_EVENT_HELPERS_H - -/** - @file event-helpers.h Helper functions for the LV2 Event extension - <http://lv2plug.in/ns/ext/event>. -*/ - -#include "lv2/core/attributes.h" -#include "lv2/event/event.h" - -#include <stdbool.h> -#include <stdint.h> -#include <stdlib.h> -#include <string.h> - -#ifdef __cplusplus -extern "C" { -#endif - -LV2_DISABLE_DEPRECATION_WARNINGS - -/** @file - * Helper functions for the LV2 Event extension - * <http://lv2plug.in/ns/ext/event>. - * - * 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 (uint16_t)((size + 7U) & ~7U); -} - -/** 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; - } - 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. */ -typedef struct { - LV2_Event_Buffer* buf; - uint32_t offset; -} LV2_Event_Iterator; - -/** Reset an iterator to point to the start of `buf`. - * @return True if `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 `iter` is valid. - * @return True if `iter` is valid, otherwise false (past end of buffer) */ -static inline bool -lv2_event_is_valid(LV2_Event_Iterator* iter) -{ - return (iter->buf && (iter->offset < iter->buf->size)); -} - -/** Advance `iter` forward one event. - * `iter` must be valid. - * @return True if `iter` is valid, otherwise false (reached end of buffer) */ -static inline bool -lv2_event_increment(LV2_Event_Iterator* iter) -{ - if (!lv2_event_is_valid(iter)) { - return false; - } - - LV2_Event* const ev = (LV2_Event*)(iter->buf->data + iter->offset); - - iter->offset += - lv2_event_pad_size((uint16_t)((uint16_t)sizeof(LV2_Event) + ev->size)); - - return true; -} - -/** Dereference an event iterator (get the event currently pointed at). - * `iter` must be valid. - * `data` if non-NULL, will be set to point to the contents of the event - * returned. - * @return A Pointer to the event `iter` is currently pointing at, or NULL - * if the end of the buffer is reached (in which case `data` is - * also set to NULL). */ -static inline LV2_Event* -lv2_event_get(LV2_Event_Iterator* iter, uint8_t** data) -{ - if (!lv2_event_is_valid(iter)) { - return NULL; - } - - LV2_Event* const ev = (LV2_Event*)(iter->buf->data + iter->offset); - - if (data) { - *data = (uint8_t*)ev + sizeof(LV2_Event); - } - - return ev; -} - -/** Write an event at `iter`. - * The event (if any) pointed to by `iter` will be overwritten, and `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) { - return false; - } - - if (iter->buf->capacity - iter->buf->size < sizeof(LV2_Event) + size) { - return false; - } - - LV2_Event* const ev = (LV2_Event*)(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((uint16_t)(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) -{ - const uint16_t total_size = (uint16_t)(sizeof(LV2_Event) + size); - if (iter->buf->capacity - iter->buf->size < total_size) { - return NULL; - } - - LV2_Event* const ev = (LV2_Event*)(iter->buf->data + iter->offset); - - ev->frames = frames; - ev->subframes = subframes; - ev->type = type; - ev->size = size; - ++iter->buf->event_count; - - const uint16_t padded_size = lv2_event_pad_size(total_size); - iter->buf->size += padded_size; - iter->offset += padded_size; - - return (uint8_t*)ev + sizeof(LV2_Event); -} - -/** Write an event at `iter`. - * The event (if any) pointed to by `iter` will be overwritten, and `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) -{ - const uint16_t total_size = (uint16_t)(sizeof(LV2_Event) + ev->size); - if (iter->buf->capacity - iter->buf->size < total_size) { - return false; - } - - LV2_Event* const write_ev = (LV2_Event*)(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 padded_size = lv2_event_pad_size(total_size); - iter->buf->size += padded_size; - iter->offset += padded_size; - - return true; -} - -LV2_RESTORE_WARNINGS - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* LV2_EVENT_HELPERS_H */ diff --git a/lv2/event/event.h b/lv2/event/event.h deleted file mode 100644 index 045ac12..0000000 --- a/lv2/event/event.h +++ /dev/null @@ -1,306 +0,0 @@ -/* - Copyright 2008-2016 David Robillard <d@drobilla.net> - Copyright 2006-2007 Lars Luthman <lars.luthman@gmail.com> - - 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 - -/** - @defgroup event Event - @ingroup lv2 - - Generic time-stamped events. - - See <http://lv2plug.in/ns/ext/event> for details. - - @{ -*/ - -// clang-format off - -#define LV2_EVENT_URI "http://lv2plug.in/ns/ext/event" ///< http://lv2plug.in/ns/ext/event -#define LV2_EVENT_PREFIX LV2_EVENT_URI "#" ///< http://lv2plug.in/ns/ext/event# - -#define LV2_EVENT__Event LV2_EVENT_PREFIX "Event" ///< http://lv2plug.in/ns/ext/event#Event -#define LV2_EVENT__EventPort LV2_EVENT_PREFIX "EventPort" ///< http://lv2plug.in/ns/ext/event#EventPort -#define LV2_EVENT__FrameStamp LV2_EVENT_PREFIX "FrameStamp" ///< http://lv2plug.in/ns/ext/event#FrameStamp -#define LV2_EVENT__TimeStamp LV2_EVENT_PREFIX "TimeStamp" ///< http://lv2plug.in/ns/ext/event#TimeStamp -#define LV2_EVENT__generatesTimeStamp LV2_EVENT_PREFIX "generatesTimeStamp" ///< http://lv2plug.in/ns/ext/event#generatesTimeStamp -#define LV2_EVENT__generic LV2_EVENT_PREFIX "generic" ///< http://lv2plug.in/ns/ext/event#generic -#define LV2_EVENT__inheritsEvent LV2_EVENT_PREFIX "inheritsEvent" ///< http://lv2plug.in/ns/ext/event#inheritsEvent -#define LV2_EVENT__inheritsTimeStamp LV2_EVENT_PREFIX "inheritsTimeStamp" ///< http://lv2plug.in/ns/ext/event#inheritsTimeStamp -#define LV2_EVENT__supportsEvent LV2_EVENT_PREFIX "supportsEvent" ///< http://lv2plug.in/ns/ext/event#supportsEvent -#define LV2_EVENT__supportsTimeStamp LV2_EVENT_PREFIX "supportsTimeStamp" ///< http://lv2plug.in/ns/ext/event#supportsTimeStamp - -// clang-format on - -#define LV2_EVENT_AUDIO_STAMP 0 ///< Special timestamp type for audio frames - -#include "lv2/core/attributes.h" - -#include <stdint.h> - -#ifdef __cplusplus -extern "C" { -#endif - -LV2_DISABLE_DEPRECATION_WARNINGS - -/** - 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 divisible - by all integers from 1 through 18 inclusive, and powers of 2 up to 2^12. -*/ -LV2_DEPRECATED -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) -*/ -LV2_DEPRECATED -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 (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 | ... -*/ -LV2_DEPRECATED -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. -*/ -LV2_DEPRECATED -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. -*/ -LV2_DEPRECATED -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 the 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 the 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; - -LV2_RESTORE_WARNINGS - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -/** - @} -*/ - -#endif /* LV2_EVENT_H */ diff --git a/lv2/event/event.meta.ttl b/lv2/event/event.meta.ttl deleted file mode 100644 index e9c26bc..0000000 --- a/lv2/event/event.meta.ttl +++ /dev/null @@ -1,256 +0,0 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . -@prefix doap: <http://usefulinc.com/ns/doap#> . -@prefix ev: <http://lv2plug.in/ns/ext/event#> . -@prefix foaf: <http://xmlns.com/foaf/0.1/> . -@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - -<http://lv2plug.in/ns/ext/event> - a doap:Project ; - doap:license <http://opensource.org/licenses/isc> ; - doap:name "LV2 Event" ; - doap:shortdesc "A port-based real-time generic event interface." ; - doap:created "2008-00-00" ; - doap:developer <http://drobilla.net/drobilla#me> , - <http://lv2plug.in/ns/meta#larsl> ; - doap:release [ - doap:revision "1.14" ; - doap:created "2022-05-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.4.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix spelling errors." - ] - ] - ] , [ - doap:revision "1.12" ; - doap:created "2014-08-08" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Minor documentation improvements." - ] - ] - ] , [ - doap:revision "1.10" ; - doap:created "2013-01-13" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix incorrect return type in lv2_event_get()." - ] - ] - ] , [ - doap:revision "1.8" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Make event iterator gracefully handle optional ports." - ] , [ - rdfs:label "Remove asserts from event-helper.h." - ] , [ - rdfs:label "Use more precise domain and range for EventPort properties." - ] , [ - rdfs:label "Use consistent label style." - ] - ] - ] , [ - doap:revision "1.6" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix bug in lv2_event_reserve()." - ] , [ - rdfs:label "Fix incorrect ranges of some properties." - ] , [ - rdfs:label "Merge with unified LV2 package." - ] - ] - ] , [ - doap:revision "1.4" ; - doap:created "2011-11-21" ; - doap:file-release <http://lv2plug.in/spec/lv2-event-1.4.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Update packaging." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2011-05-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-event-1.2.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - 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 <http://lv2plug.in/spec/lv2-event-1.0.tar.gz> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; - lv2:documentation """ - -<span class="warning">This extension is deprecated.</span> New implementations -should use <a href="atom.html">LV2 Atom</a> instead. - -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: - - :::turtle - <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" ; - ] . - -"""^^lv2:Markdown . - -ev:EventPort - lv2:documentation """ - -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. - -"""^^lv2:Markdown . - -ev:Event - a rdfs:Class ; - rdfs:label "Event" ; - lv2:documentation """ - -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 (such as MIDI or OSC) are defined by extensions, and -should be rdfs:subClassOf this class. - -"""^^lv2:Markdown . - -ev:TimeStamp - lv2:documentation """ - -This defines the meaning of the 'frames' and 'subframes' fields of an LV2_Event -(both unsigned 32-bit integers). - -"""^^lv2:Markdown . - -ev:FrameStamp - lv2:documentation """ - -The default time stamp unit for an LV2 event: the frames field represents audio -frames (in the sample rate passed to instantiate), and the subframes field is -1/UINT32_MAX of a frame. - -"""^^lv2:Markdown . - -ev:generic - lv2:documentation """ - -Indicates that this port does something meaningful for any event type. This is -useful for things like event mixers, delays, serialisers, and so on. - -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. - -"""^^lv2:Markdown . - -ev:supportsEvent - lv2:documentation """ - -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 (for example, 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. - - -"""^^lv2:Markdown . - -ev:inheritsEvent - lv2:documentation """ - -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. - - -"""^^lv2:Markdown . - -ev:supportsTimeStamp - lv2:documentation """ - -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. - -"""^^lv2:Markdown . - -ev:generatesTimeStamp - lv2:documentation """ - -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. - -"""^^lv2:Markdown . - -ev:inheritsTimeStamp - lv2:documentation """ - -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. - -"""^^lv2:Markdown . - diff --git a/lv2/event/event.ttl b/lv2/event/event.ttl deleted file mode 100644 index 119e606..0000000 --- a/lv2/event/event.ttl +++ /dev/null @@ -1,87 +0,0 @@ -@prefix ev: <http://lv2plug.in/ns/ext/event#> . -@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@prefix owl: <http://www.w3.org/2002/07/owl#> . -@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - -<http://lv2plug.in/ns/ext/event> - a owl:Ontology ; - owl:deprecated true ; - rdfs:label "LV2 Event" ; - rdfs:comment "A port-based real-time generic event interface." ; - rdfs:seeAlso <event.h> , - <event-helpers.h> , - <event.meta.ttl> ; - owl:imports <http://lv2plug.in/ns/lv2core> . - -ev:EventPort - a rdfs:Class ; - rdfs:label "Event Port" ; - rdfs:subClassOf lv2:Port ; - rdfs:comment "An LV2 event port." . - -ev:Event - a rdfs:Class ; - rdfs:label "Event" ; - rdfs:comment "A single generic time-stamped event." . - -ev:TimeStamp - a rdfs:Class ; - rdfs:label "Event Time Stamp" ; - rdfs:comment "The time stamp of an Event." . - -ev:FrameStamp - a rdfs:Class ; - rdfs:subClassOf ev:TimeStamp ; - rdfs:label "Audio Frame Time Stamp" ; - rdfs:comment "The default time stamp unit for an event." . - -ev:generic - a lv2:PortProperty ; - rdfs:label "generic event port" ; - rdfs:comment "Port works with generic events." . - -ev:supportsEvent - a rdf:Property , - owl:ObjectProperty ; - rdfs:domain ev:EventPort ; - rdfs:range rdfs:Class ; - rdfs:label "supports event type" ; - rdfs:comment "An event type supported by this port." . - -ev:inheritsEvent - a rdf:Property , - owl:ObjectProperty ; - rdfs:domain ev:EventPort , - lv2:OutputPort ; - rdfs:range lv2:Port ; - rdfs:label "inherits event type" ; - rdfs:comment "Output port inherits event types from an input port." . - -ev:supportsTimeStamp - a rdf:Property , - owl:ObjectProperty ; - rdfs:domain ev:EventPort , - lv2:InputPort ; - rdfs:range rdfs:Class ; - rdfs:label "supports time stamp type" ; - rdfs:comment "A time stamp type supported by this input port." . - -ev:generatesTimeStamp - a rdf:Property , - owl:ObjectProperty ; - rdfs:domain ev:EventPort , - lv2:OutputPort ; - rdfs:range rdfs:Class ; - rdfs:label "generates time stamp type" ; - rdfs:comment "A time stamp type generated by this input port." . - -ev:inheritsTimeStamp - a rdf:Property , - owl:ObjectProperty ; - rdfs:domain ev:EventPort , - lv2:OutputPort ; - rdfs:range lv2:Port ; - rdfs:label "inherits time stamp type" ; - rdfs:comment "Output port inherits time stamp types from an input port." . - diff --git a/lv2/event/manifest.ttl b/lv2/event/manifest.ttl deleted file mode 100644 index 230fe73..0000000 --- a/lv2/event/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - -<http://lv2plug.in/ns/ext/event> - a lv2:Specification ; - lv2:minorVersion 1 ; - lv2:microVersion 14 ; - rdfs:seeAlso <event.ttl> . - diff --git a/lv2/event/meson.build b/lv2/event/meson.build deleted file mode 100644 index 020acc8..0000000 --- a/lv2/event/meson.build +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC - -name = 'event' -path = 'ns' / 'ext' / 'event' - -event_data = files( - 'event.meta.ttl', - 'event.ttl', - 'manifest.ttl', -) - -headers = files( - 'event-helpers.h', - 'event.h', -) - -# Install specification bundle -install_data(event_data, install_dir: lv2dir / name + '.lv2') -install_headers(headers, subdir: 'lv2' / name) -if get_option('old_headers') - install_headers(headers, subdir: 'lv2' / 'lv2plug.in' / path) -endif - -# Build documentation -if build_docs - lv2_event_docs = custom_target( - name + '.html', - command: lv2specgen_command_prefix + [ - '--docdir=../../html', - '--style-uri=../../aux/style.css', - '@INPUT@', - '@OUTPUT@', - ], - depends: doc_deps, - input: files('event.ttl'), - install: true, - install_dir: lv2_docdir / 'ns' / 'ext', - output: name + '.html', - ) -endif |