1 /* 2 *rk_aiq_types_alsc_algo_int.h 3 * 4 * Copyright (c) 2019 Rockchip Corporation 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 * 18 */ 19 20 #ifndef _RK_AIQ_TYPE_ABAYERNR_ALGO_INT_V2_H_ 21 #define _RK_AIQ_TYPE_ABAYERNR_ALGO_INT_V2_H_ 22 23 #include <math.h> 24 #include <string.h> 25 #include <stdlib.h> 26 #include "rk_aiq_comm.h" 27 #include "RkAiqCalibDbTypes.h" 28 #include "arawnr2/rk_aiq_types_abayernr_algo_v2.h" 29 #include "bayernr_head_v2.h" 30 31 //RKAIQ_BEGIN_DECLARE 32 33 #define ABAYERNRV2_DELTA_ISO (10) 34 35 typedef enum Abayernr_result_e { 36 ABAYERNR_RET_SUCCESS = 0, // this has to be 0, if clauses rely on it 37 ABAYERNR_RET_FAILURE = 1, // process failure 38 ABAYERNR_RET_INVALID_PARM = 2, // invalid parameter 39 ABAYERNR_RET_WRONG_CONFIG = 3, // feature not supported 40 ABAYERNR_RET_BUSY = 4, // there's already something going on... 41 ABAYERNR_RET_CANCELED = 5, // operation canceled 42 ABAYERNR_RET_OUTOFMEM = 6, // out of memory 43 ABAYERNR_RET_OUTOFRANGE = 7, // parameter/value out of range 44 ABAYERNR_RET_NULL_POINTER = 8, // the/one/all parameter(s) is a(are) NULL pointer(s) 45 ABAYERNR_RET_DIVISION_BY_ZERO = 9, // a divisor equals ZERO 46 ABAYERNR_RET_NO_INPUTIMAGE = 10 // no input image 47 } Abayernr_result_t; 48 49 typedef enum Abayernr_State_e { 50 ABAYERNR_STATE_INVALID = 0, /**< initialization value */ 51 ABAYERNR_STATE_INITIALIZED = 1, /**< instance is created, but not initialized */ 52 ABAYERNR_STATE_STOPPED = 2, /**< instance is confiured (ready to start) or stopped */ 53 ABAYERNR_STATE_RUNNING = 3, /**< instance is running (processes frames) */ 54 ABAYERNR_STATE_LOCKED = 4, /**< instance is locked (for taking snapshots) */ 55 ABAYERNR_STATE_MAX /**< max */ 56 } Abayernr_State_t; 57 58 typedef enum Abayernr_OPMode_e { 59 ABAYERNR_OP_MODE_INVALID = 0, /**< initialization value */ 60 ABAYERNR_OP_MODE_AUTO = 1, /**< instance is created, but not initialized */ 61 ABAYERNR_OP_MODE_MANUAL = 2, /**< instance is confiured (ready to start) or stopped */ 62 ABAYERNR_OP_MODE_MAX /**< max */ 63 } Abayernr_OPMode_t; 64 65 typedef enum Abayernr_ParamMode_e { 66 ABAYERNR_PARAM_MODE_INVALID = 0, 67 ABAYERNR_PARAM_MODE_NORMAL = 1, /**< initialization value */ 68 ABAYERNR_PARAM_MODE_HDR = 2, /**< instance is created, but not initialized */ 69 ABAYERNR_PARAM_MODE_GRAY = 3, /**< instance is confiured (ready to start) or stopped */ 70 ABAYERNR_PARAM_MODE_MAX /**< max */ 71 } Abayernr_ParamMode_t; 72 73 typedef struct Abayernr_ExpInfo_s { 74 int hdr_mode; 75 float arTime[3]; 76 float arAGain[3]; 77 float arDGain[3]; 78 int arIso[3]; 79 int snr_mode; 80 } Abayernr_ExpInfo_t; 81 82 83 84 typedef struct RK_Bayernr_2D_Params_V2_s 85 { 86 // bayernr version 87 int bayernrv2_2dnr_enable; 88 89 // v2 parse 90 float iso[RK_BAYERNR_V2_MAX_ISO_NUM]; 91 float bayernrv2_edge_filter_lumapoint_r[8]; 92 float bayernrv2_edge_filter_wgt_r[RK_BAYERNR_V2_MAX_ISO_NUM][8]; 93 float bayernrv2_filter_strength_r[RK_BAYERNR_V2_MAX_ISO_NUM]; 94 int bayernrv2_filter_lumapoint_r[16]; 95 int bayernrv2_filter_sigma_r[RK_BAYERNR_V2_MAX_ISO_NUM][16]; 96 float bayernrv2_filter_edgesofts_r[RK_BAYERNR_V2_MAX_ISO_NUM]; 97 float bayernrv2_filter_soft_threshold_ratio_r[RK_BAYERNR_V2_MAX_ISO_NUM]; 98 float bayernrv2_filter_out_wgt_r[RK_BAYERNR_V2_MAX_ISO_NUM]; 99 int bayernrv2_gauss_guide_r[RK_BAYERNR_V2_MAX_ISO_NUM]; 100 101 } RK_Bayernr_2D_Params_V2_t; 102 103 typedef struct RK_Bayernr_2D_Params_V2_Select_s 104 { 105 // v2 version register // edge filter params 106 int bayernrv2_2dnr_enable; 107 108 float bayernrv2_filter_strength; 109 float bayernrv2_filter_soft_threshold_ratio; 110 float bayernrv2_filter_out_wgt; 111 float bayernrv2_filter_edgesofts; 112 113 int bayernrv2_edge_filter_en; 114 int bayernrv2_edge_filter_lumapoint[8]; 115 int bayernrv2_edge_filter_wgt[8]; 116 int bayernrv2_gauss_guide; 117 int bayernrv2_filter_lumapoint[16]; 118 int bayernrv2_filter_sigma[16]; 119 int bayernrv2_bil_gauss_weight[16]; 120 int bayernrv2_gray_mode; 121 int bayernrv2_dgains[3]; 122 int bayernrv2_thld_diff; 123 int bayernrv2_pix_diff; 124 125 } RK_Bayernr_2D_Params_V2_Select_t; 126 127 128 typedef struct RK_Bayernr_3D_Params_V2_s 129 { 130 int bayernrv2_tnr_enable; 131 132 float iso[RK_BAYERNR_V2_MAX_ISO_NUM]; 133 float bayernrv2_tnr_filter_strength_r[RK_BAYERNR_V2_MAX_ISO_NUM]; 134 float bayernrv2_tnr_lo_clipwgt_r[RK_BAYERNR_V2_MAX_ISO_NUM]; 135 float bayernrv2_tnr_hi_clipwgt_r[RK_BAYERNR_V2_MAX_ISO_NUM]; 136 float bayernrv2_tnr_softwgt_r[RK_BAYERNR_V2_MAX_ISO_NUM]; 137 138 int bayernrv2_lumapoint_r[16]; 139 int bayernrv2_sigma_r[RK_BAYERNR_V2_MAX_ISO_NUM][16]; 140 141 } RK_Bayernr_3D_Params_V2_t; 142 143 144 typedef struct RK_Bayernr_3D_Params_V2_Select_s 145 { 146 int bayernrv2_tnr_enable; 147 148 float bayernrv2_tnr_filter_strength; 149 float bayernrv2_tnr_lo_clipwgt; 150 float bayernrv2_tnr_hi_clipwgt; 151 float bayernrv2_tnr_softwgt; 152 153 //below not use yet 154 int bayernrv2_tnr_sigratio; 155 int bayernrv2_tnr_strength; 156 int bayernrv2_tnr_global_pk_en; // 1 use local pk, 0 use global pk 157 int bayernrv2_tnr_global_pksq; 158 159 int bayernrv2_tnr_lumapoint[16]; 160 int bayernrv2_tnr_sigma[16]; 161 } RK_Bayernr_3D_Params_V2_Select_t; 162 163 164 typedef struct Abayernr_Manual_Attr_V2_s 165 { 166 int bayernr2DEn; 167 int bayernr3DEn; 168 RK_Bayernr_2D_Params_V2_Select_t st2DSelect; 169 RK_Bayernr_3D_Params_V2_Select_t st3DSelect; 170 171 } Abayernr_Manual_Attr_V2_t; 172 173 typedef struct Abayernr_Auto_Attr_V2_s 174 { 175 //all ISO params and select param 176 int bayernr2DEn; 177 int bayernr3DEn; 178 179 RK_Bayernr_2D_Params_V2_t st2DParams; 180 RK_Bayernr_3D_Params_V2_t st3DParams; 181 RK_Bayernr_2D_Params_V2_Select_t st2DSelect; 182 RK_Bayernr_3D_Params_V2_Select_t st3DSelect; 183 184 } Abayernr_Auto_Attr_V2_t; 185 186 typedef struct Abayernr_ProcResult_V2_s { 187 int bayernr2DEn; 188 int bayernr3DEn; 189 190 //for sw simultaion 191 //RK_Bayernr_2D_Params_V2_Select_t st2DSelect; 192 //RK_Bayernr_3D_Params_V2_Select_t st3DSelect; 193 194 //for hw register 195 RK_Bayernr_2D_Fix_V2_t* st2DFix; 196 RK_Bayernr_3D_Fix_V2_t* st3DFix; 197 } Abayernr_ProcResult_V2_t; 198 199 200 typedef struct Abayernr_Config_V2_s { 201 Abayernr_State_t eState; 202 Abayernr_OPMode_t eMode; 203 } Abayernr_Config_V2_t; 204 205 206 typedef struct rk_aiq_bayernr_attrib_v2_s { 207 Abayernr_OPMode_t eMode; 208 Abayernr_Auto_Attr_V2_t stAuto; 209 Abayernr_Manual_Attr_V2_t stManual; 210 } rk_aiq_bayernr_attrib_v2_t; 211 212 213 214 215 216 typedef struct rk_aiq_bayernr_IQPara_V2_s { 217 struct list_head listHead_mode; 218 } rk_aiq_bayernr_IQPara_V2_t; 219 220 221 typedef struct rk_aiq_bayernr_JsonPara_V2_s { 222 CalibDbV2_BayerNrV2_t bayernr_v2; 223 } rk_aiq_bayernr_JsonPara_V2_t; 224 225 226 //RKAIQ_END_DECLARE 227 228 #endif 229 230