xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/algos/anr/rk_aiq_types_anr_algo_prvt.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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