The OpenVX Specification  2b213f9
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
vx_compatibility.h
1 /*
2  * Copyright (c) 2012-2016 The Khronos Group Inc.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and/or associated documentation files (the
6  * "Materials"), to deal in the Materials without restriction, including
7  * without limitation the rights to use, copy, modify, merge, publish,
8  * distribute, sublicense, and/or sell copies of the Materials, and to
9  * permit persons to whom the Materials are furnished to do so, subject to
10  * the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included
13  * in all copies or substantial portions of the Materials.
14  *
15  * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
16  * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
17  * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
18  * https://www.khronos.org/registry/
19  *
20  * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26  * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
27  */
28 
29 #ifndef VX_1_0_1_NAMING_COMPATIBILITY
30 #define VX_1_0_1_NAMING_COMPATIBILITY
31 
32 #define vx_border_mode_e vx_border_e
33 #define vx_border_mode_policy_e vx_border_policy_e
34 #define _vx_border_mode_t _vx_border_t
35 #define vx_border_mode_t vx_border_t
36 
37 #define VX_ENUM_BORDER_MODE VX_ENUM_BORDER
38 #define VX_BORDER_MODE_POLICY VX_BORDER_POLICY
39 #define VX_BORDER_MODE_UNDEFINED VX_BORDER_UNDEFINED
40 #define VX_BORDER_MODE_CONSTANT VX_BORDER_CONSTANT
41 #define VX_BORDER_MODE_REPLICATE VX_BORDER_REPLICATE
42 #define VX_BORDER_MODE_UNSUPPORTED_POLICY_DEFAULT_TO_UNDEFINED VX_BORDER_POLICY_DEFAULT_TO_UNDEFINED
43 #define VX_BORDER_MODE_UNSUPPORTED_POLICY_RETURN_ERROR VX_BORDER_POLICY_RETURN_ERROR
44 
45 #define VX_CONTEXT_ATTRIBUTE_VENDOR_ID VX_CONTEXT_VENDOR_ID
46 #define VX_CONTEXT_ATTRIBUTE_VERSION VX_CONTEXT_VERSION
47 #define VX_CONTEXT_ATTRIBUTE_UNIQUE_KERNELS VX_CONTEXT_UNIQUE_KERNELS
48 #define VX_CONTEXT_ATTRIBUTE_MODULES VX_CONTEXT_MODULES
49 #define VX_CONTEXT_ATTRIBUTE_REFERENCES VX_CONTEXT_REFERENCES
50 #define VX_CONTEXT_ATTRIBUTE_IMPLEMENTATION VX_CONTEXT_IMPLEMENTATION
51 #define VX_CONTEXT_ATTRIBUTE_EXTENSIONS_SIZE VX_CONTEXT_EXTENSIONS_SIZE
52 #define VX_CONTEXT_ATTRIBUTE_EXTENSIONS VX_CONTEXT_EXTENSIONS
53 #define VX_CONTEXT_ATTRIBUTE_CONVOLUTION_MAXIMUM_DIMENSION VX_CONTEXT_CONVOLUTION_MAX_DIMENSION
54 #define VX_CONTEXT_ATTRIBUTE_OPTICAL_FLOW_WINDOW_MAXIMUM_DIMENSION VX_CONTEXT_OPTICAL_FLOW_MAX_WINDOW_DIMENSION
55 #define VX_CONTEXT_ATTRIBUTE_IMMEDIATE_BORDER_MODE VX_CONTEXT_IMMEDIATE_BORDER
56 #define VX_CONTEXT_ATTRIBUTE_UNIQUE_KERNEL_TABLE VX_CONTEXT_UNIQUE_KERNEL_TABLE
57 
58 #define VX_KERNEL_ATTRIBUTE_PARAMETERS VX_KERNEL_PARAMETERS
59 #define VX_KERNEL_ATTRIBUTE_NAME VX_KERNEL_NAME
60 #define VX_KERNEL_ATTRIBUTE_ENUM VX_KERNEL_ENUM
61 #define VX_KERNEL_ATTRIBUTE_LOCAL_DATA_SIZE VX_KERNEL_LOCAL_DATA_SIZE
62 #define VX_KERNEL_ATTRIBUTE_LOCAL_DATA_PTR (VX_ATTRIBUTE_BASE(VX_ID_KHRONOS, VX_TYPE_KERNEL) + 0x4)
63 
64 #define VX_NODE_ATTRIBUTE_STATUS VX_NODE_STATUS
65 #define VX_NODE_ATTRIBUTE_PERFORMANCE VX_NODE_PERFORMANCE
66 #define VX_NODE_ATTRIBUTE_BORDER_MODE VX_NODE_BORDER
67 #define VX_NODE_ATTRIBUTE_LOCAL_DATA_SIZE VX_NODE_LOCAL_DATA_SIZE
68 #define VX_NODE_ATTRIBUTE_LOCAL_DATA_PTR VX_NODE_LOCAL_DATA_PTR
69 
70 #define VX_PARAMETER_ATTRIBUTE_INDEX VX_PARAMETER_INDEX
71 #define VX_PARAMETER_ATTRIBUTE_DIRECTION VX_PARAMETER_DIRECTION
72 #define VX_PARAMETER_ATTRIBUTE_TYPE VX_PARAMETER_TYPE
73 #define VX_PARAMETER_ATTRIBUTE_STATE VX_PARAMETER_STATE
74 #define VX_PARAMETER_ATTRIBUTE_REF VX_PARAMETER_REF
75 
76 #define VX_IMAGE_ATTRIBUTE_WIDTH VX_IMAGE_WIDTH
77 #define VX_IMAGE_ATTRIBUTE_HEIGHT VX_IMAGE_HEIGHT
78 #define VX_IMAGE_ATTRIBUTE_FORMAT VX_IMAGE_FORMAT
79 #define VX_IMAGE_ATTRIBUTE_PLANES VX_IMAGE_PLANES
80 #define VX_IMAGE_ATTRIBUTE_SPACE VX_IMAGE_SPACE
81 #define VX_IMAGE_ATTRIBUTE_RANGE VX_IMAGE_RANGE
82 #define VX_IMAGE_ATTRIBUTE_SIZE VX_IMAGE_SIZE
83 
84 #define VX_SCALAR_ATTRIBUTE_TYPE VX_SCALAR_TYPE
85 
86 #define VX_GRAPH_ATTRIBUTE_NUMNODES VX_GRAPH_NUMNODES
87 #define VX_GRAPH_ATTRIBUTE_STATUS (VX_ATTRIBUTE_BASE(VX_ID_KHRONOS, VX_TYPE_GRAPH) + 0x1)
88 #define VX_GRAPH_ATTRIBUTE_PERFORMANCE VX_GRAPH_PERFORMANCE
89 #define VX_GRAPH_ATTRIBUTE_NUMPARAMETERS VX_GRAPH_NUMPARAMETERS
90 
91 #define VX_LUT_ATTRIBUTE_TYPE VX_LUT_TYPE
92 #define VX_LUT_ATTRIBUTE_COUNT VX_LUT_COUNT
93 #define VX_LUT_ATTRIBUTE_SIZE VX_LUT_SIZE
94 
95 #define VX_DISTRIBUTION_ATTRIBUTE_DIMENSIONS VX_DISTRIBUTION_DIMENSIONS
96 #define VX_DISTRIBUTION_ATTRIBUTE_OFFSET VX_DISTRIBUTION_OFFSET
97 #define VX_DISTRIBUTION_ATTRIBUTE_RANGE VX_DISTRIBUTION_RANGE
98 #define VX_DISTRIBUTION_ATTRIBUTE_BINS VX_DISTRIBUTION_BINS
99 #define VX_DISTRIBUTION_ATTRIBUTE_WINDOW VX_DISTRIBUTION_WINDOW
100 #define VX_DISTRIBUTION_ATTRIBUTE_SIZE VX_DISTRIBUTION_SIZE
101 
102 #define VX_THRESHOLD_ATTRIBUTE_TYPE VX_THRESHOLD_TYPE
103 #define VX_THRESHOLD_ATTRIBUTE_THRESHOLD_VALUE VX_THRESHOLD_THRESHOLD_VALUE
104 #define VX_THRESHOLD_ATTRIBUTE_THRESHOLD_LOWER VX_THRESHOLD_THRESHOLD_LOWER
105 #define VX_THRESHOLD_ATTRIBUTE_THRESHOLD_UPPER VX_THRESHOLD_THRESHOLD_UPPER
106 #define VX_THRESHOLD_ATTRIBUTE_TRUE_VALUE VX_THRESHOLD_TRUE_VALUE
107 #define VX_THRESHOLD_ATTRIBUTE_FALSE_VALUE VX_THRESHOLD_FALSE_VALUE
108 #define VX_THRESHOLD_ATTRIBUTE_DATA_TYPE VX_THRESHOLD_DATA_TYPE
109 
110 #define VX_MATRIX_ATTRIBUTE_TYPE VX_MATRIX_TYPE
111 #define VX_MATRIX_ATTRIBUTE_ROWS VX_MATRIX_ROWS
112 #define VX_MATRIX_ATTRIBUTE_COLUMNS VX_MATRIX_COLUMNS
113 #define VX_MATRIX_ATTRIBUTE_SIZE VX_MATRIX_SIZE
114 
115 #define VX_CONVOLUTION_ATTRIBUTE_ROWS VX_CONVOLUTION_ROWS
116 #define VX_CONVOLUTION_ATTRIBUTE_COLUMNS VX_CONVOLUTION_COLUMNS
117 #define VX_CONVOLUTION_ATTRIBUTE_SCALE VX_CONVOLUTION_SCALE
118 #define VX_CONVOLUTION_ATTRIBUTE_SIZE VX_CONVOLUTION_SIZE
119 
120 #define VX_PYRAMID_ATTRIBUTE_LEVELS VX_PYRAMID_LEVELS
121 #define VX_PYRAMID_ATTRIBUTE_SCALE VX_PYRAMID_SCALE
122 #define VX_PYRAMID_ATTRIBUTE_WIDTH VX_PYRAMID_WIDTH
123 #define VX_PYRAMID_ATTRIBUTE_HEIGHT VX_PYRAMID_HEIGHT
124 #define VX_PYRAMID_ATTRIBUTE_FORMAT VX_PYRAMID_FORMAT
125 
126 #define VX_REMAP_ATTRIBUTE_SOURCE_WIDTH VX_REMAP_SOURCE_WIDTH
127 #define VX_REMAP_ATTRIBUTE_SOURCE_HEIGHT VX_REMAP_SOURCE_HEIGHT
128 #define VX_REMAP_ATTRIBUTE_DESTINATION_WIDTH VX_REMAP_DESTINATION_WIDTH
129 #define VX_REMAP_ATTRIBUTE_DESTINATION_HEIGHT VX_REMAP_DESTINATION_HEIGHT
130 
131 #define VX_ARRAY_ATTRIBUTE_ITEMTYPE VX_ARRAY_ITEMTYPE
132 #define VX_ARRAY_ATTRIBUTE_NUMITEMS VX_ARRAY_NUMITEMS
133 #define VX_ARRAY_ATTRIBUTE_CAPACITY VX_ARRAY_CAPACITY
134 #define VX_ARRAY_ATTRIBUTE_ITEMSIZE VX_ARRAY_ITEMSIZE
135 
136 #define VX_DELAY_ATTRIBUTE_TYPE VX_DELAY_TYPE
137 #define VX_DELAY_ATTRIBUTE_SLOTS VX_DELAY_SLOTS
138 
139 #define VX_INTERPOLATION_TYPE_AREA VX_INTERPOLATION_AREA
140 #define VX_INTERPOLATION_TYPE_BILINEAR VX_INTERPOLATION_BILINEAR
141 #define VX_INTERPOLATION_TYPE_NEAREST_NEIGHBOR VX_INTERPOLATION_NEAREST_NEIGHBOR
142 
143 #define VX_META_FORMAT_ATTRIBUTE_DELTA_RECTANGLE (VX_ATTRIBUTE_BASE(VX_ID_KHRONOS, VX_TYPE_META_FORMAT) + 0x0)
144 #define VX_HINT_SERIALIZE (VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_HINT) + 0x0)
145 
146 #define vx_import_type_e vx_memory_type_e
147 #define VX_ENUM_IMPORT_MEM VX_ENUM_MEMORY_TYPE
148 #define VX_IMPORT_TYPE_HOST VX_MEMORY_TYPE_NONE
149 #define VX_IMPORT_TYPE_NONE VX_MEMORY_TYPE_HOST
150 
151 #define VX_TYPE_OBJECT_MAX VX_TYPE_KHRONOS_OBJECT_END
152 #define VX_TYPE_STRUCT_MAX VX_TYPE_KHRONOS_STRUCT_MAX
153 
154 #define VX_KERNEL_INVALID (VX_KERNEL_BASE(VX_ID_KHRONOS, VX_LIBRARY_KHR_BASE) + 0x0)
155 
156 typedef vx_status(VX_CALLBACK *vx_kernel_input_validate_f)(vx_node node, vx_uint32 index);
157 
158 typedef vx_status(VX_CALLBACK *vx_kernel_output_validate_f)(vx_node node, vx_uint32 index, vx_meta_format meta);
159 
160 typedef struct _vx_delta_rectangle_t {
166 
167 #ifdef __cplusplus
168 extern "C" {
169 #endif
170 
171 VX_API_ENTRY vx_kernel VX_API_CALL vxAddKernel(vx_context context,
172  const vx_char name[VX_MAX_KERNEL_NAME],
173  vx_enum enumeration,
174  vx_kernel_f func_ptr,
175  vx_uint32 numParams,
176  vx_kernel_input_validate_f input,
177  vx_kernel_output_validate_f output,
179  vx_kernel_deinitialize_f deinit);
180 
181 VX_API_ENTRY vx_status VX_API_CALL vxAccessImagePatch(vx_image image,
182  const vx_rectangle_t *rect,
183  vx_uint32 plane_index,
185  void **ptr,
186  vx_enum usage);
187 
188 VX_API_ENTRY vx_status VX_API_CALL vxCommitImagePatch(vx_image image,
189  const vx_rectangle_t *rect,
190  vx_uint32 plane_index,
191  const vx_imagepatch_addressing_t *addr,
192  const void *ptr);
193 
194 VX_API_ENTRY vx_status VX_API_CALL vxAccessArrayRange(vx_array arr, vx_size start, vx_size end, vx_size *stride, void **ptr, vx_enum usage);
195 
196 VX_API_ENTRY vx_status VX_API_CALL vxCommitArrayRange(vx_array arr, vx_size start, vx_size end, const void *ptr);
197 
198 VX_API_ENTRY vx_status VX_API_CALL vxAccessDistribution(vx_distribution distribution, void **ptr, vx_enum usage);
199 
200 VX_API_ENTRY vx_status VX_API_CALL vxCommitDistribution(vx_distribution distribution, const void * ptr);
201 
202 VX_API_ENTRY vx_status VX_API_CALL vxAccessLUT(vx_lut lut, void **ptr, vx_enum usage);
203 
204 VX_API_ENTRY vx_status VX_API_CALL vxCommitLUT(vx_lut lut, const void *ptr);
205 
206 VX_API_ENTRY vx_status VX_API_CALL vxReadMatrix(vx_matrix mat, void *array);
207 
208 VX_API_ENTRY vx_status VX_API_CALL vxWriteMatrix(vx_matrix mat, const void *array);
209 
210 VX_API_ENTRY vx_status VX_API_CALL vxReadConvolutionCoefficients(vx_convolution conv, vx_int16 *array);
211 
212 VX_API_ENTRY vx_status VX_API_CALL vxWriteConvolutionCoefficients(vx_convolution conv, const vx_int16 *array);
213 
214 VX_API_ENTRY vx_status VX_API_CALL vxReadScalarValue(vx_scalar ref, void *ptr);
215 
216 VX_API_ENTRY vx_status VX_API_CALL vxWriteScalarValue(vx_scalar ref, const void *ptr);
217 
218 #ifdef __cplusplus
219 }
220 #endif
221 
222 #endif /* VX_1_0_1_NAMING_COMPATIBILITY */
struct _vx_image * vx_image
An opaque reference to an image.
Definition: vx_types.h:190
vx_status(* vx_kernel_f)(vx_node node, const vx_reference *parameters, vx_uint32 num)
The pointer to the Host side kernel.
Definition: vx_types.h:1551
struct _vx_array * vx_array
The Array Object. Array is a strongly-typed container for other data structures.
Definition: vx_types.h:283
int16_t vx_int16
A 16-bit signed value.
Definition: vx_types.h:112
size_t vx_size
A wrapper of size_t to keep the naming convention uniform.
Definition: vx_types.h:165
int32_t vx_enum
Sets the standard enumeration type size to be a fixed quantity.
Definition: vx_types.h:160
struct _vx_distribution * vx_distribution
The Distribution object. This has a user-defined number of bins over a user-defined range (within a u...
Definition: vx_types.h:247
int32_t vx_int32
A 32-bit signed value.
Definition: vx_types.h:117
The addressing image patch structure is used by the Host only to address pixels in an image patch...
Definition: vx_types.h:1394
vx_status(* vx_kernel_deinitialize_f)(vx_node node, const vx_reference *parameters, vx_uint32 num)
The pointer to the kernel deinitializer. If the host code requires a call to deinitialize data during...
Definition: vx_types.h:1573
char vx_char
An 8 bit ASCII character.
Definition: vx_types.h:82
vx_enum vx_status
A formal status type with known fixed size.
Definition: vx_types.h:428
struct _vx_context * vx_context
An opaque reference to the implementation context.
Definition: vx_types.h:226
struct _vx_meta_format * vx_meta_format
This object is used by output validation functions to specify the meta data of the expected output da...
Definition: vx_types.h:317
vx_int32 delta_end_x
The change in the end x.
vx_int32 delta_end_y
The change in the end y.
vx_int32 delta_start_x
The change in the start x.
vx_status(* vx_kernel_initialize_f)(vx_node node, const vx_reference *parameters, vx_uint32 num)
The pointer to the kernel initializer. If the host code requires a call to initialize data once all t...
Definition: vx_types.h:1562
struct _vx_kernel * vx_kernel
An opaque reference to the descriptor of a kernel.
Definition: vx_types.h:198
#define VX_API_CALL
Defines calling convention for OpenVX API.
Definition: vx_types.h:68
The rectangle data structure that is shared with the users. The area of the rectangle can be computed...
Definition: vx_types.h:1473
#define VX_CALLBACK
Defines calling convention for user callbacks.
Definition: vx_types.h:75
vx_int32 delta_start_y
The change in the start y.
struct _vx_convolution * vx_convolution
The Convolution Object. A user-defined convolution kernel of MxM elements.
Definition: vx_types.h:272
#define VX_MAX_KERNEL_NAME
Defines the length of a kernel name string to be added to OpenVX, including the trailing zero...
Definition: vx.h:45
uint32_t vx_uint32
A 32-bit unsigned value.
Definition: vx_types.h:97
struct _vx_node * vx_node
An opaque reference to a kernel node.
Definition: vx_types.h:212
struct _vx_matrix * vx_matrix
The Matrix Object. An MxN matrix of some unit type.
Definition: vx_types.h:253
struct _vx_scalar * vx_scalar
An opaque reference to a scalar.
Definition: vx_types.h:183
struct _vx_lut * vx_lut
The Look-Up Table (LUT) Object.
Definition: vx_types.h:240