xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/algos/anr/rk_aiq_types_anr_algo_int.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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_ANR_ALGO_INT_H_
21 #define _RK_AIQ_TYPE_ANR_ALGO_INT_H_
22 
23 #include <math.h>
24 #include <string.h>
25 #include <stdlib.h>
26 #include "rk_aiq_comm.h"
27 #include "RkAiqCalibDbTypes.h"
28 #include "anr/rk_aiq_types_anr_algo.h"
29 #include "bayernr_head_v1.h"
30 #include "mfnr_head_v1.h"
31 #include "ynr_head_v1.h"
32 #include "uvnr_head_v1.h"
33 
34 RKAIQ_BEGIN_DECLARE
35 
36 
37 #define MAX_ISO_STEP CALIBDB_NR_SHARP_MAX_ISO_LEVEL
38 #define MFNR_MAX_WEIGHT_LIMIT_UV (255)
39 
40 
41 /************mfnr***************/
42 #define WAVELET_LEVEL_NUM               4
43 #define MAX_INTEPORATATION_LUMAPOINT    17
44 #define POLT_ORDER                  4
45 #define MAX_BACK_REF_NUM            1
46 #define LIMIT_RANGE_LEFT_BIT8       16
47 #define LIMIT_RANGE_RIGHT_BIT8      236
48 #define Y_CALIBRATION_BITS          12
49 #define Y_SIGMA_TABLE_BITS          8
50 #define Y_SIGMA_TABLE_BITS_DEHAZE   8
51 #define MFNR_POLYORDER              POLT_ORDER
52 #define MFNR_MAX_GAUS_SIZE          10
53 #define MFNR_DIR_NUM                2
54 #define DIR_LO                      0
55 #define DIR_HI                      1
56 #define MFNR_MAX_LVL_UV             3
57 #define MFNR_MAX_LVL                4
58 #define MFNR_MAX_LVL_DEPTH          ((MFNR_MAX_LVL_UV + 1 > MFNR_MAX_LVL) ? (MFNR_MAX_LVL_UV + 1) : MFNR_MAX_LVL)
59 #define MFNR_DELTA_SQR_EXP_POINT    17
60 #define LUMANRCURVE_STEP            6
61 #define MFNR_TILE_W                 16
62 #define MFNR_TILE_H                 128
63 #define MFNR_F_INTE_SIGMA           6
64 
65 
66 
67 /************ynr***************/
68 #define ISO_CURVE_POINT_BIT             4
69 #define ISO_CURVE_POINT_NUM             ((1 << ISO_CURVE_POINT_BIT)+1)
70 #define RKAIQ_YNR_SIGMA_BITS            10
71 #define WAVELET_LEVEL_NUM               4
72 #define GAIN_ENABLE_FLG                 1
73 #define GAIN_YNR_ENABLE_FLG             (GAIN_ENABLE_FLG & 1)
74 #define GAIN_YNR_FIX_BITS_DECI          4
75 #define GAIN_YUVNR_SOURCE_FLG           0
76 
77 
78 
79 typedef struct RKAnr_Bayernr_Params_s
80 {
81 #ifndef RK_SIMULATOR_HW
82     float iso[MAX_ISO_STEP];
83 #endif
84 
85     float a[MAX_ISO_STEP];
86     float b[MAX_ISO_STEP];
87 
88     int halfpatch;
89     int halfblock;
90     float filtpar[MAX_ISO_STEP];
91     float ctrPit[7];
92 
93     float luLevel[8];
94     float luRatio[MAX_ISO_STEP][8];
95 
96     float w[MAX_ISO_STEP][4];
97 
98     int peaknoisesigma;
99     int sw_rawnr_gauss_en;
100 
101     int rgain_offs;
102     int rgain_filp;
103     int bgain_offs;
104     int bgain_filp;
105 
106     char bayernr_ver_char[64];
107 
108     float bayernr_edgesoftness;
109     float bayernr_gauss_weight0;
110     float bayernr_gauss_weight1;
111 
112     int sw_bayernr_edge_filter_en;
113     float sw_bayernr_edge_filter_lumapoint[8];
114     float sw_bayernr_edge_filter_wgt[MAX_ISO_STEP][8];
115     float sw_bayernr_filter_strength[MAX_ISO_STEP];
116     int   sw_bayernr_filter_lumapoint[16];
117     int   sw_bayernr_filter_sigma[MAX_ISO_STEP][16];
118     float sw_bayernr_filter_edgesofts[MAX_ISO_STEP];
119     float sw_bayernr_filter_soft_threshold_ratio[MAX_ISO_STEP];
120     float sw_bayernr_filter_out_wgt[MAX_ISO_STEP];
121 } RKAnr_Bayernr_Params_t;
122 
123 
124 
125 typedef struct RKAnr_Bayernr_Params_Select_s
126 {
127     float a[3];
128     float b[3];
129     float t0[3];
130     int halfPatch;
131     int halfBlock;
132     float filtPar[3];
133     float ctrPit[7];
134 
135     float luLevel[8];
136     float luRatio[8];
137 
138     float w[4];
139     int peaknoisesigma;
140     int sw_rawnr_gauss_en;
141 
142     int rgain_offs;
143     int rgain_filp;
144     int bgain_offs;
145     int bgain_filp;
146 
147     char bayernr_ver_char[64];
148 
149     float bayernr_edgesoftness;
150     float bayernr_gauss_weight0;
151     float bayernr_gauss_weight1;
152 
153     int sw_bayernr_edge_filter_en;
154     float sw_bayernr_edge_filter_lumapoint[8];
155     float sw_bayernr_edge_filter_wgt[8];
156     float sw_bayernr_filter_strength;
157     int   sw_bayernr_filter_lumapoint[16];
158     int   sw_bayernr_filter_sigma[16];
159     float sw_bayernr_filter_edgesofts;
160     float sw_bayernr_filter_soft_threshold_ratio;
161     float sw_bayernr_filter_out_wgt;
162 
163     float sw_dgain[3];
164 
165     int gausskparsq;
166     int sigmaPar;
167     int thld_diff;
168     int thld_chanelw;
169     int pix_diff;
170     int log_bypass;
171 } RKAnr_Bayernr_Params_Select_t;
172 
173 
174 typedef struct RKAnr_Mfnr_Params_s
175 {
176 #ifndef RK_SIMULATOR_HW
177     float iso[MAX_ISO_STEP];
178 #endif
179 
180     int back_ref_num;
181 
182     int weight_limit_y  [MAX_ISO_STEP][MFNR_MAX_LVL_DEPTH];
183     int weight_limit_uv [MAX_ISO_STEP][MFNR_MAX_LVL_UV];
184     double ratio_frq        [MAX_ISO_STEP][4];
185     double luma_w_in_chroma[MAX_ISO_STEP][MFNR_MAX_LVL_UV];
186     double awb_uv_ratio [4][2];
187     double curve        [MAX_ISO_STEP][MFNR_POLYORDER + 1];
188     double curve_x0     [MAX_ISO_STEP];
189 
190     double ci           [MAX_ISO_STEP][MFNR_DIR_NUM][MFNR_MAX_LVL_DEPTH];
191     double dnweight     [MAX_ISO_STEP][MFNR_DIR_NUM][MFNR_MAX_LVL_DEPTH];
192     double scale            [MAX_ISO_STEP][MFNR_DIR_NUM][MFNR_MAX_LVL_DEPTH];
193     double lumanrpoint  [MAX_ISO_STEP][MFNR_DIR_NUM][LUMANRCURVE_STEP];
194     double lumanrcurve  [MAX_ISO_STEP][MFNR_DIR_NUM][LUMANRCURVE_STEP];
195     double dnstr            [MAX_ISO_STEP][MFNR_DIR_NUM];
196     double gfdelta      [MAX_ISO_STEP][MFNR_DIR_NUM][MFNR_MAX_LVL_DEPTH][MFNR_MAX_GAUS_SIZE];
197 
198     double ci_uv            [MAX_ISO_STEP][MFNR_DIR_NUM][MFNR_MAX_LVL_UV];
199     double dnweight_uv  [MAX_ISO_STEP][MFNR_DIR_NUM][MFNR_MAX_LVL_UV];
200     double scale_uv     [MAX_ISO_STEP][MFNR_DIR_NUM][MFNR_MAX_LVL_UV];
201     double lumanrpoint_uv[MAX_ISO_STEP][MFNR_DIR_NUM][LUMANRCURVE_STEP];
202     double lumanrcurve_uv[MAX_ISO_STEP][MFNR_DIR_NUM][LUMANRCURVE_STEP];
203     double dnstr_uv     [MAX_ISO_STEP][MFNR_DIR_NUM];
204     double gfdelta_uv   [MAX_ISO_STEP][MFNR_DIR_NUM][MFNR_MAX_LVL_UV][MFNR_MAX_GAUS_SIZE];
205 
206     double gfsigma      [MAX_ISO_STEP][MFNR_MAX_LVL][MFNR_MAX_GAUS_SIZE];
207 
208     double noise_sigma  [MAX_ISO_STEP][1 << Y_CALIBRATION_BITS];
209     float mfnr_sigma_scale[MAX_ISO_STEP];
210 	int motion_detection_enable;
211     char mfnr_ver_char;
212 } RKAnr_Mfnr_Params_t;
213 
214 typedef struct RKAnr_Mfnr_Params_Select_s
215 {
216     int back_ref_num;
217 
218     int weight_limit_y[MFNR_MAX_LVL_DEPTH];
219     int weight_limit_uv[MFNR_MAX_LVL_UV];
220     double ratio_frq[4];
221     double luma_w_in_chroma[MFNR_MAX_LVL_UV];
222     double awb_uv_ratio[2];
223 
224     double ci                   [MFNR_DIR_NUM][MFNR_MAX_LVL_DEPTH];
225     double dnweight             [MFNR_DIR_NUM][MFNR_MAX_LVL_DEPTH];
226     double scale                    [MFNR_DIR_NUM][MFNR_MAX_LVL_DEPTH];
227     double lumanrpoint          [MFNR_DIR_NUM][LUMANRCURVE_STEP];
228     double lumanrcurve          [MFNR_DIR_NUM][LUMANRCURVE_STEP];
229     double dnstr                    [MFNR_DIR_NUM];
230     double gfdelta              [MFNR_DIR_NUM][MFNR_MAX_LVL_DEPTH][MFNR_MAX_GAUS_SIZE];
231 
232     double ci_uv                    [MFNR_DIR_NUM][MFNR_MAX_LVL_UV];
233     double dnweight_uv          [MFNR_DIR_NUM][MFNR_MAX_LVL_UV];
234     double scale_uv             [MFNR_DIR_NUM][MFNR_MAX_LVL_UV];
235     double lumanrpoint_uv       [MFNR_DIR_NUM][LUMANRCURVE_STEP];
236     double lumanrcurve_uv       [MFNR_DIR_NUM][LUMANRCURVE_STEP];
237     double dnstr_uv             [MFNR_DIR_NUM];
238     double gfdelta_uv           [MFNR_DIR_NUM][MFNR_MAX_LVL_UV][MFNR_MAX_GAUS_SIZE];
239 
240     double gfsigma              [MFNR_MAX_LVL][MFNR_MAX_GAUS_SIZE];
241 
242     double noise_sigma          [1 << Y_CALIBRATION_BITS];
243     double noise_sigma_sample   [MAX_INTEPORATATION_LUMAPOINT];
244     double noise_sigma_dehaze   [MAX_INTEPORATATION_LUMAPOINT];
245     unsigned short  fix_x_pos           [MAX_INTEPORATATION_LUMAPOINT];
246     unsigned short  fix_x_pos_dehaze    [MAX_INTEPORATATION_LUMAPOINT];
247 
248     float mfnr_sigma_scale;
249 
250 
251 } RKAnr_Mfnr_Params_Select_t;
252 
253 typedef struct RKAnr_Uvnr_Params_s
254 {
255 #ifndef RK_SIMULATOR_HW
256     float iso[MAX_ISO_STEP];
257 #endif
258 
259 
260     char    rkuvnrISO[256];
261 
262     //step0:
263     float   ratio[MAX_ISO_STEP];
264     float   offset[MAX_ISO_STEP];
265 
266     //step1
267     int     wStep1[MAX_ISO_STEP];
268     int     hStep1[MAX_ISO_STEP];
269     int     meanSize1[MAX_ISO_STEP];
270 
271     int     nonMed1[4];
272     int     medSize1[MAX_ISO_STEP];
273     float   medRatio1[MAX_ISO_STEP];
274     int     isMedIIR1[MAX_ISO_STEP];
275 
276     int     nonBf1[4];
277     int     bfSize1[MAX_ISO_STEP];
278     float   sigmaR1[MAX_ISO_STEP];
279     float   sigmaD1[MAX_ISO_STEP];
280     float   uvgain1[MAX_ISO_STEP];
281     float   bfRatio1[MAX_ISO_STEP];
282     int     isRowIIR1[MAX_ISO_STEP];
283     int     isYcopy1[MAX_ISO_STEP];
284 
285     //step2
286     int     block2_ext[4];
287 
288     int     wStep2[MAX_ISO_STEP];
289     int     hStep2[MAX_ISO_STEP];
290     int     meanSize2[MAX_ISO_STEP];
291 
292     int     nonMed2[4];
293     int     medSize2[MAX_ISO_STEP];
294     float   medRatio2[MAX_ISO_STEP];
295     int     isMedIIR2[MAX_ISO_STEP];
296 
297     int     nonBf2[4];
298     int     bfSize2[MAX_ISO_STEP];
299     float   sigmaR2[MAX_ISO_STEP];
300     float   sigmaD2[MAX_ISO_STEP];
301     float   uvgain2[MAX_ISO_STEP];
302     float   bfRatio2[MAX_ISO_STEP];
303     int     isRowIIR2[MAX_ISO_STEP];
304     int     isYcopy2[MAX_ISO_STEP];
305 
306     //step3
307     int     nonBf3[4];
308     int     bfSize3[MAX_ISO_STEP];
309     float   sigmaR3[MAX_ISO_STEP];
310     float   sigmaD3[MAX_ISO_STEP];
311     float   uvgain3[MAX_ISO_STEP];
312     float   bfRatio3[MAX_ISO_STEP];
313     int     isRowIIR3[MAX_ISO_STEP];
314     int     isYcopy3[MAX_ISO_STEP];
315 
316     //kernels
317     float   kernel_3x3_table[3];
318     float   kernel_5x5_talbe[5];
319     float   kernel_9x9_table[8];
320     int     kernel_9x9_num;
321 
322     //curves
323     int     sigmaAdj_x[9];
324     float   sigamAdj_y[9];
325 
326     int     threAdj_x[9];
327     int     threAjd_y[9];
328 
329 } RKAnr_Uvnr_Params_t;
330 
331 typedef struct RKAnr_Uvnr_Params_Select_s
332 {
333     char    select_iso[256];
334 
335     //step0
336     float   ratio;
337     float   offset;
338 
339     //step1
340     int     wStep1;
341     int     hStep1;
342     int     meanSize1;
343 
344     int     nonMed1[4];
345     int     medSize1;
346     float   medRatio1;
347     int     isMedIIR1;
348 
349     int     nonBf1[4];
350     int     bfSize1;
351     float   sigmaR1;
352     float   sigmaD1;
353     float   uvgain1;
354     float   bfRatio1;
355     int     isRowIIR1;
356     int     isYcopy1;
357 
358     //step2
359     int     block2_ext[4];
360     int     wStep2;
361     int     hStep2;
362     int     meanSize2;
363 
364     int     nonMed2[4];
365     int     medSize2;
366     float   medRatio2;
367     int     isMedIIR2;
368 
369     int     nonBf2[4];
370     int     bfSize2;
371     float   sigmaR2;
372     float   sigmaD2;
373     float   uvgain2;
374     float   bfRatio2;
375     int     isRowIIR2;
376     int     isYcopy2;
377 
378     //step3
379     int     nonBf3[4];
380     int     bfSize3;
381     float   sigmaR3;
382     float   sigmaD3;
383     float   uvgain3;
384     float   bfRatio3;
385     int     isRowIIR3;
386     int     isYcopy3;
387 
388     //kernels
389     float   kernel_3x3_table[3];
390     float   kernel_5x5_table[5];
391     float   kernel_9x9_table[8];
392     int     kernel_9x9_num;
393 
394     //curves
395     int     sigmaAdj_x[9];
396     float   sigmaAdj_y[9];
397 
398     int     threAdj_x[9];
399     int     threAdj_y[9];
400 
401 } RKAnr_Uvnr_Params_Select_t;
402 
403 typedef struct RKAnr_Ynr_Params_Select_s
404 {
405 #ifndef RK_SIMULATOR_HW
406     float iso;
407 #endif
408 
409     float ciISO[12];
410     float noiseSigma[ISO_CURVE_POINT_NUM];
411     short lumaPoints[ISO_CURVE_POINT_NUM];
412 
413     float loFreqNoiseCi[WAVELET_LEVEL_NUM];
414     float loFreqDenoiseWeight[WAVELET_LEVEL_NUM];
415     float loFreqBfScale[WAVELET_LEVEL_NUM];
416     float loFreqLumaNrCurvePoint[6];
417     float loFreqLumaNrCurveRatio[6];
418 
419     float loFreqDenoiseStrength[2];
420     float loFreqDirectionStrength;
421 
422     float hiFreqDenoiseWeight[WAVELET_LEVEL_NUM];
423     float hiFreqBfScale[WAVELET_LEVEL_NUM];
424     float hiFreqEdgeSoftness[WAVELET_LEVEL_NUM];
425     float hiFreqLumaNrCurvePoint[6];
426     float hiFreqLumaNrCurveRatio[6];
427     float hiFreqDenoiseStrength;
428     float hiFreqSoftThresholdScale[WAVELET_LEVEL_NUM];
429 
430     short radialNoiseCtrPoint[7];
431     float radialNoiseCtrRatio[7];
432 
433     float lscGainRatioAdjust[WAVELET_LEVEL_NUM];
434 
435     float detailThre[6];
436     float detailThreRatioLevel[3][6];
437     float detailMinAdjDnW;
438 
439     float detailThreLevel4[6];
440     float detailThreRatioLevel4[6];
441 
442     short waveLetCoeffDeltaHi;
443     short waveLetCoeffDeltaLo;
444     short hiValueThre;
445     short loValueThre;
446     int   ynr_level4_max_gain;
447 
448     char ynr_ver_char[64];
449 } RKAnr_Ynr_Params_Select_t;
450 
451 //
452 typedef struct RKAnr_Ynr_Params_s
453 {
454     RKAnr_Ynr_Params_Select_t aYnrParamsISO[MAX_ISO_STEP];
455 
456     short rawBit;
457     short isoValue;
458 
459     char ynr_ver_char[64];
460 } RKAnr_Ynr_Params_t;
461 
462 typedef enum ANRresult_e {
463     ANR_RET_SUCCESS             = 0,   // this has to be 0, if clauses rely on it
464     ANR_RET_FAILURE             = 1,   // process failure
465     ANR_RET_INVALID_PARM        = 2,   // invalid parameter
466     ANR_RET_WRONG_CONFIG        = 3,   // feature not supported
467     ANR_RET_BUSY                = 4,   // there's already something going on...
468     ANR_RET_CANCELED            = 5,   // operation canceled
469     ANR_RET_OUTOFMEM            = 6,   // out of memory
470     ANR_RET_OUTOFRANGE          = 7,   // parameter/value out of range
471     ANR_RET_NULL_POINTER        = 8,   // the/one/all parameter(s) is a(are) NULL pointer(s)
472     ANR_RET_DIVISION_BY_ZERO    = 9,   // a divisor equals ZERO
473     ANR_RET_NO_INPUTIMAGE       = 10   // no input image
474 } ANRresult_t;
475 
476 typedef enum ANRState_e {
477     ANR_STATE_INVALID           = 0,                   /**< initialization value */
478     ANR_STATE_INITIALIZED       = 1,                   /**< instance is created, but not initialized */
479     ANR_STATE_STOPPED           = 2,                   /**< instance is confiured (ready to start) or stopped */
480     ANR_STATE_RUNNING           = 3,                   /**< instance is running (processes frames) */
481     ANR_STATE_LOCKED            = 4,                   /**< instance is locked (for taking snapshots) */
482     ANR_STATE_MAX                                      /**< max */
483 } ANRState_t;
484 
485 typedef enum ANROPMode_e {
486     ANR_OP_MODE_INVALID           = 0,                   /**< initialization value */
487     ANR_OP_MODE_AUTO              = 1,                   /**< instance is created, but not initialized */
488     ANR_OP_MODE_MANUAL            = 2,                   /**< instance is confiured (ready to start) or stopped */
489     ANR_OP_MODE_MAX                                      /**< max */
490 } ANROPMode_t;
491 
492 typedef enum ANRParamMode_e {
493 	ANR_PARAM_MODE_INVALID           = 0,
494     ANR_PARAM_MODE_NORMAL          = 1,                   /**< initialization value */
495     ANR_PARAM_MODE_HDR              = 2,                   /**< instance is created, but not initialized */
496     ANR_PARAM_MODE_GRAY            = 3,                   /**< instance is confiured (ready to start) or stopped */
497     ANR_PARAM_MODE_MAX                                      /**< max */
498 } ANRParamMode_t;
499 
500 typedef struct RKAnr_Mfnr_Dynamic_s {
501 	int enable;
502 	float lowth_iso;
503 	float lowth_time;
504 	float highth_iso;
505 	float highth_time;
506 	int mfnr_enable_state;
507 }RKAnr_Mfnr_Dynamic_t;
508 
509 typedef struct ANR_Manual_Attr_s
510 {
511     int bayernrEn;
512     RKAnr_Bayernr_Params_Select_t stBayernrParamSelect;
513 
514     int mfnrEn;
515     RKAnr_Mfnr_Params_Select_t stMfnrParamSelect;
516 
517     int ynrEn;
518     RKAnr_Ynr_Params_Select_t stYnrParamSelect;
519 
520     int uvnrEn;
521     RKAnr_Uvnr_Params_Select_t stUvnrParamSelect;
522 
523 
524 } ANR_Manual_Attr_t;
525 
526 typedef struct ANR_Auto_Attr_s
527 {
528     //all ISO params and select param
529     //bayernr
530     int bayernrEn;
531     RKAnr_Bayernr_Params_t stBayernrParams;
532     RKAnr_Bayernr_Params_Select_t stBayernrParamSelect;
533 
534     //mfnr
535     int mfnrEn;
536     RKAnr_Mfnr_Params_t stMfnrParams;
537     RKAnr_Mfnr_Params_Select_t stMfnrParamSelect;
538 
539     //ynr
540     int ynrEn;
541     RKAnr_Ynr_Params_t stYnrParams;
542     RKAnr_Ynr_Params_Select_t stYnrParamSelect;
543 
544     //uvnr
545     int uvnrEn;
546     RKAnr_Uvnr_Params_t stUvnrParams;
547     RKAnr_Uvnr_Params_Select_t stUvnrParamSelect;
548 
549     RKAnr_Mfnr_Dynamic_t stMfnr_dynamic;
550 
551 } ANR_Auto_Attr_t;
552 
553 typedef struct ANRProcResult_s {
554     int bayernrEn;
555     int mfnrEn;
556     int ynrEN;
557     int uvnrEn;
558 
559     //for sw simultaion
560     RKAnr_Bayernr_Params_Select_t stBayernrParamSelect;
561     RKAnr_Mfnr_Params_Select_t stMfnrParamSelect;
562     RKAnr_Ynr_Params_Select_t stYnrParamSelect;
563     RKAnr_Uvnr_Params_Select_t stUvnrParamSelect;
564 
565     //for fpga
566     RKAnr_Bayernr_Fix_t stBayernrFix;
567     RKAnr_Mfnr_Fix_t stMfnrFix;
568     RKAnr_Uvnr_Fix_t stUvnrFix;
569     RKAnr_Ynr_Fix_t stYnrFix;
570     RKAnr_Gain_Fix_t stGainFix;
571     //for motion detection
572     CalibDb_MFNR_Motion_t  stMotion;
573 } ANRProcResult_t;
574 
575 
576 typedef struct ANRConfig_s {
577 
578     ANRState_t eState;
579     ANROPMode_t eMode;
580 
581     int refYuvBit;
582 
583     //manual mode get nr & sharp levle from config to anrContext
584     //unsigned int u32NrLevel;
585     //unsigned int u32SharpLevel;
586 
587 } ANRConfig_t;
588 
589 
590 typedef struct rk_aiq_nr_attrib_s {
591     ANROPMode_t eMode;
592     ANR_Auto_Attr_t stAuto;
593     ANR_Manual_Attr_t stManual;
594 } rk_aiq_nr_attrib_t;
595 
596 
597 typedef struct ANRExpInfo_s {
598     int hdr_mode;
599     float arTime[3];
600     float arAGain[3];
601     float arDGain[3];
602     int   arIso[3];
603     int   arDcgMode[3];
604     int   cur_snr_mode;
605 	int   snr_mode;
606 
607 	float preTime[3];
608 	float preAGain[3];
609 	float preDGain[3];
610 	int preIso[3];
611 	int   preDcgMode[3];
612     int pre_snr_mode;
613 
614 	int mfnr_mode_3to1;
615 } ANRExpInfo_t;
616 
617 
618 typedef enum rk_aiq_nr_module_e{
619     ANR_MODULE_BAYERNR      = 0,                   /**< instance is created, but not initialized */
620     ANR_MODULE_MFNR         = 1,                   /**< instance is confiured (ready to start) or stopped */
621     ANR_MODULE_UVNR         = 2,                   /**< instance is running (processes frames) */
622     ANR_MODULE_YNR          = 3,                   /**< instance is locked (for taking snapshots) */               /**< max */
623 } rk_aiq_nr_module_t;
624 
625 
626 typedef struct rk_aiq_nr_IQPara_s {
627     int module_bits;//judge by bits
628 
629 	CalibDb_BayerNr_t stBayernrPara;
630 	CalibDb_MFNR_t stMfnrPara;
631 	CalibDb_UVNR_t stUvnrPara;
632 	CalibDb_YNR_t stYnrPara;
633 
634 } rk_aiq_nr_IQPara_t;
635 
636 
637 typedef struct rk_aiq_nr_JsonPara_s {
638     int module_bits;//judge by bits
639 
640 	CalibDbV2_BayerNrV1_t bayernr_v1;
641 	CalibDbV2_MFNR_t mfnr_v1;
642 	CalibDbV2_UVNR_t uvnr_v1;
643 	CalibDbV2_YnrV1_t ynr_v1;
644 
645 } rk_aiq_nr_JsonPara_t;
646 
647 
648 
649 RKAIQ_END_DECLARE
650 
651 #endif
652 
653