TIOVX User Guide
hwa_vpac_ldc.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_VPAC_LDC_H_
64 #define HWA_VPAC_LDC_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_VPAC_LDC_NAME "com.ti.hwa.vpac_ldc"
82 
83 
84 /*********************************
85  * VPAC_LDC Control Commands
86  *********************************/
87 
94 #define TIVX_VPAC_LDC_CMD_SET_READ_BW_LIMIT_PARAMS (0x10000000u)
95 
106 #define TIVX_VPAC_LDC_CMD_SET_BIT_DEPTH_CONV_LUT_PARAMS (0x10000001u)
107 
117 #define TIVX_VPAC_LDC_CMD_GET_ERR_STATUS (0x10000002u)
118 
130 #define TIVX_VPAC_LDC_CMD_SET_LDC_PARAMS (0x10000003u)
131 
147 #define TIVX_VPAC_LDC_CMD_SET_LDC_DCC_PARAMS (0x30000000u)
148 
149 /*********************************
150  * VPAC_LDC Defines
151  *********************************/
152 
160 #define TIVX_VPAC_LDC_ALIGN_LSB (0U)
161 
162 #define TIVX_VPAC_LDC_ALIGN_MSB (1U)
163 
165 #define TIVX_VPAC_LDC_INTERPOLATION_BICUBIC (0U)
166 
167 #define TIVX_VPAC_LDC_INTERPOLATION_BILINEAR (1U)
168 
170 #define TIVX_VPAC_LDC_MODE_LUMA_ONLY (0U)
171 
172 #define TIVX_VPAC_LDC_MODE_CHROMA_ONLY (1U)
173 
181 #define TIVX_VPAC_LDC_CALC_MESH_LINE_OFFSET(width, subsample_factor) \
182  ((((((width)/(subsample_factor))+1) + 15U) & ~15U) * (4U))
183 
185 #define TIVX_VPAC_LDC_BIT_DEPTH_CONV_LUT_SIZE (513u)
186 
189 #define TIVX_VPAC_LDC_PIX_BLK_OUTOFBOUND_ERR_STATUS (0x1u)
190 
192 #define TIVX_VPAC_LDC_MESH_BLK_OUTOFBOUND_ERR_STATUS (0x2u)
193 
194 #define TIVX_VPAC_LDC_PIX_MEM_OVF_ERR_STATUS (0x4u)
195 
196 #define TIVX_VPAC_LDC_MESH_MEM_OVF_ERR_STATUS (0x8u)
197 
198 #define TIVX_VPAC_LDC_PIX_FRM_OUTOFBOUND_ERR_STATUS (0x10u)
199 
200 #define TIVX_VPAC_LDC_SZ_OVF_ERR_STATUS (0x20u)
201 
202 #define TIVX_VPAC_LDC_SL2_WR_ERR_STATUS (0x80u)
203 
204 #define TIVX_VPAC_LDC_RD_ERR_STATUS (0x100u)
205 
206 #define TIVX_VPAC_LDC_SET_PARAMS_WARP_MATRIX_IDX (0u)
207 
208 #define TIVX_VPAC_LDC_DEF_BLOCK_WIDTH (64u)
209 #define TIVX_VPAC_LDC_DEF_BLOCK_HEIGHT (64u)
210 #define TIVX_VPAC_LDC_DEF_PIXEL_PAD (0u)
211 
212 /*********************************
213  * VPAC_LDC STRUCTURES
214  *********************************/
215 
222 typedef struct {
224  uint32_t enable;
226  uint32_t out_block_width;
230  uint32_t pixel_pad;
232 
239 typedef struct {
241  uint32_t reg_width[3];
243  uint32_t reg_height[3];
247 
254 typedef struct {
255 
260 
265 
272 typedef struct {
278 
281  uint32_t init_x;
284  uint32_t init_y;
285 
297  uint32_t yc_mode;
298 
300  uint32_t dcc_camera_id;
302 
303 
312 typedef struct {
328  uint32_t tag_count;
340 
350 typedef struct {
354  uint32_t input_bits;
358  uint32_t output_bits;
363 
364 /*********************************
365  * Function Prototypes
366  *********************************/
367 
373 
374 
380 
381 
475 VX_API_ENTRY vx_node VX_API_CALL tivxVpacLdcNode(vx_graph graph,
476  vx_user_data_object configuration,
477  vx_matrix warp_matrix,
478  vx_user_data_object region_prms,
479  vx_user_data_object mesh_prms,
480  vx_image mesh_img,
481  vx_user_data_object dcc_db,
482  vx_image in_img,
483  vx_image out0_img,
484  vx_image out1_img);
485 
494 
503 
512 
522 
531 
532 #ifdef __cplusplus
533 }
534 #endif
535 
536 #endif /* HWA_VPAC_LDC_H_ */
537 
538 
struct _vx_image * vx_image
The region_params data structure used by the TIVX_KERNEL_VPAC_LDC kernel.
Definition: hwa_vpac_ldc.h:222
The remap params structure used by the TIVX_KERNEL_VPAC_LDC kernel. Passed as argument to TIVX_VPAC_L...
Definition: hwa_vpac_ldc.h:350
#define TIVX_VPAC_LDC_BIT_DEPTH_CONV_LUT_SIZE
Definition: hwa_vpac_ldc.h:185
void tivx_vpac_ldc_region_params_init(tivx_vpac_ldc_region_params_t *prms)
Function to initialize LDC Region parameters.
uint32_t luma_interpolation_type
Definition: hwa_vpac_ldc.h:277
void tivxUnRegisterHwaTargetVpacLdcKernels(void)
Function to un-register HWA Kernels on the vpac_ldc Target.
void tivx_vpac_ldc_mesh_params_init(tivx_vpac_ldc_mesh_params_t *prms)
Function to initialize LDC Mesh parameters.
The configuration data structure used by the TIVX_KERNEL_VPAC_LDC kernel.
Definition: hwa_vpac_ldc.h:272
void tivx_vpac_ldc_bandwidth_params_init(tivx_vpac_ldc_bandwidth_params_t *prms)
Function to initialize Bandwidth limiter parameters.
The alternative region_params data structure used by the TIVX_KERNEL_VPAC_LDC kernel.
Definition: hwa_vpac_ldc.h:239
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...
struct _vx_graph * vx_graph
struct _vx_node * vx_node
void tivx_vpac_ldc_multi_region_params_init(tivx_vpac_ldc_multi_region_params_t *prms)
Function to initialize LDC Multi Region parameters.
VX_API_ENTRY vx_node VX_API_CALL tivxVpacLdcNode(vx_graph graph, vx_user_data_object configuration, vx_matrix warp_matrix, vx_user_data_object region_prms, vx_user_data_object mesh_prms, vx_image mesh_img, vx_user_data_object dcc_db, vx_image in_img, vx_image out0_img, vx_image out1_img)
[Graph] Creates a VPAC_LDC Node.
The bandwidth params structure used by the TIVX_KERNEL_VPAC_LDC kernel. Passed as argument to TIVX_VP...
Definition: hwa_vpac_ldc.h:312
struct _vx_matrix * vx_matrix
void tivxRegisterHwaTargetVpacLdcKernels(void)
Function to register HWA Kernels on the vpac_ldc Target.
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
The mesh data structure in the configuration data structure used by the TIVX_KERNEL_VPAC_LDC kernel...
Definition: hwa_vpac_ldc.h:254
void tivx_vpac_ldc_params_init(tivx_vpac_ldc_params_t *prms)
Function to initialize LDC parameters with the default values.