|
- /*
- Copyright 2007-2016 David Robillard <http://drobilla.net>
-
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted, provided that the above
- copyright notice and this permission notice appear in all copies.
-
- THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
- /**
- @defgroup resize-port Resize Port
-
- Dynamically sized LV2 port buffers.
-
- @{
- */
-
- #ifndef LV2_RESIZE_PORT_H
- #define LV2_RESIZE_PORT_H
-
- #include <stddef.h>
- #include <stdint.h>
-
- #define LV2_RESIZE_PORT_URI "http://lv2plug.in/ns/ext/resize-port" ///< http://lv2plug.in/ns/ext/resize-port
- #define LV2_RESIZE_PORT_PREFIX LV2_RESIZE_PORT_URI "#" ///< http://lv2plug.in/ns/ext/resize-port#
-
- #define LV2_RESIZE_PORT__asLargeAs LV2_RESIZE_PORT_PREFIX "asLargeAs" ///< http://lv2plug.in/ns/ext/port#asLargeAs
- #define LV2_RESIZE_PORT__minimumSize LV2_RESIZE_PORT_PREFIX "minimumSize" ///< http://lv2plug.in/ns/ext/port#minimumSize
- #define LV2_RESIZE_PORT__resize LV2_RESIZE_PORT_PREFIX "resize" ///< http://lv2plug.in/ns/ext/port#resize
-
- #ifdef __cplusplus
- extern "C" {
- #else
- # include <stdbool.h>
- #endif
-
- /** A status code for state functions. */
- typedef enum {
- LV2_RESIZE_PORT_SUCCESS = 0, /**< Completed successfully. */
- LV2_RESIZE_PORT_ERR_UNKNOWN = 1, /**< Unknown error. */
- LV2_RESIZE_PORT_ERR_NO_SPACE = 2 /**< Insufficient space. */
- } LV2_Resize_Port_Status;
-
- /** Opaque data for resize method. */
- typedef void* LV2_Resize_Port_Feature_Data;
-
- /** Host feature to allow plugins to resize their port buffers. */
- typedef struct {
- /** Opaque data for resize method. */
- LV2_Resize_Port_Feature_Data data;
-
- /**
- Resize a port buffer to at least `size` bytes.
-
- This function MAY return an error, 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 is in the audio threading class.
-
- 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 as inexpensive as possible.
- */
- LV2_Resize_Port_Status (*resize)(LV2_Resize_Port_Feature_Data data,
- uint32_t index,
- size_t size);
- } LV2_Resize_Port_Resize;
-
- #ifdef __cplusplus
- } /* extern "C" */
- #endif
-
- #endif /* LV2_RESIZE_PORT_H */
-
- /**
- @}
- */
|