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_V1_H_ 21 #define _RK_AIQ_TYPE_ABAYERNR_ALGO_INT_V1_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 "arawnr/rk_aiq_types_abayernr_algo_v1.h" 29 #include "bayernr_head_v1.h" 30 31 //RKAIQ_BEGIN_DECLARE 32 33 #define MAX_ISO_STEP CALIBDB_NR_SHARP_MAX_ISO_LEVEL 34 35 36 37 typedef enum Abayernr_result_v1_e { 38 ABAYERNR_RET_V1_SUCCESS = 0, // this has to be 0, if clauses rely on it 39 ABAYERNR_RET_V1_FAILURE = 1, // process failure 40 ABAYERNR_RET_V1_INVALID_PARM = 2, // invalid parameter 41 ABAYERNR_RET_V1_WRONG_CONFIG = 3, // feature not supported 42 ABAYERNR_RET_V1_BUSY = 4, // there's already something going on... 43 ABAYERNR_RET_V1_CANCELED = 5, // operation canceled 44 ABAYERNR_RET_V1_OUTOFMEM = 6, // out of memory 45 ABAYERNR_RET_V1_OUTOFRANGE = 7, // parameter/value out of range 46 ABAYERNR_RET_V1_NULL_POINTER = 8, // the/one/all parameter(s) is a(are) NULL pointer(s) 47 ABAYERNR_RET_V1_DIVISION_BY_ZERO = 9, // a divisor equals ZERO 48 ABAYERNR_RET_V1_NO_INPUTIMAGE = 10 // no input image 49 } Abayernr_result_v1_t; 50 51 typedef enum Abayernr_State_V1_e { 52 ABAYERNR_STATE_V1_INVALID = 0, /**< initialization value */ 53 ABAYERNR_STATE_V1_INITIALIZED = 1, /**< instance is created, but not initialized */ 54 ABAYERNR_STATE_V1_STOPPED = 2, /**< instance is confiured (ready to start) or stopped */ 55 ABAYERNR_STATE_V1_RUNNING = 3, /**< instance is running (processes frames) */ 56 ABAYERNR_STATE_V1_LOCKED = 4, /**< instance is locked (for taking snapshots) */ 57 ABAYERNR_STATE_V1_MAX /**< max */ 58 } Abayernr_State_V1_t; 59 60 typedef enum Abayernr_OPMode_V1_e { 61 ABAYERNR_OP_MODE_V1_INVALID = 0, /**< initialization value */ 62 ABAYERNR_OP_MODE_V1_AUTO = 1, /**< instance is created, but not initialized */ 63 ABAYERNR_OP_MODE_V1_MANUAL = 2, /**< instance is confiured (ready to start) or stopped */ 64 ABAYERNR_OP_MODE_V1_MAX /**< max */ 65 } Abayernr_OPMode_V1_t; 66 67 typedef enum Abayernr_ParamMode_V1_e { 68 ABAYERNR_PARAM_MODE_V1_INVALID = 0, 69 ABAYERNR_PARAM_MODE_V1_NORMAL = 1, /**< initialization value */ 70 ABAYERNR_PARAM_MODE_V1_HDR = 2, /**< instance is created, but not initialized */ 71 ABAYERNR_PARAM_MODE_V1_GRAY = 3, /**< instance is confiured (ready to start) or stopped */ 72 ABAYERNR_PARAM_MODE_V1_MAX /**< max */ 73 } Abayernr_ParamMode_V1_t; 74 75 typedef struct Abayernr_ExpInfo_V1_s { 76 int hdr_mode; 77 float arTime[3]; 78 float arAGain[3]; 79 float arDGain[3]; 80 int arIso[3]; 81 int arDcgMode[3]; 82 int cur_snr_mode; 83 int snr_mode; 84 85 float preTime[3]; 86 float preAGain[3]; 87 float preDGain[3]; 88 int preIso[3]; 89 int preDcgMode[3]; 90 int pre_snr_mode; 91 92 int mfnr_mode_3to1; 93 } Abayernr_ExpInfo_V1_t; 94 95 96 typedef struct RK_Bayernr_Params_V1_s 97 { 98 #ifndef RK_SIMULATOR_HW 99 float iso[MAX_ISO_STEP]; 100 #endif 101 102 float a[MAX_ISO_STEP]; 103 float b[MAX_ISO_STEP]; 104 105 int halfpatch; 106 int halfblock; 107 float filtpar[MAX_ISO_STEP]; 108 float ctrPit[7]; 109 110 float luLevel[8]; 111 float luRatio[MAX_ISO_STEP][8]; 112 113 float w[MAX_ISO_STEP][4]; 114 115 int peaknoisesigma; 116 int sw_rawnr_gauss_en; 117 118 int rgain_offs; 119 int rgain_filp; 120 int bgain_offs; 121 int bgain_filp; 122 123 char bayernr_ver_char[64]; 124 125 float bayernr_edgesoftness; 126 float bayernr_gauss_weight0; 127 float bayernr_gauss_weight1; 128 129 int sw_bayernr_edge_filter_en; 130 float sw_bayernr_edge_filter_lumapoint[8]; 131 float sw_bayernr_edge_filter_wgt[MAX_ISO_STEP][8]; 132 float sw_bayernr_filter_strength[MAX_ISO_STEP]; 133 int sw_bayernr_filter_lumapoint[16]; 134 int sw_bayernr_filter_sigma[MAX_ISO_STEP][16]; 135 float sw_bayernr_filter_edgesofts[MAX_ISO_STEP]; 136 float sw_bayernr_filter_soft_threshold_ratio[MAX_ISO_STEP]; 137 float sw_bayernr_filter_out_wgt[MAX_ISO_STEP]; 138 } RK_Bayernr_Params_V1_t; 139 140 141 142 typedef struct RK_Bayernr_Params_Select_V1_s 143 { 144 float a[3]; 145 float b[3]; 146 float t0[3]; 147 int halfPatch; 148 int halfBlock; 149 float filtPar[3]; 150 float ctrPit[7]; 151 152 float luLevel[8]; 153 float luRatio[8]; 154 155 float w[4]; 156 int peaknoisesigma; 157 int sw_rawnr_gauss_en; 158 159 int rgain_offs; 160 int rgain_filp; 161 int bgain_offs; 162 int bgain_filp; 163 164 char bayernr_ver_char[64]; 165 166 float bayernr_edgesoftness; 167 float bayernr_gauss_weight0; 168 float bayernr_gauss_weight1; 169 170 int sw_bayernr_edge_filter_en; 171 float sw_bayernr_edge_filter_lumapoint[8]; 172 float sw_bayernr_edge_filter_wgt[8]; 173 float sw_bayernr_filter_strength; 174 int sw_bayernr_filter_lumapoint[16]; 175 int sw_bayernr_filter_sigma[16]; 176 float sw_bayernr_filter_edgesofts; 177 float sw_bayernr_filter_soft_threshold_ratio; 178 float sw_bayernr_filter_out_wgt; 179 180 float sw_dgain[3]; 181 182 int gausskparsq; 183 int sigmaPar; 184 int thld_diff; 185 int thld_chanelw; 186 int pix_diff; 187 int log_bypass; 188 } RK_Bayernr_Params_Select_V1_t; 189 190 191 192 193 typedef struct Abayernr_Manual_Attr_V1_s 194 { 195 int bayernrEn; 196 RK_Bayernr_Params_Select_V1_t stSelect; 197 198 } Abayernr_Manual_Attr_V1_t; 199 200 typedef struct Abayernr_Auto_Attr_V1_s 201 { 202 //all ISO params and select param 203 int bayernrEn; 204 205 RK_Bayernr_Params_V1_t stParams; 206 RK_Bayernr_Params_Select_V1_t stSelect; 207 208 } Abayernr_Auto_Attr_V1_t; 209 210 typedef struct Abayernr_ProcResult_V1_s { 211 int bayernrEn; 212 213 //for sw simultaion 214 RK_Bayernr_Params_Select_V1_t stSelect; 215 //for hw register 216 RK_Bayernr_Fix_V1_t stFix; 217 218 } Abayernr_ProcResult_V1_t; 219 220 221 typedef struct Abayernr_Config_V1_s { 222 Abayernr_State_V1_t eState; 223 Abayernr_OPMode_V1_t eMode; 224 } Abayernr_Config_V1_t; 225 226 227 typedef struct rk_aiq_bayernr_attrib_v1_s { 228 Abayernr_OPMode_V1_t eMode; 229 Abayernr_Auto_Attr_V1_t stAuto; 230 Abayernr_Manual_Attr_V1_t stManual; 231 } rk_aiq_bayernr_attrib_v1_t; 232 233 234 typedef struct rk_aiq_bayernr_IQPara_V1_s { 235 CalibDb_BayerNr_t stBayernrPara; 236 } rk_aiq_bayernr_IQPara_V1_t; 237 238 typedef struct rk_aiq_bayernr_JsonPara_V1_s { 239 CalibDbV2_BayerNrV1_t bayernr_v1; 240 241 } rk_aiq_bayernr_JsonPara_V1_t; 242 243 //RKAIQ_END_DECLARE 244 245 #endif 246 247