xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/algos/amfnr/rk_aiq_types_amfnr_algo_prvt_v1.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_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