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 
124 #define TIVX_DMPAC_DOF_CMD_GET_ERR_STATUS (0x10000002u)
125 
129 #define TIVX_DMPAC_DOF_CMD_GET_PSA_STATUS (0x10000003u)
130 
131 /*********************************
132  * DMPAC_DOF PREDICTORS
133  *********************************/
135 #define TIVX_DMPAC_DOF_PREDICTOR_NONE (0U)
136 
138 #define TIVX_DMPAC_DOF_PREDICTOR_DELAY_LEFT (1U)
139 
142 #define TIVX_DMPAC_DOF_PREDICTOR_TEMPORAL (2U)
143 
145 #define TIVX_DMPAC_DOF_PREDICTOR_PYR_LEFT (3U)
146 
149 #define TIVX_DMPAC_DOF_PREDICTOR_PYR_COLOCATED (4U)
150 
152 #define TIVX_DMPAC_DOF_MAX_FLOW_VECTOR_DELAY (4U)
153 
154 /*********************************
155  * DMPAC_DOF Defines
156  *********************************/
164 #define TIVX_DMPAC_DOF_RD_ERR (0x04U)
165 
166 #define TIVX_DMPAC_DOF_WR_ERR (0x08U)
167 
168 #define TIVX_DMPAC_DOF_MP0_RD_STATUS_ERR (0x10U)
169 
170 #define TIVX_DMPAC_DOF_FOCO0_SL2_WR_ERR (0x400000U)
171 
172 #define TIVX_DMPAC_DOF_FOCO0_VBUSM_RD_ERR (0x200000U)
173 
174 #define TIVX_DMPAC_DOF_WDTIMER_ERR (0x40000000U)
175 
176 #define TIVX_DMPAC_DOF_FOCO0_WDTIMER_ERR (0x80000000U)
177 
180 /*********************************
181  * DMPAC_DOF STRUCTURES
182  *********************************/
183 
190 typedef struct {
196  uint16_t vertical_search_range[2];
212  uint16_t base_predictor[2];
214  uint16_t inter_predictor[2];
238 
268  uint32_t enable_psa;
269 
271 
278 typedef struct {
296  uint16_t sof_fv_height;
298 
305 typedef struct {
307  uint32_t cs_gain;
309  uint32_t decision_tree_index[16][3];
311  uint32_t decision_tree_threshold[16][3];
313  uint32_t decision_tree_weight[16][4];
315 
322 typedef struct {
326  uint32_t cycle_cnt;
328  uint32_t token_cnt;
330 
336 typedef struct {
340  uint32_t psa_values;
344  uint64_t timestamp;
346 
347 /*********************************
348  * Function Prototypes
349  *********************************/
350 
356 
362 
368 
374 
375 
443 VX_API_ENTRY vx_node VX_API_CALL tivxDmpacDofNode(vx_graph graph,
444  vx_user_data_object configuration,
445  vx_image input_current_base,
446  vx_image input_reference_base,
447  vx_pyramid input_current,
448  vx_pyramid input_reference,
449  vx_image flow_vector_in,
450  vx_user_data_object sparse_of_config,
451  vx_image sparse_of_map,
452  vx_image flow_vector_out,
453  vx_distribution confidence_histogram);
454 
469  vx_image flow_vector,
470  vx_scalar confidence_threshold,
471  vx_image flow_vector_rgb,
472  vx_image confidence_image);
473 
482 
491 
500 
501 
511 
512 #ifdef __cplusplus
513 }
514 #endif
515 
516 #endif /* HWA_DMPAC_DOF_H_ */
517 
518 
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.
Structure to hold PSA timestamp data.
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 derived from references.
Definition: vx_reference.h:56
void tivxUnRegisterHwaTargetDmpacDofKernels(void)
Function to un-register HWA Kernels on the dmpac_dof Target.