TI J721E Imaging User Guide
ti_2a_wrapper.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2020 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 _TI_2A_WRAPPER_H
64 #define _TI_2A_WRAPPER_H
65 
66 #ifdef __cplusplus
67 extern "C" {
68 #endif
69 
70 #include <stdio.h>
71 #include <stdlib.h>
72 #include <stdint.h>
73 
74 #include <TI/tivx.h>
75 #include <TI/hwa_vpac_viss.h>
77 
78 #include "idcc.h"
79 #include "TI_aaa_ae.h"
80 #include "TI_aaa_awb.h"
81 #include "TI/tivx_target_kernel.h"
82 #include <iss_sensors.h>
83 
88 typedef struct
89 {
90  /* Input to DCC parser */
91  dcc_parser_input_params_t * dcc_input_params;
92 
93  /* Output from DCC parser */
94  dcc_parser_output_params_t * dcc_output_params;
95 
96  /* Pointer to AWB params */
97  awbprm_t * p_awb_params;
98 
99  /* Pointer to AE params */
100  tiae_prm_t * p_ae_params;
101 
102  /* Pointer to H3A merge buffer */
103  h3a_aewb_paxel_data_t * p_h3a_merge;
104 
105  /* Pointer to updated H3A result data */
106  h3a_aewb_paxel_data_t * awb_h3a_res;
107 
108  /* Pointer to AWB scratch buffer */
109  uint8_t * scratch_memory;
110 
111  /* Pointer to previous AEWB result */
113 
114  /* Index of frame being currently processed */
115  uint32_t frame_count;
116 
117  /* Flag to indicate if sensor applies White Balance correction pre-HDR merge.
118  1=True, 0=False */
120 
121  /* Flag to indicate if AWB was skipped by TI_2A_wrapper_process function
122  1=YES, 0=NO */
123  uint8_t skipAWB;
124 
125  /* Flag to indicate if AE was skipped by TI_2A_wrapper_process function
126  1=YES, 0=NO */
127  uint8_t skipAE;
128 
129 } TI_2A_wrapper;
130 
135 typedef struct {
136 
137  /* Sensor Specific Auto Exposure Dynamic Parameters */
139 
141 
146 typedef struct {
147 
148  /* AutoExposure results data structure */
150 
152 
167  tivx_aewb_config_t *aewb_config,
168  uint8_t *dcc_buf,
169  uint32_t dcc_buf_size);
170 
189  tivx_aewb_config_t *aewb_config,
190  tivx_h3a_data_t *h3a_data,
191  sensor_config_get *sensor_in_data,
192  tivx_ae_awb_params_t *ae_awb_result,
193  sensor_config_set *sensor_out_data);
194 
202 int32_t TI_2A_wrapper_delete(TI_2A_wrapper *obj);
203 
204 #ifdef __cplusplus
205 }
206 #endif
207 
208 #endif /* _TI_2A_WRAPPER_H */
209 
AutoExposure results data structure.
Definition: iss_sensors.h:339
uint32_t frame_count
Definition: ti_2a_wrapper.h:115
Data corresponding to results of 2A algorithm.
Definition: hwa_vpac_viss.h:180
Structure to get Exposure constraints from sensor.
Definition: ti_2a_wrapper.h:135
Structure to set Exposure output to sensor.
Definition: ti_2a_wrapper.h:146
Sensor Specific Auto Exposure Dynamic Parameters.
Definition: iss_sensors.h:549
tivx_aewb_config_t parameters
Definition: j7_kernels_imaging_aewb.h:140
The h3a_output data structure used by the TIVX_KERNEL_VISS kernel.
Definition: hwa_vpac_viss.h:249
IssSensor_ExposureParams aePrms
Definition: ti_2a_wrapper.h:149
uint8_t skipAWB
Definition: ti_2a_wrapper.h:123
tiae_prm_t * p_ae_params
Definition: ti_2a_wrapper.h:100
int32_t TI_2A_wrapper_delete(TI_2A_wrapper *obj)
AE/AWB wrapper delete function.
int32_t TI_2A_wrapper_process(TI_2A_wrapper *obj, tivx_aewb_config_t *aewb_config, tivx_h3a_data_t *h3a_data, sensor_config_get *sensor_in_data, tivx_ae_awb_params_t *ae_awb_result, sensor_config_set *sensor_out_data)
AE/AWB wrapper process function.
dcc_parser_output_params_t * dcc_output_params
Definition: ti_2a_wrapper.h:94
The list of supported kernels in this kernel extension.
h3a_aewb_paxel_data_t * awb_h3a_res
Definition: ti_2a_wrapper.h:106
h3a_aewb_paxel_data_t * p_h3a_merge
Definition: ti_2a_wrapper.h:103
Auto exposure and white balance run time parameters.
Definition: ti_2a_wrapper.h:88
int32_t sensor_pre_wb_gain
Definition: ti_2a_wrapper.h:119
uint8_t skipAE
Definition: ti_2a_wrapper.h:127
awbprm_t * p_awb_params
Definition: ti_2a_wrapper.h:97
IssAeDynamicParams ae_dynPrms
Definition: ti_2a_wrapper.h:138
dcc_parser_input_params_t * dcc_input_params
Definition: ti_2a_wrapper.h:91
The VISS kernels in this kernel extension.
uint8_t * scratch_memory
Definition: ti_2a_wrapper.h:109
int32_t TI_2A_wrapper_create(TI_2A_wrapper *obj, tivx_aewb_config_t *aewb_config, uint8_t *dcc_buf, uint32_t dcc_buf_size)
AE/AWB wrapper create function.
tivx_ae_awb_params_t ae_awb_result_prev
Definition: ti_2a_wrapper.h:112