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