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_AMFNR_ALGO_PRVT_V1_H_ 21 #define _RK_AIQ_TYPES_AMFNR_ALGO_PRVT_V1_H_ 22 23 #include "amfnr/rk_aiq_types_amfnr_algo_int_v1.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 MFNR_MAX_WEIGHT_LIMIT_UV (255) 34 /************mfnr fix***************/ 35 #define MFNR_MATALAB_FLG 0 36 #define FIX_VAL (1 && !MFNR_MATALAB_FLG)// 1 for rtl_3dnr, 0 for matlab_3dnr 37 #define ACCURATE_LOW 0 38 #define F_ACCURATE_FLG_SCALE_L ACCURATE_LOW 39 #if FIX_VAL 40 #define FIX_ENABLE_GAIN_IN FIX_ENABLE 41 #define FIX_ENABLE_DELTA_SCALE FIX_ENABLE 42 #define FIX_ENABLE_DELTA_CALC FIX_ENABLE 43 #define FIX_ENABLE_DELTA_TO_DELTA_SQR FIX_ENABLE 44 #define FIX_ENABLE_DELTA_CONV FIX_ENABLE 45 #define FIX_ENABLE_PK_CALC FIX_ENABLE 46 #define F_ACCURATE_FLG_SCALE_L ACCURATE_LOW 47 #define F_ACCURATE_FLG_DELTA_SCALE_L ACCURATE_LOW 48 #define F_ACCURATE_FLG_LUMA_W_IN_CHROMA ACCURATE_LOW 49 #define F_ACCURATE_FLG_CONV_WEIGHT ACCURATE_LOW 50 #define F_ACCURATE_FLG_CONV_OUT ACCURATE_LOW 51 #define F_ACCURATE_FLG_CONV1_OUT ACCURATE_LOW 52 #define F_ACCURATE_FLG_SIGMA ACCURATE_LOW 53 #define F_ACCURATE_FLG_FRQ_DELTA ACCURATE_LOW 54 #define F_ACCURATE_FLG_TXT_THRD_RATIO ACCURATE_LOW 55 #define F_ACCURATE_FLG_TXT_THRD ACCURATE_LOW 56 #define F_ACCURATE_FLG_TXT_RATIO ACCURATE_LOW 57 #define F_ACCURATE_FLG_DELTA ACCURATE_LOW 58 #define F_ACCURATE_FLG_EXP_VAL ACCURATE_LOW 59 #define F_ACCURATE_FLG_PK_MID ACCURATE_LOW 60 #define F_ACCURATE_FLG_EXP_SIGMA ACCURATE_LOW 61 #define F_ACCURATE_FLG_EXP_SIGMA_RATIO ACCURATE_LOW 62 #define F_ACCURATE_FLG_GAIN ACCURATE_LOW 63 #define F_ACCURATE_FLG_PIXEL_RECON ACCURATE_LOW 64 #define F_ACCURATE_FLG_PIXEL_ORI ACCURATE_LOW 65 #else 66 #define FIX_ENABLE_GAIN_IN FIX_DISABLE 67 #define FIX_ENABLE_DELTA_SCALE FIX_DISABLE 68 #define FIX_ENABLE_DELTA_CALC FIX_DISABLE 69 #define FIX_ENABLE_DELTA_TO_DELTA_SQR FIX_DISABLE 70 #define FIX_ENABLE_DELTA_CONV FIX_DISABLE 71 #define FIX_ENABLE_PK_CALC FIX_DISABLE 72 #define F_ACCURATE_FLG_SCALE_L ACCURATE_HIGH 73 #define F_ACCURATE_FLG_DELTA_SCALE_L ACCURATE_HIGH 74 #define F_ACCURATE_FLG_LUMA_W_IN_CHROMA ACCURATE_HIGH 75 #define F_ACCURATE_FLG_CONV_WEIGHT ACCURATE_HIGH 76 #define F_ACCURATE_FLG_CONV_OUT ACCURATE_HIGH 77 #define F_ACCURATE_FLG_CONV1_OUT ACCURATE_HIGH 78 #define F_ACCURATE_FLG_SIGMA ACCURATE_HIGH 79 #define F_ACCURATE_FLG_FRQ_DELTA ACCURATE_HIGH 80 #define F_ACCURATE_FLG_TXT_THRD_RATIO ACCURATE_HIGH 81 #define F_ACCURATE_FLG_TXT_THRD ACCURATE_HIGH 82 #define F_ACCURATE_FLG_TXT_RATIO ACCURATE_HIGH 83 #define F_ACCURATE_FLG_DELTA ACCURATE_HIGH 84 #define F_ACCURATE_FLG_EXP_VAL ACCURATE_HIGH 85 #define F_ACCURATE_FLG_PK_MID ACCURATE_HIGH 86 #define F_ACCURATE_FLG_EXP_SIGMA ACCURATE_HIGH 87 #define F_ACCURATE_FLG_EXP_SIGMA_RATIO ACCURATE_HIGH 88 #define F_ACCURATE_FLG_GAIN ACCURATE_HIGH 89 #define F_ACCURATE_FLG_PIXEL_RECON ACCURATE_HIGH 90 #define F_ACCURATE_FLG_PIXEL_ORI ACCURATE_HIGH 91 #endif 92 93 94 #define F_DECI_CONV_WEIGHT_ACCURATE 13 95 #define F_DECI_CONV_WEIGHT_REAL 8 96 #define F_DECI_CONV_WEIGHT (F_ACCURATE_FLG_CONV_WEIGHT ? F_DECI_CONV_WEIGHT_ACCURATE : F_DECI_CONV_WEIGHT_REAL) 97 #define F_DECI_PIXEL_SIGMA_CONV_WEIGHT F_DECI_CONV_WEIGHT 98 #define F_DECI_GAIN_ACCURATE (16) 99 #define F_DECI_GAIN_REAL 8 //(MAX(F_DECI_GAIN_IN*2, 8)) 100 #define F_DECI_GAIN (F_ACCURATE_FLG_GAIN ? (F_DECI_GAIN_ACCURATE) : (F_DECI_GAIN_REAL)) 101 #define F_DECI_GAIN_SQRT 4// 8 for rtl_sqrt(F_DECI_GAIN / 2) 102 #define F_DECI_GAIN_GLB_SQRT F_DECI_GAIN_SQRT 103 #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 104 #define F_DECI_LUMASCALE 6 //8 for rtl_3dnr 105 #define F_DECI_SCALE_L_ACCURATE 18 106 #define F_DECI_SCALE_L_REAL 8 107 #define F_DECI_SCALE_L (F_ACCURATE_FLG_SCALE_L ? F_DECI_SCALE_L_ACCURATE : F_DECI_SCALE_L_REAL) 108 #define F_DECI_SCALE_L_UV_ACCURATE 18 109 #define F_DECI_SCALE_L_UV_REAL 6 110 #define F_DECI_SCALE_L_UV (F_ACCURATE_FLG_SCALE_L ? F_DECI_SCALE_L_UV_ACCURATE : F_DECI_SCALE_L_UV_REAL) 111 #define F_DECI_LUMA_W_IN_CHROMA_ACCURATE 16 112 #define F_DECI_LUMA_W_IN_CHROMA_REAL 5 113 #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) 114 #define F_DECI_SIGMA_ACCURATE (24) 115 #define F_DECI_SIGMA_REAL (6 ) 116 #define F_DECI_SIGMA (F_ACCURATE_FLG_SIGMA ? F_DECI_SIGMA_ACCURATE : F_DECI_SIGMA_REAL) 117 #define F_DECI_TXT_THRD_RATIO_ACCURATE (16) 118 #define F_DECI_TXT_THRD_RATIO_REAL (6) //(8) 119 #define F_DECI_TXT_THRD_RATIO (F_ACCURATE_FLG_TXT_THRD_RATIO ? F_DECI_TXT_THRD_RATIO_ACCURATE : F_DECI_TXT_THRD_RATIO_REAL) 120 #define F_INTE_GAIN_GLB_SQRT_INV 0 121 #define F_DECI_GAIN_GLB_SQRT_INV 13 122 #define GAIN_SIGMA_BITS_ACT 10 123 #define MAX_INTEPORATATION_LUMAPOINT 17 124 #define GAIN_HDR_MERGE_IN_FIX_BITS_DECI 6 125 #define GAIN_HDR_MERGE_IN2_FIX_BITS_INTE 12 126 #define GAIN_HDR_MERGE_IN0_FIX_BITS_INTE 8 127 128 129 130 typedef struct Amfnr_GainState_s { 131 int gain_stat_full_last; 132 int gainState; 133 int gainState_last; 134 float gain_th0[2]; 135 float gain_th1[2]; 136 float gain_cur; 137 float ratio; 138 } Amfnr_GainState_t; 139 140 141 //anr context 142 typedef struct Amfnr_Context_V1_s { 143 Amfnr_ExpInfo_V1_t stExpInfo; 144 Amfnr_State_V1_t eState; 145 Amfnr_OPMode_V1_t eMode; 146 147 Amfnr_Auto_Attr_V1_t stAuto; 148 Amfnr_Manual_Attr_V1_t stManual; 149 150 float fLuma_TF_Strength; 151 float fChroma_TF_Strength; 152 153 int refYuvBit; 154 bool isIQParaUpdate; 155 bool isGrayMode; 156 Amfnr_ParamMode_V1_t eParamMode; 157 int prepare_type; 158 159 CalibDb_MFNR_2_t stMfnrCalib; 160 CalibDbV2_MFNR_t mfnr_v1; 161 162 int mfnr_mode_3to1; 163 Amfnr_GainState_t stGainState; 164 165 CalibDb_MFNR_Motion_t stMotion; 166 } Amfnr_Context_V1_t; 167 168 169 170 171 172 173 RKAIQ_END_DECLARE 174 175 #endif 176 177 178