TIOVX User Guide
tivx_utils_ipc_ref_xfer.h
1 /*
2  *
3  * Copyright (c) 2021 Texas Instruments Incorporated
4  *
5  * All rights reserved not granted herein.
6  *
7  * Limited License.
8  *
9  * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10  * license under copyrights and patents it now or hereafter owns or controls to make,
11  * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12  * terms herein. With respect to the foregoing patent license, such license is granted
13  * solely to the extent that any such patent is necessary to Utilize the software alone.
14  * The patent license shall not apply to any combinations which include this software,
15  * other than combinations with devices manufactured by or for TI ("TI Devices").
16  * No hardware patent is licensed hereunder.
17  *
18  * Redistributions must preserve existing copyright notices and reproduce this license
19  * (including the above copyright notice and the disclaimer and (if applicable) source
20  * code license limitations below) in the documentation and/or other materials provided
21  * with the distribution
22  *
23  * Redistribution and use in binary form, without modification, are permitted provided
24  * that the following conditions are met:
25  *
26  * * No reverse engineering, decompilation, or disassembly of this software is
27  * permitted with respect to any software provided in binary form.
28  *
29  * * any redistribution and use are licensed by TI for use only with TI Devices.
30  *
31  * * Nothing shall obligate TI to provide you with source code for the software
32  * licensed and provided to you in object code.
33  *
34  * If software source code is provided to you, modification and redistribution of the
35  * source code are permitted provided that the following conditions are met:
36  *
37  * * any redistribution and use of the source code, including any resulting derivative
38  * works, are licensed by TI for use only with TI Devices.
39  *
40  * * any redistribution and use of any object code compiled from the source code
41  * and any resulting derivative works, are licensed by TI for use only with TI Devices.
42  *
43  * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44  *
45  * may be used to endorse or promote products derived from this software without
46  * specific prior written permission.
47  *
48  * DISCLAIMER.
49  *
50  * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53  * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59  * OF THE POSSIBILITY OF SUCH DAMAGE.
60  *
61  */
62 #if !defined(_TIVX_UTILS_IPC_REF_XFER_H_)
63 #define _TIVX_UTILS_IPC_REF_XFER_H_
64 
65 #include <TI/tivx.h>
66 #include <TI/tivx_obj_desc.h>
67 
68 #ifdef __cplusplus
69 extern "C" {
70 #endif
71 
75 #define TIVX_UTILS_MAX(a, b) ((a) > (b) ? (a) : (b))
76 
84 #define VX_IPC_MAX_VX_PLANES \
85  (TIVX_UTILS_MAX(TIVX_UTILS_MAX(TIVX_IMAGE_MAX_PLANES*\
86  TIVX_PYRAMID_MAX_LEVEL_OBJECTS,\
87  TIVX_CONTEXT_MAX_TENSOR_DIMS),\
88  TIVX_RAW_IMAGE_MAX_EXPOSURES))
89 
94 typedef struct
95 {
98 
101  struct {
109  vx_uint32 planes;
110  } img;
111 
112  struct {
114  vx_uint32 width;
116  vx_uint32 height;
118  vx_df_image format;
124  vx_uint32 planes;
125  } pmd;
126 
129  struct {
133  vx_size capacity;
134  } arr;
135 
138  struct {
143  } conv;
144 
147  struct {
149  vx_enum type;
151  vx_size rows;
153  vx_size cols;
154  } mat;
155 
158  struct {
165  } dist;
166 
169  struct {
178  } tensor;
179 
182  struct {
186  vx_size size;
187  } user_data_object;
188 
192 
194 
195 typedef struct
196 {
199 
215  uint32_t handleSizes[VX_IPC_MAX_VX_PLANES];
216 
217 } tivx_utils_ref_desc_t;
218 
219 typedef struct
220 {
222  tivx_utils_ref_desc_t refDesc;
223 
225  uint32_t numFd;
226 
242  uint64_t fd[VX_IPC_MAX_VX_PLANES];
243 
244 } tivx_utils_ref_ipc_msg_t;
245 
269  tivx_utils_ref_ipc_msg_t *ipcMsg);
270 
297  tivx_utils_ref_ipc_msg_t *ipcMsg,
298  vx_reference *ref);
299 
312 vx_bool tivx_utils_compare_refs_from_ipc_xfer(tivx_utils_ref_ipc_msg_t *ipcMsg1,
313  tivx_utils_ref_ipc_msg_t *ipcMsg2);
314 
315 #ifdef __cplusplus
316 }
317 #endif
318 
319 #endif /* _TIVX_UTILS_IPC_REF_XFER_H_ */
320 
vx_bool
vx_enum data_type
The data type of tensor.
#define VX_MAX_REFERENCE_NAME
Interface to TI extension APIs.
size_t vx_size
vx_enum type
The type of meta data.
vx_bool tivx_utils_compare_refs_from_ipc_xfer(tivx_utils_ref_ipc_msg_t *ipcMsg1, tivx_utils_ref_ipc_msg_t *ipcMsg2)
Compare the external handle information of a valid reference with another external handle...
int32_t vx_enum
int32_t vx_int32
vx_status tivx_utils_export_ref_for_ipc_xfer(const vx_reference ref, tivx_utils_ref_ipc_msg_t *ipcMsg)
Export the internal handle information of a valid reference as a buffer descriptor along with meta in...
vx_size levels
The ratio between each level.
vx_df_image format
Number of data planes in image.
char vx_char
float vx_float32
vx_enum vx_status
vx_uint32 width
The width of the image in pixels.
struct _vx_context * vx_context
Interface to object descriptor.
struct _vx_reference * vx_reference
uint32_t vx_df_image
#define TIVX_CONTEXT_MAX_TENSOR_DIMS
Max possible dimensions of data in a tensor.
Definition: tivx_obj_desc.h:98
Meta Format object internal state.
vx_int8 fixed_point_position
The fixed point precision of the tensor.
vx_float32 scale
Number of data planes in image.
uint32_t vx_uint32
int8_t vx_int8
vx_enum item_type
The type of the Array items.
The raw image create params structure that is given to the tivxCreateRawImage function.
vx_status tivx_utils_import_ref_from_ipc_xfer(vx_context context, tivx_utils_ref_ipc_msg_t *ipcMsg, vx_reference *ref)
Import the external handle information of a valid reference as a buffer descriptor along with meta in...
vx_uint32 height
The format of the image.
vx_size number_of_dimensions
The number of dimensions in the tensor.