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_ABAYERTNRV23_ALGO_INT_H_ 21 #define _RK_AIQ_TYPE_ABAYERTNRV23_ALGO_INT_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 "abayertnrV23/rk_aiq_types_abayertnr_algo_v23.h" 29 #include "bayertnr_head_v23.h" 30 #include "bayertnr_uapi_head_v23.h" 31 32 33 //RKAIQ_BEGIN_DECLARE 34 35 #define ABAYERTNRV23_RECALCULATE_DELTA_ISO (10) 36 #define RK_BAYERNR_V23_MAX_ISO_NUM (CALIBDB_MAX_ISO_LEVEL) 37 38 typedef enum Abayertnr_result_V23_e { 39 ABAYERTNRV23_RET_SUCCESS = 0, // this has to be 0, if clauses rely on it 40 ABAYERTNRV23_RET_FAILURE = 1, // process failure 41 ABAYERTNRV23_RET_INVALID_PARM = 2, // invalid parameter 42 ABAYERTNRV23_RET_WRONG_CONFIG = 3, // feature not supported 43 ABAYERTNRV23_RET_BUSY = 4, // there's already something going on... 44 ABAYERTNRV23_RET_CANCELED = 5, // operation canceled 45 ABAYERTNRV23_RET_OUTOFMEM = 6, // out of memory 46 ABAYERTNRV23_RET_OUTOFRANGE = 7, // parameter/value out of range 47 ABAYERTNRV23_RET_NULL_POINTER = 8, // the/one/all parameter(s) is a(are) NULL pointer(s) 48 ABAYERTNRV23_RET_DIVISION_BY_ZERO = 9, // a divisor equals ZERO 49 ABAYERTNRV23_RET_NO_INPUTIMAGE = 10 // no input image 50 } Abayertnr_result_V23_t; 51 52 typedef enum Abayertnr_State_V23_e { 53 ABAYERTNRV23_STATE_INVALID = 0, /**< initialization value */ 54 ABAYERTNRV23_STATE_INITIALIZED = 1, /**< instance is created, but not initialized */ 55 ABAYERTNRV23_STATE_STOPPED = 2, /**< instance is confiured (ready to start) or stopped */ 56 ABAYERTNRV23_STATE_RUNNING = 3, /**< instance is running (processes frames) */ 57 ABAYERTNRV23_STATE_LOCKED = 4, /**< instance is locked (for taking snapshots) */ 58 ABAYERTNRV23_STATE_MAX /**< max */ 59 } Abayertnr_State_V23_t; 60 61 typedef enum Abayertnr_OPMode_V23_e { 62 ABAYERTNRV23_OP_MODE_INVALID = 0, /**< initialization value */ 63 ABAYERTNRV23_OP_MODE_AUTO = 1, /**< instance is created, but not initialized */ 64 ABAYERTNRV23_OP_MODE_MANUAL = 2, /**< instance is confiured (ready to start) or stopped */ 65 ABAYERTNRV23_OP_MODE_REG_MANUAL = 3, 66 ABAYERTNRV23_OP_MODE_MAX /**< max */ 67 } Abayertnr_OPMode_V23_t; 68 69 typedef enum Abayertnr_ParamMode_V23_e { 70 ABAYERTNRV23_PARAM_MODE_INVALID = 0, 71 ABAYERTNRV23_PARAM_MODE_NORMAL = 1, /**< initialization value */ 72 ABAYERTNRV23_PARAM_MODE_HDR = 2, /**< instance is created, but not initialized */ 73 ABAYERTNRV23_PARAM_MODE_GRAY = 3, /**< instance is confiured (ready to start) or stopped */ 74 ABAYERTNRV23_PARAM_MODE_MAX /**< max */ 75 } Abayertnr_ParamMode_V23_t; 76 77 78 79 #if 0 80 typedef struct RK_Bayertnr_Params_V23_Select_s 81 { 82 bool enable; 83 84 //calib 85 int lumapoint[16]; 86 int sigma[16]; 87 int lumapoint2[16]; 88 int lo_sigma[16]; 89 int hi_sigma[16]; 90 91 //tuning 92 uint8_t thumbds_w; 93 uint8_t thumbds_h; 94 95 bool lo_enable; 96 bool hi_enable; 97 bool lo_med_en; 98 bool lo_gsbay_en; 99 bool lo_gslum_en; 100 bool hi_med_en; 101 bool hi_gslum_en; 102 103 bool trans_en; 104 105 bool wgt_use_mode; 106 bool wgt_mge_mode; 107 bool hi_guass; 108 bool kl_guass; 109 110 bool global_pk_en; 111 int global_pksq; 112 113 float lo_filter_strength; 114 float hi_filter_strength; 115 float soft_threshold_ratio; 116 117 float lo_clipwgt; 118 float hi_wgt_comp; 119 int hidif_th; 120 121 float lo_filter_rat0; 122 int lo_filter_thed0; 123 124 int hi_filter_abs_ctrl; 125 int hi_filter_filt_bay; 126 int hi_filter_filt_avg; 127 int hi_filter_filt_mode; 128 129 float hi_filter_rat0; 130 int hi_filter_thed0; 131 float hi_filter_rat1; 132 int hi_filter_thed1; 133 134 135 int guass_guide_coeff0; 136 int guass_guide_coeff1; 137 int guass_guide_coeff2; 138 int guass_guide_coeff3; 139 140 } RK_Bayertnr_Params_V23_Select_t; 141 #endif 142 143 typedef struct RK_Bayertnr_Params_V23_s 144 { 145 bool enable; 146 float iso[RK_BAYERNR_V23_MAX_ISO_NUM]; 147 RK_Bayertnr_Params_V23_Select_t bayertnrParamISO[RK_BAYERNR_V23_MAX_ISO_NUM]; 148 } RK_Bayertnr_Params_V23_t; 149 150 typedef struct RK_Bayertnr_Params_V23L_s { 151 bool enable; 152 float iso[RK_BAYERNR_V23_MAX_ISO_NUM]; 153 RK_Bayertnr_Param_V23L_Select_t bayertnrParamISO[RK_BAYERNR_V23_MAX_ISO_NUM]; 154 } RK_Bayertnr_Params_V23L_t; 155 156 typedef struct Abayertnr_Manual_Attr_V23_s 157 { 158 RK_Bayertnr_Params_V23_Select_t st3DSelect; 159 160 RK_Bayertnr_Fix_V23_t st3DFix; 161 } Abayertnr_Manual_Attr_V23_t; 162 163 typedef struct Abayertnr_Manual_Attr_V23L_s { 164 RK_Bayertnr_Param_V23L_Select_t st3DSelect; 165 166 RK_Bayertnr_Fix_V23_t st3DFix; 167 } Abayertnr_Manual_Attr_V23L_t; 168 169 typedef struct Abayertnr_Auto_Attr_V23_s 170 { 171 RK_Bayertnr_Params_V23_t st3DParams; 172 RK_Bayertnr_Params_V23_Select_t st3DSelect; 173 174 } Abayertnr_Auto_Attr_V23_t; 175 176 typedef struct Abayertnr_Auto_Attr_V23L_s { 177 RK_Bayertnr_Params_V23L_t st3DParams; 178 RK_Bayertnr_Param_V23L_Select_t st3DSelect; 179 } Abayertnr_Auto_Attr_V23L_t; 180 181 typedef struct Abayertnr_ProcResult_V23_s { 182 int bayernr3DEn; 183 184 //for sw simultaion 185 #if (RKAIQ_HAVE_BAYERTNR_V23) 186 //RK_Bayertnr_Params_V23_Select_t st3DSelect; 187 #else 188 //RK_Bayertnr_Param_V23L_Select_t st3DSelect; 189 #endif 190 191 //for hw register 192 RK_Bayertnr_Fix_V23_t* st3DFix; 193 194 } Abayertnr_ProcResult_V23_t; 195 196 197 typedef struct Abayertnr_Config_V23_s { 198 Abayertnr_State_V23_t eState; 199 Abayertnr_OPMode_V23_t eMode; 200 } Abayertnr_Config_V23_t; 201 202 203 typedef struct rk_aiq_bayertnr_attrib_v23_s { 204 rk_aiq_uapi_sync_t sync; 205 Abayertnr_OPMode_V23_t eMode; 206 Abayertnr_Auto_Attr_V23_t stAuto; 207 Abayertnr_Manual_Attr_V23_t stManual; 208 } rk_aiq_bayertnr_attrib_v23_t; 209 210 typedef struct rk_aiq_bayertnr_attrib_v23L_s { 211 rk_aiq_uapi_sync_t sync; 212 Abayertnr_OPMode_V23_t eMode; 213 Abayertnr_Auto_Attr_V23L_t stAuto; 214 Abayertnr_Manual_Attr_V23L_t stManual; 215 } rk_aiq_bayertnr_attrib_v23L_t; 216 217 typedef struct rk_aiq_bayertnr_strength_v23_s { 218 rk_aiq_uapi_sync_t sync; 219 float percent; 220 bool strength_enable; 221 } rk_aiq_bayertnr_strength_v23_t; 222 223 224 225 //RKAIQ_END_DECLARE 226 227 #endif 228 229