TIOVX User Guide
hwa_dmpac_dof.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2019-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 
63 #ifndef HWA_DMPAC_DOF_H_
64 #define HWA_DMPAC_DOF_H_
65 
66 #include <VX/vx.h>
67 #include <VX/vx_kernels.h>
68 
69 #ifdef __cplusplus
70 extern "C" {
71 #endif
72 
81 #define TIVX_KERNEL_DMPAC_DOF_NAME "com.ti.hwa.dmpac_dof"
82 
86 #define TIVX_KERNEL_DOF_VISUALIZE_NAME "com.ti.hwa.dof_visualize"
87 
88 /*********************************
89  * DMPAC_DOF Control Commands
90  *********************************/
91 
98 #define TIVX_DMPAC_DOF_CMD_SET_HTS_BW_LIMIT_PARAMS (0x10000000u)
99 
106 #define TIVX_DMPAC_DOF_CMD_CS_PARAMS (0x10000001u)
107 
116 #define TIVX_DMPAC_DOF_CMD_GET_ERR_STATUS (0x10000002u)
117 
118 
119 /*********************************
120  * DMPAC_DOF PREDICTORS
121  *********************************/
123 #define TIVX_DMPAC_DOF_PREDICTOR_NONE (0U)
124 
126 #define TIVX_DMPAC_DOF_PREDICTOR_DELAY_LEFT (1U)
127 
130 #define TIVX_DMPAC_DOF_PREDICTOR_TEMPORAL (2U)
131 
133 #define TIVX_DMPAC_DOF_PREDICTOR_PYR_LEFT (3U)
134 
137 #define TIVX_DMPAC_DOF_PREDICTOR_PYR_COLOCATED (4U)
138 
140 #define TIVX_DMPAC_DOF_MAX_FLOW_VECTOR_DELAY (4U)
141 
142 /*********************************
143  * DMPAC_DOF Defines
144  *********************************/
145 
147 #define TIVX_DMPAC_DOF_RD_ERR (0x04U)
148 
149 #define TIVX_DMPAC_DOF_WR_ERR (0x08U)
150 
151 #define TIVX_DMPAC_DOF_MP0_RD_STATUS_ERR (0x10U)
152 
153 #define TIVX_DMPAC_DOF_FOCO0_SL2_WR_ERR (0x400000U)
154 
155 #define TIVX_DMPAC_DOF_FOCO0_VBUSM_RD_ERR (0x200000U)
156 
157 /*********************************
158  * DMPAC_DOF STRUCTURES
159  *********************************/
160 
167 typedef struct {
173  uint16_t vertical_search_range[2];
189  uint16_t base_predictor[2];
191  uint16_t inter_predictor[2];
215 
217 
224 typedef struct {
242  uint16_t sof_fv_height;
244 
251 typedef struct {
253  uint32_t cs_gain;
255  uint32_t decision_tree_index[16][3];
257  uint32_t decision_tree_threshold[16][3];
259  uint32_t decision_tree_weight[16][4];
261 
268 typedef struct {
272  uint32_t cycle_cnt;
274  uint32_t token_cnt;
276 
277 /*********************************
278  * Function Prototypes
279  *********************************/
280 
286 
292 
298 
304 
305 
373 VX_API_ENTRY vx_node VX_API_CALL tivxDmpacDofNode(vx_graph graph,
374  vx_user_data_object configuration,
375  vx_image input_current_base,
376  vx_image input_reference_base,
377  vx_pyramid input_current,
378  vx_pyramid input_reference,
379  vx_image flow_vector_in,
380  vx_user_data_object sparse_of_config,
381  vx_image sparse_of_map,
382  vx_image flow_vector_out,
383  vx_distribution confidence_histogram);
384 
399  vx_image flow_vector,
400  vx_scalar confidence_threshold,
401  vx_image flow_vector_rgb,
402  vx_image confidence_image);
403 
412 
421 
430 
431 
441 
442 #ifdef __cplusplus
443 }
444 #endif
445 
446 #endif /* HWA_DMPAC_DOF_H_ */
447 
448 
struct _vx_image * vx_image
uint16_t sof_max_pix_in_row
Maximum possible number of enabled pixel in row if sparse optical flow is enabled.
void tivxRegisterHwaTargetArmKernels(void)
Function to register HWA Kernels on the arm Target.
void tivxUnRegisterHwaTargetArmKernels(void)
Function to un-register HWA Kernels on the arm Target.
struct _vx_distribution * vx_distribution
void tivx_dmpac_dof_hts_bw_limit_params_init(tivx_dmpac_dof_hts_bw_limit_params_t *prms)
Function to initialize DOF HTS bandwidth limit parameters with default value.
Configuration parameters used to calculate Confidence Score used by TIVX_KERNEL_DMPAC_DOF kernel...
void tivxRegisterHwaTargetDmpacDofKernels(void)
Function to register HWA Kernels on the dmpac_dof Target.
The sof configuration data structure used by the TIVX_KERNEL_DMPAC_DOF kernel.
struct _vx_user_data_object * vx_user_data_object
The User Data Object. User Data Object is a strongly-typed container for other data structures...
void tivx_dmpac_dof_params_init(tivx_dmpac_dof_params_t *prms)
Function to initialize DOF parameters with default value.
struct _vx_pyramid * vx_pyramid
The configuration data structure used by the TIVX_KERNEL_DMPAC_DOF kernel.
uint16_t sof_fv_height
Number of paxel row with at least one enabled pixel. Paxel row is pair of image row (eg...
void tivx_dmpac_dof_cs_tree_params_init(tivx_dmpac_dof_cs_tree_params_t *prms)
Function to initialize DOF CS tree parameters with default value.
VX_API_ENTRY vx_node VX_API_CALL tivxDmpacDofNode(vx_graph graph, vx_user_data_object configuration, vx_image input_current_base, vx_image input_reference_base, vx_pyramid input_current, vx_pyramid input_reference, vx_image flow_vector_in, vx_user_data_object sparse_of_config, vx_image sparse_of_map, vx_image flow_vector_out, vx_distribution confidence_histogram)
[Graph] Creates a DMPAC_DOF Node.
Configuration parameters used to set HTS BW limit used by TIVX_KERNEL_DMPAC_DOF kernel.
VX_API_ENTRY vx_node VX_API_CALL tivxDofVisualizeNode(vx_graph graph, vx_image flow_vector, vx_scalar confidence_threshold, vx_image flow_vector_rgb, vx_image confidence_image)
[Graph] Creates a DOF visualization node Node.
struct _vx_graph * vx_graph
void tivx_dmpac_dof_sof_params_init(tivx_dmpac_dof_sof_params_t *prms)
Function to initialize DOF SOF parameters with default value.
struct _vx_node * vx_node
uint16_t flow_vector_internal_delay_num
struct _vx_scalar * vx_scalar
vx_status(* VX_API_CALL)(vx_reference *ref)
Callback type used to register release callbacks from object dervied from references.
Definition: vx_reference.h:56
void tivxUnRegisterHwaTargetDmpacDofKernels(void)
Function to un-register HWA Kernels on the dmpac_dof Target.