1 /* 2 *rk_aiq_types_alsc_algo_prvt.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_TYPES_ANR_ALGO_PRVT_H_ 21 #define _RK_AIQ_TYPES_ANR_ALGO_PRVT_H_ 22 23 #include "anr/rk_aiq_types_anr_algo_int.h" 24 #include "RkAiqCalibDbTypes.h" 25 #include "xcam_log.h" 26 #include "xcam_common.h" 27 #include "RkAiqCalibDbTypesV2.h" 28 #include "RkAiqCalibDbV2Helper.h" 29 30 31 RKAIQ_BEGIN_DECLARE 32 33 #define NR_ISO_REG_DIV 1 34 35 36 /************bayernr fix***************/ 37 #define FIXNLMCALC 10 38 #define FIXDIFMAX ((long long)1<<(14)) 39 #define LUTMAXM1_FIX 300.0 //29.0 40 #define LUTPRECISION_FIX (1<<FIXNLMCALC) 41 42 /************mfnr fix***************/ 43 #define MFNR_MATALAB_FLG 0 44 #define FIX_VAL (1 && !MFNR_MATALAB_FLG)// 1 for rtl_3dnr, 0 for matlab_3dnr 45 #define ACCURATE_LOW 0 46 #define F_ACCURATE_FLG_SCALE_L ACCURATE_LOW 47 #if FIX_VAL 48 #define FIX_ENABLE_GAIN_IN FIX_ENABLE 49 #define FIX_ENABLE_DELTA_SCALE FIX_ENABLE 50 #define FIX_ENABLE_DELTA_CALC FIX_ENABLE 51 #define FIX_ENABLE_DELTA_TO_DELTA_SQR FIX_ENABLE 52 #define FIX_ENABLE_DELTA_CONV FIX_ENABLE 53 #define FIX_ENABLE_PK_CALC FIX_ENABLE 54 #define F_ACCURATE_FLG_SCALE_L ACCURATE_LOW 55 #define F_ACCURATE_FLG_DELTA_SCALE_L ACCURATE_LOW 56 #define F_ACCURATE_FLG_LUMA_W_IN_CHROMA ACCURATE_LOW 57 #define F_ACCURATE_FLG_CONV_WEIGHT ACCURATE_LOW 58 #define F_ACCURATE_FLG_CONV_OUT ACCURATE_LOW 59 #define F_ACCURATE_FLG_CONV1_OUT ACCURATE_LOW 60 #define F_ACCURATE_FLG_SIGMA ACCURATE_LOW 61 #define F_ACCURATE_FLG_FRQ_DELTA ACCURATE_LOW 62 #define F_ACCURATE_FLG_TXT_THRD_RATIO ACCURATE_LOW 63 #define F_ACCURATE_FLG_TXT_THRD ACCURATE_LOW 64 #define F_ACCURATE_FLG_TXT_RATIO ACCURATE_LOW 65 #define F_ACCURATE_FLG_DELTA ACCURATE_LOW 66 #define F_ACCURATE_FLG_EXP_VAL ACCURATE_LOW 67 #define F_ACCURATE_FLG_PK_MID ACCURATE_LOW 68 #define F_ACCURATE_FLG_EXP_SIGMA ACCURATE_LOW 69 #define F_ACCURATE_FLG_EXP_SIGMA_RATIO ACCURATE_LOW 70 #define F_ACCURATE_FLG_GAIN ACCURATE_LOW 71 #define F_ACCURATE_FLG_PIXEL_RECON ACCURATE_LOW 72 #define F_ACCURATE_FLG_PIXEL_ORI ACCURATE_LOW 73 #else 74 #define FIX_ENABLE_GAIN_IN FIX_DISABLE 75 #define FIX_ENABLE_DELTA_SCALE FIX_DISABLE 76 #define FIX_ENABLE_DELTA_CALC FIX_DISABLE 77 #define FIX_ENABLE_DELTA_TO_DELTA_SQR FIX_DISABLE 78 #define FIX_ENABLE_DELTA_CONV FIX_DISABLE 79 #define FIX_ENABLE_PK_CALC FIX_DISABLE 80 #define F_ACCURATE_FLG_SCALE_L ACCURATE_HIGH 81 #define F_ACCURATE_FLG_DELTA_SCALE_L ACCURATE_HIGH 82 #define F_ACCURATE_FLG_LUMA_W_IN_CHROMA ACCURATE_HIGH 83 #define F_ACCURATE_FLG_CONV_WEIGHT ACCURATE_HIGH 84 #define F_ACCURATE_FLG_CONV_OUT ACCURATE_HIGH 85 #define F_ACCURATE_FLG_CONV1_OUT ACCURATE_HIGH 86 #define F_ACCURATE_FLG_SIGMA ACCURATE_HIGH 87 #define F_ACCURATE_FLG_FRQ_DELTA ACCURATE_HIGH 88 #define F_ACCURATE_FLG_TXT_THRD_RATIO ACCURATE_HIGH 89 #define F_ACCURATE_FLG_TXT_THRD ACCURATE_HIGH 90 #define F_ACCURATE_FLG_TXT_RATIO ACCURATE_HIGH 91 #define F_ACCURATE_FLG_DELTA ACCURATE_HIGH 92 #define F_ACCURATE_FLG_EXP_VAL ACCURATE_HIGH 93 #define F_ACCURATE_FLG_PK_MID ACCURATE_HIGH 94 #define F_ACCURATE_FLG_EXP_SIGMA ACCURATE_HIGH 95 #define F_ACCURATE_FLG_EXP_SIGMA_RATIO ACCURATE_HIGH 96 #define F_ACCURATE_FLG_GAIN ACCURATE_HIGH 97 #define F_ACCURATE_FLG_PIXEL_RECON ACCURATE_HIGH 98 #define F_ACCURATE_FLG_PIXEL_ORI ACCURATE_HIGH 99 #endif 100 101 102 #define F_DECI_CONV_WEIGHT_ACCURATE 13 103 #define F_DECI_CONV_WEIGHT_REAL 8 104 #define F_DECI_CONV_WEIGHT (F_ACCURATE_FLG_CONV_WEIGHT ? F_DECI_CONV_WEIGHT_ACCURATE : F_DECI_CONV_WEIGHT_REAL) 105 #define F_DECI_PIXEL_SIGMA_CONV_WEIGHT F_DECI_CONV_WEIGHT 106 #define F_DECI_GAIN_ACCURATE (16) 107 #define F_DECI_GAIN_REAL 8 //(MAX(F_DECI_GAIN_IN*2, 8)) 108 #define F_DECI_GAIN (F_ACCURATE_FLG_GAIN ? (F_DECI_GAIN_ACCURATE) : (F_DECI_GAIN_REAL)) 109 #define F_DECI_GAIN_SQRT 4// 8 for rtl_sqrt(F_DECI_GAIN / 2) 110 #define F_DECI_GAIN_GLB_SQRT F_DECI_GAIN_SQRT 111 #define F_DECI_GAIN_GLB_SQRT_INV 13 // (F_INTE_GAIN_SQRT + F_DECI_GAIN_SQRT) // 13 // (F_INTE_GAIN_SQRT + F_DECI_GAIN_SQRT + 4) is better jmj_3dnr 112 #define F_DECI_LUMASCALE 6 //8 for rtl_3dnr 113 #define F_DECI_SCALE_L_ACCURATE 18 114 #define F_DECI_SCALE_L_REAL 8 115 #define F_DECI_SCALE_L (F_ACCURATE_FLG_SCALE_L ? F_DECI_SCALE_L_ACCURATE : F_DECI_SCALE_L_REAL) 116 #define F_DECI_SCALE_L_UV_ACCURATE 18 117 #define F_DECI_SCALE_L_UV_REAL 6 118 #define F_DECI_SCALE_L_UV (F_ACCURATE_FLG_SCALE_L ? F_DECI_SCALE_L_UV_ACCURATE : F_DECI_SCALE_L_UV_REAL) 119 #define F_DECI_LUMA_W_IN_CHROMA_ACCURATE 16 120 #define F_DECI_LUMA_W_IN_CHROMA_REAL 5 121 #define F_DECI_LUMA_W_IN_CHROMA (F_ACCURATE_FLG_LUMA_W_IN_CHROMA ? F_DECI_LUMA_W_IN_CHROMA_ACCURATE : F_DECI_LUMA_W_IN_CHROMA_REAL) 122 #define F_DECI_SIGMA_ACCURATE (24) 123 #define F_DECI_SIGMA_REAL (6 ) 124 #define F_DECI_SIGMA (F_ACCURATE_FLG_SIGMA ? F_DECI_SIGMA_ACCURATE : F_DECI_SIGMA_REAL) 125 #define F_DECI_TXT_THRD_RATIO_ACCURATE (16) 126 #define F_DECI_TXT_THRD_RATIO_REAL (6) //(8) 127 #define F_DECI_TXT_THRD_RATIO (F_ACCURATE_FLG_TXT_THRD_RATIO ? F_DECI_TXT_THRD_RATIO_ACCURATE : F_DECI_TXT_THRD_RATIO_REAL) 128 #define F_INTE_GAIN_GLB_SQRT_INV 0 129 #define F_DECI_GAIN_GLB_SQRT_INV 13 130 #define GAIN_SIGMA_BITS_ACT 10 131 #define MAX_INTEPORATATION_LUMAPOINT 17 132 #define GAIN_HDR_MERGE_IN_FIX_BITS_DECI 6 133 #define GAIN_HDR_MERGE_IN2_FIX_BITS_INTE 12 134 #define GAIN_HDR_MERGE_IN0_FIX_BITS_INTE 8 135 136 137 /************uvnr fix***************/ 138 #define RKUVNR_ratio 0 139 #define RKUVNR_offset 4 140 #define RKUVNR_kernels 7 141 #define RKUVNR_medRatio 4 142 #define RKUVNR_sigmaR 0 143 #define RKUVNR_uvgain 4 144 #define RKUVNR_exp2_lut_y 7 145 #define RKUVNR_bfRatio RKUVNR_exp2_lut_y 146 #define RKUVNR_gainRatio 7 147 #define RKUVNR_imgBit_set 8 148 #define RKUVNR_log2e 6 149 150 151 152 /************ynr fix***************/ 153 #define FIX_BIT_CI 5//7 154 #define FIX_BIT_NOISE_SIGMA 5//7 155 #define FIX_BIT_DENOISE_WEIGHT 7 156 #define FIX_BIT_BF_SCALE 4//7 157 #define FIX_BIT_LUMA_CURVE 4//7 158 #define FIX_BIT_EDGE_SOFTNESS 7 159 #define FIX_BIT_GRAD_ADJUST_CURVE 4//7 160 #define FIX_BIT_LSC_ADJUST_RATIO 4 161 #define FIX_BIT_RADIAL_ADJUST_CURVE 4 162 #define FIX_BIT_VAR_TEXTURE 4 163 #define FIX_BIT_BF_W 7 164 #define FIX_BIT_DENOISE_STRENGTH 4//7 165 #define FIX_BIT_SOFT_THRESHOLD_SCALE 8 166 #define FIX_BIT_SOFT_THRESHOLD_SCALE_V2 4 167 #define FIX_BIT_DIRECTION_STRENGTH FIX_BIT_BF_SCALE 168 #define FIX_BIT_4 4 169 #define FIX_BIT_6 6 170 #define FIX_BIT_7 7 171 #define FIX_COEF_BIT 2 172 #define YNR_FILT_MODE0 0 173 #define YNR_FILT_MODE1 1 174 #define YNR_DMA_NUM 4 175 176 #define YNR_exp_lut_num 16 177 #define YNR_exp_lut_x 7 178 #define YNR_exp_lut_y 7 179 #define CLIPVALUE 180 181 #define WAVELET_LEVEL_1 0 182 #define WAVELET_LEVEL_2 1 183 #define WAVELET_LEVEL_3 2 184 #define WAVELET_LEVEL_4 3 185 #define YNR_SIGMA_BITS 10 186 187 188 189 typedef struct ANRGainState_s { 190 int gain_stat_full_last; 191 int gainState; 192 int gainState_last; 193 float gain_th0[2]; 194 float gain_th1[2]; 195 float gain_cur; 196 float ratio; 197 } ANRGainState_t; 198 199 //anr context 200 typedef struct ANRContext_s { 201 ANRExpInfo_t stExpInfo; 202 203 float fEnvLight; 204 ANRState_t eState; 205 ANROPMode_t eMode; 206 207 ANR_Auto_Attr_t stAuto; 208 ANR_Manual_Attr_t stManual; 209 210 int refYuvBit; 211 212 CalibDb_BayerNr_2_t stBayernrCalib; 213 CalibDb_MFNR_2_t stMfnrCalib; 214 CalibDb_UVNR_2_t stUvnrCalib; 215 CalibDb_YNR_2_t stYnrCalib; 216 217 ANRGainState_t stGainState; 218 219 float fLuma_TF_Strength; 220 float fLuma_SF_Strength; 221 float fChroma_TF_Strength; 222 float fChroma_SF_Strength; 223 float fRawnr_SF_Strength; 224 225 bool isIQParaUpdate; 226 bool isGrayMode; 227 ANRParamMode_t eParamMode; 228 229 int prepare_type; 230 231 //json 232 CalibDbV2_BayerNrV1_t bayernr_v1; 233 CalibDbV2_MFNR_t mfnr_v1; 234 CalibDbV2_UVNR_t uvnr_v1; 235 CalibDbV2_YnrV1_t ynr_v1; 236 237 CalibDb_MFNR_Motion_t stMotion; 238 } ANRContext_t; 239 240 241 242 243 244 245 RKAIQ_END_DECLARE 246 247 #endif 248 249 250