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_ASHARP_ALGO_INT_H_
21 #define _RK_AIQ_TYPE_ASHARP_ALGO_INT_H_
22 #include "rk_aiq_comm.h"
23 #include "RkAiqCalibDbTypes.h"
24 #include "asharp/rk_aiq_types_asharp_algo.h"
25 #include "sharp_head_v1.h"
26 #include "edgefilter_head_v1.h"
27 
28 RKAIQ_BEGIN_DECLARE
29 
30 #define SHARP_MAX_STRENGTH_PERCENT (100.0)
31 
32 #define MAX_ISO_STEP                CALIBDB_NR_SHARP_MAX_ISO_LEVEL
33 //sharp
34 #define IDX_SIGN                            0
35 #define IDX_INTE                            1
36 #define IDX_DECI                            2
37 #define IDX_NUM                             3
38 
39 #define RK_EDGEFILTER_LUMA_POINT_NUM        8
40 #define RK_SHARPEN_HW_PARAMS_NUM            28
41 #define RK_SHARPFILTER_LUMA_POINT_NUM       8
42 #define RK_SHARPEN_HW_SHARP_PAR_NUM         (23)
43 #define ISP_PP_SHARP_BLK_WIDTH              32
44 #define ISP_PP_SHARP_BLK_HEIGHT             128
45 
46 #define RKSHAPRENHW_GAU_DIAM                            3
47 #define RKSHAPRENHW_PBF_DIAM                            3
48 #define RKSHAPRENHW_MRF_DIAM                            5
49 #define RKSHAPRENHW_MBF_DIAM_X                          17
50 #define RKSHAPRENHW_MBF_DIAM_Y                          13
51 #define RKSHAPRENHW_HRF_DIAM                            5
52 #define RKSHAPRENHW_HBF_DIAM                            3
53 #define RKSHAPRENHW_AVG_DIAM                            3
54 
55 #define RKSHAPRENHW_V2_GAU_DIAM                         3
56 #define RKSHAPRENHW_V2_PBF_DIAM                         3
57 #define RKSHAPRENHW_V2_HRF_DIAM                         5
58 #define RKSHAPRENHW_V2_HBF_DIAM_X                       9
59 #define RKSHAPRENHW_V2_HBF_DIAM_Y                       9
60 #define RKSHAPRENHW_V2_AVG_DIAM                         3
61 
62 #define RKSHAPRENHW_V3_RF_DIAM                          5
63 #define RKSHAPRENHW_V3_AVG_DIAM                         5
64 
65 
66 //edgefilter
67 #define RK_EDGEFILTER_LUMA_POINT_NUM                    8
68 #define RK_EDGEFILTER_PARAMS_NUM                        15//21
69 #define RKEDGEFILTER_LUMA_GAU_DIAM                      3
70 #define RKEDGEFILTER_DIR_SMTH_DIAM                      5
71 #define RKEDGEFILTER_GAUS_DIAM                          5
72 #define RKEDGEFILTER_SHRP_DIAM                          3
73 #define RKEDGEFILTER_DOG_DIAM                           5
74 
75 
76 typedef struct RKAsharp_Sharp_HW_Params_s
77 {
78 #ifndef RK_SIMULATOR_HW
79     float iso[MAX_ISO_STEP];
80 #endif
81     float lratio        [MAX_ISO_STEP];
82     float hratio        [MAX_ISO_STEP];
83     float M_ratio       [MAX_ISO_STEP];
84     float H_ratio       [MAX_ISO_STEP];
85     short luma_point    [RK_SHARPFILTER_LUMA_POINT_NUM];
86     float luma_sigma    [MAX_ISO_STEP][RK_SHARPFILTER_LUMA_POINT_NUM];
87     float pbf_gain      [MAX_ISO_STEP];
88     float pbf_add       [MAX_ISO_STEP];
89     float pbf_ratio     [MAX_ISO_STEP];
90     short lum_clp_m     [MAX_ISO_STEP][RK_SHARPFILTER_LUMA_POINT_NUM];
91     float lum_min_m     [MAX_ISO_STEP][RK_SHARPFILTER_LUMA_POINT_NUM];
92     float mbf_gain      [MAX_ISO_STEP];
93     float mbf_add       [MAX_ISO_STEP];
94     short lum_clp_h     [MAX_ISO_STEP][RK_SHARPFILTER_LUMA_POINT_NUM];
95     float hbf_ratio     [MAX_ISO_STEP];
96     float hbf_gain      [MAX_ISO_STEP];
97     float hbf_add       [MAX_ISO_STEP];
98     short ehf_th        [MAX_ISO_STEP];
99     float pbf_coeff_percent[MAX_ISO_STEP];
100     float rf_m_coeff_percent[MAX_ISO_STEP];
101     float rf_h_coeff_percent[MAX_ISO_STEP];
102     float hbf_coeff_percent[MAX_ISO_STEP];
103 
104 
105     float gaus_luma_kernel  [MAX_ISO_STEP][RKSHAPRENHW_PBF_DIAM * RKSHAPRENHW_PBF_DIAM];
106     float kernel_pbf_l    [MAX_ISO_STEP][RKSHAPRENHW_PBF_DIAM * RKSHAPRENHW_PBF_DIAM];
107     float kernel_pbf_h    [MAX_ISO_STEP][RKSHAPRENHW_PBF_DIAM * RKSHAPRENHW_PBF_DIAM];
108     float h_rf_m_l        [MAX_ISO_STEP][RKSHAPRENHW_MRF_DIAM * RKSHAPRENHW_MRF_DIAM];
109     float h_rf_m_h        [MAX_ISO_STEP][RKSHAPRENHW_MRF_DIAM * RKSHAPRENHW_MRF_DIAM];
110     float kernel_mbf    [MAX_ISO_STEP][RKSHAPRENHW_MBF_DIAM_Y * RKSHAPRENHW_MBF_DIAM_X];
111     float h_rf_h_l        [MAX_ISO_STEP][RKSHAPRENHW_HRF_DIAM * RKSHAPRENHW_HRF_DIAM];
112     float h_rf_h_h        [MAX_ISO_STEP][RKSHAPRENHW_HRF_DIAM * RKSHAPRENHW_HRF_DIAM];
113     float kernel_hbf_l    [MAX_ISO_STEP][RKSHAPRENHW_HBF_DIAM * RKSHAPRENHW_HBF_DIAM];
114     float kernel_hbf_h    [MAX_ISO_STEP][RKSHAPRENHW_HBF_DIAM * RKSHAPRENHW_HBF_DIAM];
115 
116 } RKAsharp_Sharp_HW_Params_t;
117 
118 
119 typedef struct RKAsharp_Sharp_HW_Params_Select_s
120 {
121     float lratio        ;
122     float hratio        ;
123     float M_ratio       ;
124     float H_ratio       ;
125     short luma_point    [RK_SHARPFILTER_LUMA_POINT_NUM];
126     float luma_sigma    [RK_SHARPFILTER_LUMA_POINT_NUM];
127     float pbf_gain      ;
128     float pbf_add       ;
129     float pbf_ratio;
130     short lum_clp_m     [RK_SHARPFILTER_LUMA_POINT_NUM];
131     float lum_min_m     [RK_SHARPFILTER_LUMA_POINT_NUM];
132     float mbf_gain      ;
133     float mbf_add       ;
134     short lum_clp_h     [RK_SHARPFILTER_LUMA_POINT_NUM];
135     float hbf_ratio     ;
136     float hbf_gain      ;
137     float hbf_add       ;
138     short ehf_th        ;
139     float gaus_luma_kernel  [RKSHAPRENHW_GAU_DIAM * RKSHAPRENHW_GAU_DIAM];
140     float kernel_pbf    [RKSHAPRENHW_PBF_DIAM * RKSHAPRENHW_PBF_DIAM];
141     float h_rf_m        [RKSHAPRENHW_MRF_DIAM * RKSHAPRENHW_MRF_DIAM];
142     float kernel_mbf    [RKSHAPRENHW_MBF_DIAM_Y * RKSHAPRENHW_MBF_DIAM_X];
143     float h_rf_h        [RKSHAPRENHW_HRF_DIAM * RKSHAPRENHW_HRF_DIAM];
144     float kernel_hbf    [RKSHAPRENHW_HBF_DIAM * RKSHAPRENHW_HBF_DIAM];
145 
146 
147 
148 } RKAsharp_Sharp_HW_Params_Select_t;
149 
150 typedef struct RKAsharp_Sharp_HW_V2_Params_s
151 {
152     short luma_point        [RK_SHARPFILTER_LUMA_POINT_NUM];
153     short luma_sigma        [MAX_ISO_STEP][RK_SHARPFILTER_LUMA_POINT_NUM];
154     float pbf_gain          [MAX_ISO_STEP];
155     float pbf_add           [MAX_ISO_STEP];
156     float pbf_ratio         [MAX_ISO_STEP];
157     float lratio            [MAX_ISO_STEP];
158     float hratio            [MAX_ISO_STEP];
159     float sharp_ratio       [MAX_ISO_STEP];
160     short lum_clip_h        [MAX_ISO_STEP][RK_SHARPFILTER_LUMA_POINT_NUM];
161     float hbf_gain          [MAX_ISO_STEP];
162     float hbf_add           [MAX_ISO_STEP];
163     float hbf_ratio         [MAX_ISO_STEP];
164     short ehf_th            [MAX_ISO_STEP];
165 
166     short gaus_luma_kernel      [MAX_ISO_STEP][RKSHAPRENHW_V2_PBF_DIAM * RKSHAPRENHW_V2_PBF_DIAM];
167     short kernel_pre_bf         [MAX_ISO_STEP][RKSHAPRENHW_V2_PBF_DIAM * RKSHAPRENHW_V2_PBF_DIAM];
168     short kernel_range_filter   [MAX_ISO_STEP][RKSHAPRENHW_V2_HRF_DIAM * RKSHAPRENHW_V2_HRF_DIAM];
169     short kernel_hf_bf          [MAX_ISO_STEP][RKSHAPRENHW_V2_HBF_DIAM_Y * RKSHAPRENHW_V2_HBF_DIAM_X];
170 
171 } RKAsharp_Sharp_HW_V2_Params_t;
172 
173 typedef struct RKAsharp_Sharp_HW_V2_Params_Select_s
174 {
175     short luma_point    [RK_SHARPFILTER_LUMA_POINT_NUM];
176     short luma_sigma    [RK_SHARPFILTER_LUMA_POINT_NUM];
177     float pbf_gain      ;
178     float pbf_add       ;
179     float pbf_ratio     ;
180     float lratio        ;
181     float hratio        ;
182     float sharp_ratio   ;
183     short lum_clip_h    [RK_SHARPFILTER_LUMA_POINT_NUM];
184     float hbf_gain      ;
185     float hbf_add       ;
186     float hbf_ratio     ;
187     short ehf_th        ;
188 
189     short gaus_luma_kernel      [RKSHAPRENHW_V2_PBF_DIAM * RKSHAPRENHW_V2_PBF_DIAM];
190     short kernel_pre_bf         [RKSHAPRENHW_V2_PBF_DIAM * RKSHAPRENHW_V2_PBF_DIAM];
191     short kernel_range_filter   [RKSHAPRENHW_V2_HRF_DIAM * RKSHAPRENHW_V2_HRF_DIAM];
192     short kernel_hf_bf          [RKSHAPRENHW_V2_HBF_DIAM_Y * RKSHAPRENHW_V2_HBF_DIAM_X];
193 
194 } RKAsharp_Sharp_HW_V2_Params_Select_t;
195 
196 typedef struct RKAsharp_Sharp_HW_V3_Params_s
197 {
198     short luma_point        [RK_SHARPFILTER_LUMA_POINT_NUM];
199     float lratio            [MAX_ISO_STEP];
200     float hratio            [MAX_ISO_STEP];
201     float sharp_ratio       [MAX_ISO_STEP];
202     short lum_clip_h        [MAX_ISO_STEP][RK_SHARPFILTER_LUMA_POINT_NUM];
203     short ehf_th            [MAX_ISO_STEP];
204 
205     short kernel_range_filter   [MAX_ISO_STEP][RKSHAPRENHW_V3_RF_DIAM * RKSHAPRENHW_V3_RF_DIAM];
206 } RKAsharp_Sharp_HW_V3_Params_t;
207 
208 typedef struct RKAsharp_Sharp_HW_V3_Params_Select_s
209 {
210     short luma_point    [RK_SHARPFILTER_LUMA_POINT_NUM];
211     float lratio        ;
212     float hratio        ;
213     float sharp_ratio   ;
214     short lum_clip_h    [RK_SHARPFILTER_LUMA_POINT_NUM];
215     short ehf_th        ;
216 
217     short kernel_range_filter   [RKSHAPRENHW_V3_RF_DIAM * RKSHAPRENHW_V3_RF_DIAM];
218 } RKAsharp_Sharp_HW_V3_Params_Select_t;
219 
220 
221 typedef struct RKAsharp_Sharp_Params_s
222 {
223     RKAsharp_Sharp_HW_Params_t          rk_sharpen_params_V1;
224     RKAsharp_Sharp_HW_V2_Params_t       rk_sharpen_params_V2;
225     RKAsharp_Sharp_HW_V3_Params_t       rk_sharpen_params_V3;
226 
227 } RKAsharp_Sharp_Params_t;
228 
229 typedef struct RKAsharp_Sharp_Params_Select_s
230 {
231     RKAsharp_Sharp_HW_Params_Select_t           rk_sharpen_params_selected_V1;
232     RKAsharp_Sharp_HW_V2_Params_Select_t        rk_sharpen_params_selected_V2;
233     RKAsharp_Sharp_HW_V3_Params_Select_t        rk_sharpen_params_selected_V3;
234 
235 } RKAsharp_Sharp_Params_Select_t;
236 
237 
238 typedef struct RKAsharp_EdgeFilter_Params_s
239 {
240 #ifndef RK_SIMULATOR_HW
241     float iso[MAX_ISO_STEP];
242 #endif
243 
244     short edge_thed             [MAX_ISO_STEP];
245     float dir_min               [MAX_ISO_STEP];
246     float smoth4                [MAX_ISO_STEP];
247     short alpha_adp_en          [MAX_ISO_STEP];
248     float l_alpha               [MAX_ISO_STEP];
249     float g_alpha               [MAX_ISO_STEP];
250     short enhance_luma_point    [RK_EDGEFILTER_LUMA_POINT_NUM];
251     short edge_thed_1           [MAX_ISO_STEP][RK_EDGEFILTER_LUMA_POINT_NUM];
252     float clamp_pos_gaus        [MAX_ISO_STEP][RK_EDGEFILTER_LUMA_POINT_NUM];
253     float clamp_neg_gaus        [MAX_ISO_STEP][RK_EDGEFILTER_LUMA_POINT_NUM];
254     short clamp_pos_dog         [MAX_ISO_STEP][RK_EDGEFILTER_LUMA_POINT_NUM];
255     short clamp_neg_dog         [MAX_ISO_STEP][RK_EDGEFILTER_LUMA_POINT_NUM];
256     float detail_alpha_gaus     [MAX_ISO_STEP][RK_EDGEFILTER_LUMA_POINT_NUM];
257     float detail_alpha_dog      [MAX_ISO_STEP][RK_EDGEFILTER_LUMA_POINT_NUM];
258 
259     float gaus_luma_kernel      [MAX_ISO_STEP][RKEDGEFILTER_LUMA_GAU_DIAM * RKEDGEFILTER_LUMA_GAU_DIAM];
260     float h0_h_coef_5x5         [MAX_ISO_STEP][RKEDGEFILTER_DIR_SMTH_DIAM   * RKEDGEFILTER_DIR_SMTH_DIAM];
261     float h1_v_coef_5x5         [MAX_ISO_STEP][RKEDGEFILTER_DIR_SMTH_DIAM   * RKEDGEFILTER_DIR_SMTH_DIAM];
262     float h2_m_coef_5x5         [MAX_ISO_STEP][RKEDGEFILTER_DIR_SMTH_DIAM   * RKEDGEFILTER_DIR_SMTH_DIAM];
263     float h3_p_coef_5x5         [MAX_ISO_STEP][RKEDGEFILTER_DIR_SMTH_DIAM   * RKEDGEFILTER_DIR_SMTH_DIAM];
264     float h_coef_5x5            [MAX_ISO_STEP][RKEDGEFILTER_GAUS_DIAM       * RKEDGEFILTER_GAUS_DIAM];
265     float gf_coef_3x3           [MAX_ISO_STEP][RKEDGEFILTER_SHRP_DIAM       * RKEDGEFILTER_SHRP_DIAM];
266     float dog_kernel_l            [MAX_ISO_STEP][RKEDGEFILTER_DOG_DIAM        * RKEDGEFILTER_DOG_DIAM];
267     float dog_kernel_h            [MAX_ISO_STEP][RKEDGEFILTER_DOG_DIAM        * RKEDGEFILTER_DOG_DIAM];
268     float dog_kernel_percent      [MAX_ISO_STEP];
269 } RKAsharp_EdgeFilter_Params_t;
270 
271 typedef struct RKAsharp_EdgeFilter_Params_Select_s
272 {
273 
274     short edge_thed;
275     float dir_min;
276     float smoth4;
277     short alpha_adp_en;
278     float l_alpha;
279     float g_alpha;
280     short enhance_luma_point    [RK_EDGEFILTER_LUMA_POINT_NUM];
281     short edge_thed_1           [RK_EDGEFILTER_LUMA_POINT_NUM];
282     float clamp_pos_gaus        [RK_EDGEFILTER_LUMA_POINT_NUM];
283     float clamp_neg_gaus        [RK_EDGEFILTER_LUMA_POINT_NUM];
284     short clamp_pos_dog         [RK_EDGEFILTER_LUMA_POINT_NUM];
285     short clamp_neg_dog         [RK_EDGEFILTER_LUMA_POINT_NUM];
286     float detail_alpha_gaus     [RK_EDGEFILTER_LUMA_POINT_NUM];
287     float detail_alpha_dog      [RK_EDGEFILTER_LUMA_POINT_NUM];
288 
289     float gaus_luma_kernel      [RKEDGEFILTER_LUMA_GAU_DIAM     * RKEDGEFILTER_LUMA_GAU_DIAM];
290     float h0_h_coef_5x5         [RKEDGEFILTER_DIR_SMTH_DIAM     * RKEDGEFILTER_DIR_SMTH_DIAM];
291     float h1_v_coef_5x5         [RKEDGEFILTER_DIR_SMTH_DIAM     * RKEDGEFILTER_DIR_SMTH_DIAM];
292     float h2_m_coef_5x5         [RKEDGEFILTER_DIR_SMTH_DIAM     * RKEDGEFILTER_DIR_SMTH_DIAM];
293     float h3_p_coef_5x5         [RKEDGEFILTER_DIR_SMTH_DIAM     * RKEDGEFILTER_DIR_SMTH_DIAM];
294     float h_coef_5x5            [RKEDGEFILTER_GAUS_DIAM         * RKEDGEFILTER_GAUS_DIAM];
295     float gf_coef_3x3           [RKEDGEFILTER_SHRP_DIAM         * RKEDGEFILTER_SHRP_DIAM];
296     float dog_kernel            [RKEDGEFILTER_DOG_DIAM          * RKEDGEFILTER_DOG_DIAM];
297 
298 } RKAsharp_EdgeFilter_Params_Select_t;
299 
300 typedef enum AsharpResult_e {
301     ASHARP_RET_SUCCESS              = 0,   // this has to be 0, if clauses rely on it
302     ASHARP_RET_FAILURE              = 1,   // process failure
303     ASHARP_RET_INVALID_PARM     = 2,   // invalid parameter
304     ASHARP_RET_WRONG_CONFIG     = 3,   // feature not supported
305     ASHARP_RET_BUSY             = 4,   // there's already something going on...
306     ASHARP_RET_CANCELED         = 5,   // operation canceled
307     ASHARP_RET_OUTOFMEM         = 6,   // out of memory
308     ASHARP_RET_OUTOFRANGE           = 7,   // parameter/value out of range
309     ASHARP_RET_NULL_POINTER     = 8,   // the/one/all parameter(s) is a(are) NULL pointer(s)
310     ASHARP_RET_DIVISION_BY_ZERO = 9,   // a divisor equals ZERO
311     ASHARP_RET_NO_INPUTIMAGE        = 10   // no input image
312 } AsharpResult_t;
313 
314 typedef enum AsharpState_e {
315     ASHARP_STATE_INVALID           = 0,                   /**< initialization value */
316     ASHARP_STATE_INITIALIZED       = 1,                   /**< instance is created, but not initialized */
317     ASHARP_STATE_STOPPED           = 2,                   /**< instance is confiured (ready to start) or stopped */
318     ASHARP_STATE_RUNNING           = 3,                   /**< instance is running (processes frames) */
319     ASHARP_STATE_LOCKED            = 4,                   /**< instance is locked (for taking snapshots) */
320     ASHARP_STATE_MAX                                      /**< max */
321 } AsharpState_t;
322 
323 typedef enum AsharpOPMode_e {
324     ASHARP_OP_MODE_INVALID           = 0,                   /**< initialization value */
325     ASHARP_OP_MODE_AUTO               = 1,                   /**< instance is created, but not initialized */
326     ASHARP_OP_MODE_MANUAL             = 2,                   /**< instance is confiured (ready to start) or stopped */
327     ASHARP_OP_MODE_MAX                                      /**< max */
328 } AsharpOPMode_t;
329 
330 typedef enum AsharpParamMode_e {
331     ASHARP_PARAM_MODE_INVALID           = 0,                   /**< initialization value */
332     ASHARP_PARAM_MODE_NORMAL               = 1,                   /**< instance is created, but not initialized */
333     ASHARP_PARAM_MODE_HDR             = 2,                   /**< instance is confiured (ready to start) or stopped */
334     ASHARP_PARAM_MODE_GRAY            =3,                          /**< max */
335     ASHARP_PARAM_MODE_MAX
336 } AsharpParamMode_t;
337 
338 
339 
340 typedef struct Asharp_Manual_Attr_s
341 {
342     int sharpEn;
343     RKAsharp_Sharp_Params_Select_t stSharpParamSelect;
344 
345     int edgeFltEn;
346     RKAsharp_EdgeFilter_Params_Select_t stEdgefilterParamSelect;
347 
348 } Asharp_Manual_Attr_t;
349 
350 typedef struct Asharp_Auto_Attr_s
351 {
352     //all ISO params and select param
353     //sharp
354     int sharpEn;
355     RKAsharp_Sharp_Params_t stSharpParam;
356     RKAsharp_Sharp_Params_Select_t stSharpParamSelect;
357 
358     //edgefilter
359     int edgeFltEn;
360     RKAsharp_EdgeFilter_Params_t stEdgefilterParams;
361     RKAsharp_EdgeFilter_Params_Select_t stEdgefilterParamSelect;
362 } Asharp_Auto_Attr_t;
363 
364 typedef struct AsharpProcResult_s {
365     int sharpEn;
366     int edgeFltEn;
367 
368     //for sw simulator
369     RKAsharp_Sharp_Params_Select_t stSharpParamSelect;
370     RKAsharp_EdgeFilter_Params_Select_t stEdgefilterParamSelect;
371 
372     //for fgpa
373     RKAsharp_Sharp_Fix_t stSharpFix;
374     RKAsharp_Edgefilter_Fix_t stEdgefltFix;
375 
376 } AsharpProcResult_t;
377 
378 typedef struct AsharpConfig_s {
379 
380     AsharpState_t eState;
381     AsharpOPMode_t eMode;
382 
383 } AsharpConfig_t;
384 
385 typedef struct rk_aiq_sharp_attrib_s {
386     AsharpOPMode_t eMode;
387     Asharp_Auto_Attr_t stAuto;
388     Asharp_Manual_Attr_t stManual;
389 } rk_aiq_sharp_attrib_t;
390 
391 typedef struct AsharpExpInfo_s {
392     int hdr_mode;
393     float arTime[3];
394     float arAGain[3];
395     float arDGain[3];
396     int   arIso[3];
397     int   arDcgMode[3];
398     int   cur_snr_mode;
399 	int   snr_mode;
400 
401 	float preTime[3];
402 	float preAGain[3];
403 	float preDGain[3];
404 	int preIso[3];
405 	int preDcgMode[3];
406     int pre_snr_mode;
407 
408 	int mfnr_mode_3to1;
409 } AsharpExpInfo_t;
410 
411 typedef enum rk_aiq_sharp_module_e{
412     ASHARP_MODULE_SHARP     	= 0,          /**< instance is created, but not initialized */
413     ASHARP_MODULE_EDGEFILTER    = 1,          /**< instance is confiured (ready to start) or stopped */
414 } rk_aiq_sharp_module_t;
415 
416 
417 typedef struct rk_aiq_sharp_IQpara_s{
418 	int module_bits;
419 
420 	CalibDb_Sharp_t stSharpPara;
421     CalibDb_EdgeFilter_t stEdgeFltPara;
422 }rk_aiq_sharp_IQpara_t;
423 
424 
425 typedef struct rk_aiq_sharp_JsonPara_s{
426 	int module_bits;
427 
428 	CalibDbV2_SharpV1_t sharp_v1;
429     CalibDbV2_Edgefilter_t edgefilter_v1;
430 }rk_aiq_sharp_JsonPara_t;
431 
432 
433 RKAIQ_END_DECLARE
434 
435 #endif
436 
437 
438