1 #ifndef _RK_AIQ_CALIB_TYPES_ISP20_H_ 2 #define _RK_AIQ_CALIB_TYPES_ISP20_H_ 3 4 #include "adpcc/rk_aiq_types_adpcc_ext.h" 5 6 #pragma pack(4) 7 8 #define CALIBDB_MAX_ISO_LEVEL 13 9 #define CALIBDB_NR_SHARP_MAX_ISO_LEVEL CALIBDB_MAX_ISO_LEVEL 10 #define CALIBDB_DPCC_MAX_ISO_LEVEL CALIBDB_MAX_ISO_LEVEL 11 #define CALIBDB_BLC_MAX_ISO_LEVEL CALIBDB_MAX_ISO_LEVEL 12 #define CALIBDB_NR_SHARP_SETTING_LEVEL 6 13 #define CALIBDB_MAX_MODE_NUM 5 14 #define CALIBDB_MAX_MODE_NAME_LENGTH (20) 15 //TODO: define max size as 256 temporarily 16 //#define CALIBDB_ZOOM_FOCUS_TBL_SIZE 10240 17 #define CALIBDB_ZOOM_FOCUS_TBL_SIZE 256 18 #define CALIBDB_DEGAMMA_CRUVE_KNOTS 17 19 20 #define CALIBDB_MAX_SCENE_NAME_LENGTH (10) 21 /*****************************************************************************/ 22 /** 23 * @brief ISP2.0 AEC Algo Params 24 */ 25 /*****************************************************************************/ 26 27 #define AEC_ECM_SCHEME_NAME ( 20U ) 28 typedef char AecEcmSchemeName_t[AEC_ECM_SCHEME_NAME]; 29 30 #define AEC_ECM_PROFILE_NAME ( 20U ) 31 typedef char AecEcmProfileName_t[AEC_ECM_PROFILE_NAME]; 32 33 #define AEC_DYNAMIC_SETPOINT_NAME ( 20U ) 34 typedef char AecDynamicSetpointName_t[AEC_DYNAMIC_SETPOINT_NAME]; 35 36 #define AEC_EXP_SEPARATE_NAME ( 20U ) 37 typedef char AecExpSeparateName_t[AEC_EXP_SEPARATE_NAME]; 38 39 #define AEC_RAWAEBIG_WIN_NUM (15*15) 40 #define AEC_RAWAELITE_WIN_NUM (5*5) 41 42 typedef enum _CalibDb_HdrAeRatioType_e { 43 RKAIQ_HDRAE_RATIOTYPE_MODE_INVALID = 0, 44 RKAIQ_HDRAE_RATIOTYPE_MODE_AUTO = 1, 45 RKAIQ_HDRAE_RATIOTYPE_MODE_FIX = 2, 46 RKAIQ_HDRAE_RATIOTYPE_MODE_MAX 47 } CalibDb_HdrAeRatioType_t; 48 49 typedef enum _CalibDb_AeStrategyMode_e { 50 RKAIQ_AEC_STRATEGY_MODE_AUTO = 0, 51 RKAIQ_AEC_STRATEGY_MODE_LOWLIGHT_PRIOR = 1, 52 RKAIQ_AEC_STRATEGY_MODE_HIGHLIGHT_PRIOR = 2, 53 RKAIQ_AEC_STRATEGY_MODE_MAX 54 } CalibDb_AeStrategyMode_t; 55 56 typedef enum _CalibDb_AeHdrLongFrmMode_e { 57 RKAIQ_AEC_HDR_LONGFRMMODE_NORMAL = 0, 58 RKAIQ_AEC_HDR_LONGFRMMODE_AUTO_LONG_FRAME = 1, 59 RKAIQ_AEC_HDR_LONGFRMMODE_LONG_FRAME = 2, 60 } CalibDb_AeHdrLongFrmMode_t; 61 62 typedef enum _CalibDb_AecDayNightMode_e { 63 AEC_DNMODE_MIN = -1, 64 AEC_DNMODE_DAY = 0, 65 AEC_DNMODE_NIGHT = 1, /*night mode or IR night-vision mode*/ 66 AEC_DNMODE_MAX = 2, 67 } CalibDb_AecDayNightMode_t; 68 69 /*****************************************************************************/ 70 /** 71 * AecSemMode_t 72 * 73 * @brief mode type of AEC Scene Evaluation 74 * 75 */ 76 /*****************************************************************************/ 77 typedef enum _CalibDb_AecSemMode_e { 78 AEC_SCENE_EVALUATION_INVALID = 0, /* invalid (only used for initialization) */ 79 AEC_SCENE_EVALUATION_DISABLED = 1, /* Scene Evaluation disabled (fix setpoint) */ 80 AEC_SCENE_EVALUATION_FIX = 2, /* Scene Evaluation fix (static ROI) */ 81 AEC_SCENE_EVALUATION_ADAPTIVE = 3, /* Scene Evaluation adaptive (ROI caluclated by Scene Evaluation */ 82 AEC_SCENE_EVALUATION_MAX 83 } CalibDb_AecSemMode_t; 84 /*****************************************************************************/ 85 /** 86 * AecBackLitMode_t 87 * 88 * @brief mode type of AEC-BackLit 89 * 90 */ 91 /*****************************************************************************/ 92 typedef enum _CalibDb_AecMeasAreaMode_e { 93 AEC_MEASURE_AREA_AUTO = 0, 94 AEC_MEASURE_AREA_UP, 95 AEC_MEASURE_AREA_BOTTOM, 96 AEC_MEASURE_AREA_LEFT, 97 AEC_MEASURE_AREA_RIGHT, 98 AEC_MEASURE_AREA_CENTER, 99 } CalibDb_AecMeasAreaMode_t; 100 101 /*****************************************************************************/ 102 typedef enum _CalibDb_AecECMMode_e { 103 AEC_ECM_MODE_INVALID = 0, /**< invalid exposure conversion module */ 104 AEC_ECM_MODE_1 = 1, /* the original exposure conversion module , minimize the value of gain */ 105 AEC_ECM_MODE_2 = 2, /* the newl exposure conversion module ,imcrease the frame rate */ 106 AEC_ECM_MODE_MAX, 107 } CalibDb_AecECMMode_t; 108 109 typedef enum _CalibDb_FlickerFreq_e { 110 AEC_FLICKER_FREQUENCY_OFF = 0, 111 AEC_FLICKER_FREQUENCY_50HZ = 1, 112 AEC_FLICKER_FREQUENCY_60HZ = 2, 113 } CalibDb_FlickerFreq_t; 114 115 typedef enum _CalibDb_AntiFlickerMode_e { 116 AEC_ANTIFLICKER_NORMAL_MODE = 0, 117 AEC_ANTIFLICKER_AUTO_MODE = 1, 118 } CalibDb_AntiFlickerMode_t; 119 120 typedef enum _CalibDb_IrisType_e { 121 IRIS_DC_TYPE = 0, 122 IRIS_P_TYPE = 1, 123 IRIS_HDC_TYPE = 2, 124 IRIS_INVALID_TYPE, 125 } CalibDb_IrisType_t; 126 127 /*****************************************************************************/ 128 /** 129 * @brief Enumeration type to configure CamerIC ISP exposure measuring mode. 130 * 131 *****************************************************************************/ 132 typedef enum _CalibDb_CamYRangeMode_e { 133 CAM_YRANGE_MODE_INVALID = 0, /**< invalid y range mode */ 134 CAM_YRANGE_MODE_FULL = 1, /**< Y = 0.299 * R + 0.587 * G + 0.114 * B,full range BT601*/ 135 CAM_YRANGE_MODE_LIMITED = 2, /**< Y = 16 + 0.25R + 0.5G + 0.1094B,limited range*/ 136 CAM_YRANGE_MODE_MAX, 137 } CalibDb_CamYRangeMode_t; 138 139 typedef enum _CalibDb_CamRawStatsMode_e { 140 CAM_RAWSTATS_MODE_INVALID = 0, /**< lower border (only for an internal evaluation) */ 141 CAM_RAWSTATS_MODE_R = 1, /**< R channel */ 142 CAM_RAWSTATS_MODE_G = 2, /**< G channel */ 143 CAM_RAWSTATS_MODE_B = 3, /**< B channel */ 144 CAM_RAWSTATS_MODE_Y = 4, /**< luminance channel */ 145 CAM_RAWSTATS_MODE_MAX, /**< upper border (only for an internal evaluation) */ 146 } CalibDb_CamRawStatsMode_t; 147 148 typedef enum _CalibDb_CamHistStatsMode_e { 149 CAM_HIST_MODE_INVALID = 0, /**< lower border (only for an internal evaluation) */ 150 CAM_HIST_MODE_RGB_COMBINED = 1, /**< RGB combined histogram, only available for SiHist */ 151 CAM_HIST_MODE_R = 2, /**< R histogram */ 152 CAM_HIST_MODE_G = 3, /**< G histogram */ 153 CAM_HIST_MODE_B = 4, /**< B histogram */ 154 CAM_HIST_MODE_Y = 5, /**< Y luminance histogram */ 155 CAM_HIST_MODE_MAX, /**< upper border (only for an internal evaluation) */ 156 } CalibDb_CamHistStatsMode_t; 157 158 typedef struct CalibDb_Aec_Win_s { 159 unsigned short h_offs; 160 unsigned short v_offs; 161 unsigned short h_size; 162 unsigned short v_size; 163 } CalibDb_Aec_Win_t; 164 165 /*****************************************************************************/ 166 /** 167 * @brief ISP2.0 AEC API Exp-Route Params 168 */ 169 /*****************************************************************************/ 170 #define AEC_ROUTE_MAX_NODES (10) 171 typedef struct CalibDb_LinAeRoute_Attr_s { 172 AecExpSeparateName_t name; /**name */ 173 float TimeDot[AEC_ROUTE_MAX_NODES]; 174 float GainDot[AEC_ROUTE_MAX_NODES]; 175 float IspgainDot[AEC_ROUTE_MAX_NODES]; 176 int PIrisGainDot[AEC_ROUTE_MAX_NODES]; 177 int array_size; 178 } CalibDb_LinAeRoute_Attr_t; 179 180 typedef struct CalibDb_HdrAeRoute_Attr_s { 181 AecExpSeparateName_t name; /**name */ 182 float HdrTimeDot[3][AEC_ROUTE_MAX_NODES]; 183 float HdrGainDot[3][AEC_ROUTE_MAX_NODES]; 184 float HdrIspDGainDot[3][AEC_ROUTE_MAX_NODES]; 185 int PIrisGainDot[AEC_ROUTE_MAX_NODES]; 186 int array_size; 187 } CalibDb_HdrAeRoute_Attr_t; 188 189 typedef struct CalibDb_AeRoute_Attr_s { 190 CalibDb_LinAeRoute_Attr_t LinAeSeperate[AEC_DNMODE_MAX]; 191 CalibDb_HdrAeRoute_Attr_t HdrAeSeperate[AEC_DNMODE_MAX]; 192 } CalibDb_AeRoute_Attr_t; 193 194 typedef struct CalibDb_AeEnvLvCalib_s { 195 float CalibFN; 196 float RealFN; 197 Cam2x1FloatMatrix_t Curve; 198 } CalibDb_AeEnvLvCalib_t; 199 200 201 //2). Auto exposure 202 typedef struct CalibDb_AeSpeed_s { 203 bool SmoothEn; 204 bool DyDampEn; 205 float DampOver; 206 float DampUnder; 207 float DampDark2Bright; 208 float DampBright2Dark; 209 } CalibDb_AeSpeed_t; 210 211 typedef struct CalibDb_AeRange_s { 212 float Min; 213 float Max; 214 } CalibDb_AeRange_t; 215 216 typedef struct CalibDb_LinAeRange_s { 217 CalibDb_AeRange_t stExpTimeRange; 218 CalibDb_AeRange_t stGainRange; 219 CalibDb_AeRange_t stIspDGainRange; 220 CalibDb_AeRange_t stPIrisRange; 221 } CalibDb_LinAeRange_t; 222 223 typedef struct CalibDb_HdrAeRange_s { 224 CalibDb_AeRange_t stExpTimeRange[3]; 225 CalibDb_AeRange_t stGainRange[3]; 226 CalibDb_AeRange_t stIspDGainRange[3]; 227 CalibDb_AeRange_t stPIrisRange; 228 } CalibDb_HdrAeRange_t; 229 230 typedef struct CalibDb_AeFrmRateAttr_s { 231 bool isFpsFix; 232 float FpsValue; 233 } CalibDb_AeFrmRateAttr_t; 234 235 typedef struct CalibDb_AntiFlickerAttr_s { 236 bool enable; 237 CalibDb_FlickerFreq_t Frequency; 238 CalibDb_AntiFlickerMode_t Mode; 239 } CalibDb_AntiFlickerAttr_t; 240 241 //3.) Init expsore 242 typedef struct CalibDb_LinExpInitExp_s { 243 float InitTimeValue; 244 float InitGainValue; 245 float InitIspDGainValue; 246 int InitPIrisGainValue; 247 int InitDCIrisDutyValue; 248 int InitHDCIrisTargetValue; 249 int array_size; 250 } CalibDb_LinExpInitExp_t; 251 252 typedef struct CalibDb_HdrExpInitExp_s { 253 Cam3x1FloatMatrix_t InitTimeValue; 254 Cam3x1FloatMatrix_t InitGainValue; 255 Cam3x1FloatMatrix_t InitIspDGainValue; 256 int InitPIrisGainValue; 257 int InitDCIrisDutyValue; 258 int InitHDCIrisTargetValue; 259 int array_size; 260 } CalibDb_HdrExpInitExp_t; 261 262 typedef struct CalibDb_ExpInitExp_s { 263 CalibDb_LinExpInitExp_t stLinExpInitExp; 264 CalibDb_HdrExpInitExp_t stHdrExpInitExp; 265 } CalibDb_ExpInitExp_t; 266 267 typedef struct CalibDb_AeAttr_s { 268 269 CalibDb_AeSpeed_t stAeSpeed; 270 //DelayFrmNum 271 uint8_t BlackDelayFrame; 272 uint8_t WhiteDelayFrame; 273 //AeRange 274 bool SetAeRangeEn; 275 CalibDb_LinAeRange_t stLinAeRange; 276 CalibDb_HdrAeRange_t stHdrAeRange; 277 //Auto/Fixed fps 278 CalibDb_AeFrmRateAttr_t stFrmRate; 279 280 } CalibDb_AeAttr_t; 281 //manual exposure 282 typedef struct CalibDb_LinMeAttr_s { 283 bool ManualTimeEn; 284 bool ManualGainEn; 285 bool ManualIspDgainEn; 286 bool ManualIrisEn; 287 float TimeValue; 288 float GainValue; 289 float IspDGainValue; 290 int PIrisGainValue; 291 int DCIrisValue; 292 int HDCIrisValue; 293 } CalibDb_LinMeAttr_t; 294 295 typedef struct CalibDb_HdrMeAttr_s { 296 bool ManualTimeEn; 297 bool ManualGainEn; 298 bool ManualIspDgainEn; 299 bool ManualIrisEn; 300 Cam3x1FloatMatrix_t TimeValue; 301 Cam3x1FloatMatrix_t GainValue; 302 Cam3x1FloatMatrix_t IspDGainValue; 303 int PIrisGainValue; 304 int DCIrisValue; 305 int HDCIrisValue; 306 } CalibDb_HdrMeAttr_t; 307 308 typedef struct CalibDb_MeAttr_s { 309 CalibDb_LinMeAttr_t stLinMe; 310 CalibDb_HdrMeAttr_t stHdrMe; 311 } CalibDb_MeAttr_t; 312 313 // DayorNight Switch 314 typedef struct CalibDb_IRNightMode_s { 315 uint8_t enable; 316 float IRRgain; 317 float IRBgain; 318 float MaxWbDis; 319 uint8_t Night2DayFrmCnt; 320 float Night2DayFacTh; 321 float VbPercent; 322 } CalibDb_IRNightMode_t; 323 324 typedef struct CalibDb_VBNightMode_s { 325 uint8_t enable; 326 float Night2DayFacTh; 327 uint8_t Night2DayFrmCnt; 328 } CalibDb_VBNightMode_t; 329 330 typedef struct CalibDb_DNSwitch_Attr_s { 331 uint8_t DNTrigger; 332 CalibDb_AecDayNightMode_t DNMode; 333 uint8_t FillLightMode; 334 float Day2NightFacTh; 335 uint8_t Day2NightFrmCnt; 336 CalibDb_VBNightMode_t stVBNightMode; 337 CalibDb_IRNightMode_t stIRNightMode; 338 } CalibDb_DNSwitch_Attr_t; 339 340 //Aec-Sync-Test used for debug 341 #define AEC_ALTER_EXP_MAX_NUM (10) 342 343 typedef struct CalibDb_LinAlterExp_s { 344 float TimeValue[AEC_ALTER_EXP_MAX_NUM]; 345 float GainValue[AEC_ALTER_EXP_MAX_NUM]; 346 float IspgainValue[AEC_ALTER_EXP_MAX_NUM]; 347 int PIrisGainValue[AEC_ALTER_EXP_MAX_NUM]; 348 int DcgMode[AEC_ALTER_EXP_MAX_NUM]; 349 int array_size; 350 } CalibDb_LinAlterExp_t; 351 352 typedef struct CalibDb_HdrAlterExp_s { 353 float TimeValue[AEC_ALTER_EXP_MAX_NUM][3]; 354 float GainValue[AEC_ALTER_EXP_MAX_NUM][3]; 355 float IspDGainValue[AEC_ALTER_EXP_MAX_NUM][3]; 356 int PIrisGainValue[AEC_ALTER_EXP_MAX_NUM]; 357 int DcgMode[AEC_ALTER_EXP_MAX_NUM][3]; 358 int array_size; 359 } CalibDb_HdrAlterExp_t; 360 361 typedef struct CalibDb_AeSyncTest_s { 362 uint8_t enable; 363 int IntervalFrm; 364 CalibDb_LinAlterExp_t LinAlterExp; 365 CalibDb_HdrAlterExp_t HdrAlterExp; 366 } CalibDb_AeSyncTest_t; 367 368 //AecIrisCtrl 369 #define AEC_PIRIS_STAP_TABLE_MAX (1024) 370 typedef struct CalibDb_PIris_Attr_s { 371 uint16_t TotalStep; 372 uint16_t EffcStep; 373 bool ZeroIsMax; 374 uint16_t StepTable[AEC_PIRIS_STAP_TABLE_MAX]; 375 } CalibDb_PIris_Attr_t; 376 377 typedef struct CalibDb_DCIris_Attr_s { 378 float Kp; 379 float Ki; 380 float Kd; 381 int MinPwmDuty; 382 int MaxPwmDuty; 383 int OpenPwmDuty; 384 int ClosePwmDuty; 385 } CalibDb_DCIris_Attr_t; 386 387 #define AEC_HDCIRIS_DOT_MAX_NUM (256) 388 typedef struct CalibDb_HDCIris_Attr_s { 389 float DampOver; 390 float DampUnder; 391 bool ZeroIsMax; 392 int MinTarget; 393 int MaxTarget; 394 int ZoomTargetDot[AEC_HDCIRIS_DOT_MAX_NUM]; 395 int ZoomDot[AEC_HDCIRIS_DOT_MAX_NUM]; 396 int IrisTargetDot[AEC_HDCIRIS_DOT_MAX_NUM]; 397 int GainDot[AEC_HDCIRIS_DOT_MAX_NUM]; 398 int zoom_array_size; 399 int iris_array_size; 400 } CalibDb_HDCIris_Attr_t; 401 402 typedef struct CalibDb_AecIrisCtrl_s { 403 uint8_t enable; 404 CalibDb_IrisType_t IrisType; 405 CalibDb_PIris_Attr_t PIrisAttr; 406 CalibDb_DCIris_Attr_t DCIrisAttr; 407 CalibDb_HDCIris_Attr_t HDCIrisAttr; 408 } CalibDb_AecIrisCtrl_t; 409 410 typedef struct CalibDb_AecCommon_Attr_s { 411 uint8_t enable; 412 uint8_t AecRunInterval; 413 RKAiqOPMode_t AecOpType; 414 CalibDb_CamRawStatsMode_t RawStatsMode; 415 CalibDb_CamHistStatsMode_t HistStatsMode; 416 CalibDb_CamYRangeMode_t YRangeMode; 417 //GridWeight 418 Cam15x15UCharMatrix_t DayGridWeights; 419 int DayWeightNum; 420 Cam15x15UCharMatrix_t NightGridWeights; 421 int NightWeightNum; 422 423 CalibDb_AecIrisCtrl_t stIris; 424 425 CalibDb_AeSyncTest_t stSyncTest; 426 //envlv calibration 427 CalibDb_AeEnvLvCalib_t stEnvLvCalib; 428 //antiflicker 429 CalibDb_AntiFlickerAttr_t stAntiFlicker; 430 //initial exp 431 CalibDb_ExpInitExp_t stInitExp; 432 //DayOrNight switch 433 CalibDb_DNSwitch_Attr_t stDNSwitch; 434 //ExpSeperate 435 CalibDb_AeRoute_Attr_t stAeRoute; 436 //manual expvalue 437 CalibDb_MeAttr_t stManual; 438 CalibDb_AeAttr_t stAuto; 439 } CalibDb_AecCommon_Attr_t; 440 441 /*****************************************************************************/ 442 /** 443 * @brief ISP2.0 AEC API algo Config Params(private) 444 */ 445 /*****************************************************************************/ 446 447 #ifndef AEC_SETPOINT_MAX_NODES 448 #define AEC_SETPOINT_MAX_NODES 10 449 #endif 450 typedef struct CalibDb_AecDynamicSetpoint_s { 451 AecDynamicSetpointName_t name; /**name */ 452 float ExpValue[AEC_SETPOINT_MAX_NODES]; 453 float DySetpoint[AEC_SETPOINT_MAX_NODES]; 454 int array_size; 455 } CalibDb_AecDynamicSetpoint_t; 456 457 458 typedef struct CalibDb_AecBacklight_s { 459 uint8_t enable; 460 float StrBias; 461 CalibDb_AecMeasAreaMode_t MeasArea; 462 float OEROILowTh; 463 float LumaDistTh; 464 float LvLowTh; 465 float LvHightTh; 466 Cam1x6FloatMatrix_t ExpLevel; 467 Cam1x6FloatMatrix_t NonOEPdfTh; 468 Cam1x6FloatMatrix_t LowLightPdfTh; 469 Cam1x6FloatMatrix_t TargetLLLuma; 470 } CalibDb_AecBacklight_t; 471 472 typedef struct CalibDb_AecOverExpCtrl_s { 473 uint8_t enable; 474 float StrBias; 475 float MaxWeight; 476 float HighLightTh; 477 float LowLightTh; 478 Cam1x6FloatMatrix_t OEpdf; 479 Cam1x6FloatMatrix_t LowLightWeight; 480 Cam1x6FloatMatrix_t HighLightWeight; 481 482 } CalibDb_AecOverExpCtrl_t; 483 484 485 typedef struct CalibDb_LinearAE_Attr_s { 486 uint8_t RawStatsEn; 487 float SetPoint; /**< set point to hit by the ae control system */ 488 float NightSetPoint; 489 float ToleranceIn; 490 float ToleranceOut; 491 float Evbias; 492 CalibDb_AeStrategyMode_t StrategyMode; 493 bool DySetPointEn; 494 CalibDb_AecDynamicSetpoint_t DySetpoint[AEC_DNMODE_MAX]; 495 496 CalibDb_AecBacklight_t BackLightConf; 497 CalibDb_AecOverExpCtrl_t OverExpCtrl; 498 } CalibDb_LinearAE_Attr_t; 499 500 typedef struct CalibDb_LFrameCtrl_s 501 { 502 //LframeCtrl 503 float OEROILowTh; 504 float LvLowTh; 505 float LvHighTh; 506 Cam1x6FloatMatrix_t LExpLevel; 507 Cam1x6FloatMatrix_t LSetPoint; 508 Cam1x6FloatMatrix_t TargetLLLuma; 509 Cam1x6FloatMatrix_t NonOEPdfTh; 510 Cam1x6FloatMatrix_t LowLightPdfTh; 511 } CalibDb_LFrameCtrl_t; 512 513 typedef struct CalibDb_MFrameCtrl_s 514 { 515 //MframeCtrl 516 Cam1x6FloatMatrix_t MExpLevel; 517 Cam1x6FloatMatrix_t MSetPoint; 518 } CalibDb_MFrameCtrl_t; 519 520 typedef struct CalibDb_SFrameCtrl_s 521 { 522 //SframeCtrl 523 float HLLumaTolerance; 524 Cam1x6FloatMatrix_t SExpLevel; 525 Cam1x6FloatMatrix_t TargetHLLuma; 526 Cam1x6FloatMatrix_t SSetPoint; 527 bool HLROIExpandEn; 528 } CalibDb_SFrameCtrl_t; 529 530 typedef struct CalibDb_HdrAE_Attr_s { 531 float ToleranceIn; 532 float ToleranceOut; 533 CalibDb_AeHdrLongFrmMode_t LongfrmMode; 534 uint16_t SfrmMinLine; 535 float LfrmModeExpTh; 536 CalibDb_AeStrategyMode_t StrategyMode; 537 float Evbias; 538 //ExpRatioCtrl 539 CalibDb_HdrAeRatioType_t ExpRatioType; 540 Cam1x6FloatMatrix_t RatioExpDot; 541 Cam1x6FloatMatrix_t M2SRatioFix; 542 Cam1x6FloatMatrix_t L2MRatioFix; 543 Cam1x6FloatMatrix_t M2SRatioMax; 544 Cam1x6FloatMatrix_t L2MRatioMax; 545 546 float LumaDistTh; //used for area-growing 547 CalibDb_LFrameCtrl_t LframeCtrl; 548 CalibDb_MFrameCtrl_t MframeCtrl; 549 CalibDb_SFrameCtrl_t SframeCtrl; 550 551 } CalibDb_HdrAE_Attr_t; 552 553 /*****************************************************************************/ 554 /** 555 * @brief Global AEC calibration structure of isp2.0 556 */ 557 /*****************************************************************************/ 558 typedef struct CalibDb_Aec_Para_s { 559 CalibDb_AecCommon_Attr_t CommCtrl; 560 CalibDb_LinearAE_Attr_t LinearAeCtrl; 561 CalibDb_HdrAE_Attr_t HdrAeCtrl; 562 } CalibDb_Aec_Para_t; 563 564 #define CALD_AEC_GAIN_RANGE_MAX_LEN 350 565 typedef enum _CalibDb_ExpGainMode_e { 566 RKAIQ_EXPGAIN_MODE_NONLINEAR_DB = 0, 567 RKAIQ_EXPGAIN_MODE_LINEAR = 1, 568 RKAIQ_EXPGAIN_MODE_MAX = 2 569 } CalibDb_ExpGainMode_t; 570 571 typedef struct CalibDb_AecGainRange_s { 572 bool IsLinear; 573 int array_size; 574 float pGainRange[CALD_AEC_GAIN_RANGE_MAX_LEN]; 575 CalibDb_ExpGainMode_t GainMode; 576 } CalibDb_AecGainRange_t; 577 578 typedef struct CalibDb_Sensor_Para_s { 579 //Exp RealValue 2 RegValue 580 CalibDb_AecGainRange_t GainRange; 581 float TimeFactor[4]; 582 //ExpSeperateCtrl 583 Cam2x1FloatMatrix_t CISHdrTimeRegSumFac; 584 Cam2x1FloatMatrix_t CISLinTimeRegMaxFac; 585 Cam2x1FloatMatrix_t CISTimeRegOdevity; 586 Cam2x1FloatMatrix_t CISHdrTimeRegOdevity; 587 uint16_t CISTimeRegMin; 588 uint16_t CISHdrTimeRegMin; 589 Cam1x3ShortMatrix_t CISHdrTimeRegMax; 590 uint8_t CISTimeRegUnEqualEn; 591 float CISMinFps; 592 CalibDb_AeRange_t CISAgainRange; //sensor Again or LCG range 593 CalibDb_AeRange_t CISExtraAgainRange; //add for HDR-DCG MODE, HCG range 594 CalibDb_AeRange_t CISDgainRange; //sensor Dgain 595 CalibDb_AeRange_t CISIspDgainRange; //Isp Dgain 596 597 //bit 0: for hdr gain should use the same value; 598 //bit 1: support use different gain value 599 uint8_t CISHdrGainIndSetEn; //only used for hdr-stagger mode 600 // bit 0 : mirror 601 // bit 1 : flip 602 uint8_t flip; // this will change the sensor output image orientation 603 } CalibDb_Sensor_Para_t; 604 605 typedef struct CalibDb_Module_Info_s { 606 float FNumber; 607 float EFL; 608 float LensT; 609 float IRCutT; 610 } CalibDb_Module_Info_t; 611 612 #define CALD_AWB_LS_NUM_MAX 14 613 #define CALD_AWB_WINDOW_NUM_MAX 8 614 #define CALD_AWB_EXCRANGE_NUM_MAX 7 615 #define CALD_AWB_RRES_NUM_MAX 5 616 #define CALD_AWB_LV_NUM_MAX 16 617 #define CALD_AWB_SGC_NUM_MAX 16 618 #define CALD_AWB_ILLUMINATION_NAME ( 20U ) 619 #define CALD_AWB_RES_NAME ( 20U ) 620 #define CALD_AWB_TEMPORAL_GAIN_SIZE_MAX 4 621 #define CALD_AWB_XY_TYPE_MAX_V201 2 622 #define CALD_AWB_GRID_NUM_TOTAL 225 623 #define CALD_AWB_CT_GRID_NUM_MAX 10 624 #define CALD_AWB_CRI_GRID_NUM_MAX 10 625 #define CALD_AWB_CT_LV_NUM_MAX 5 626 #define CALD_AWB_CT_CLIP_GRID_NUM_MAX 14 627 #define CALD_AWB_LV_NUM_FOR_TOLERANCE 4 628 #define CALD_AWB_LV_NUM_FOR_RUNINTERVAL 8 629 630 typedef struct _CalibDb_ExcRange_s { 631 unsigned char domain;/*0uv domain,1 xy domain*/ 632 unsigned char mode; 633 int xu[2];//left right 634 int yv[2];//top bottom 635 } CalibDb_ExcRange_t; 636 637 typedef struct _CalibDb_Rgb2TcsParam_s { 638 float pseudoLuminanceWeight[3]; 639 float rotationMat[9]; 640 } CalibDb_Rgb2TcsParam_t; 641 642 typedef struct CalibDb_Yuv3D_Range_Ill_s { 643 int b_uv; //17+0 s 644 int slope_inv_neg_uv; //9+10s //-1/k 645 int slope_factor_uv; //9+10s // 1/(-1/k+k) 646 int slope_ydis; //9+10s //k 647 int b_ydis; //17+0s 648 unsigned char ref_u; //8u 649 unsigned char ref_v; //8u 650 unsigned short dis[6];//8+4 u 651 unsigned char th[6]; //8u 652 } CalibDb_Yuv3D_Range_Ill_t; 653 654 typedef struct CalibDb_Yuv3D_2_Range_Ill_s { 655 float thcurve_u[6]; 656 float thcure_th[6]; 657 float line[6]; 658 //float lineP1[3]; 659 //float lineP2[3]; 660 } CalibDb_Yuv3D_2_Range_Ill_t; 661 662 typedef struct CalibDb_UV_Range_Ill_s { 663 float pu_region[5]; 664 float pv_region[5]; 665 } CalibDb_UV_Range_Ill_t; 666 667 typedef struct CalibDb_Tcs_Range_Ill_s { 668 float xleft; 669 float xright; 670 float ytop; 671 float ybottom; 672 } CalibDb_Tcs_Range_Ill_t; 673 674 typedef struct CalibDb_Awb_Light_Info_s { 675 char light_name[16]; 676 CalibDb_UV_Range_Ill_t uvRange_param; 677 CalibDb_UV_Range_Ill_t uvRange_param_small; 678 CalibDb_Tcs_Range_Ill_t normalRange; 679 CalibDb_Tcs_Range_Ill_t bigRange; 680 CalibDb_Tcs_Range_Ill_t smallRange; 681 CalibDb_Yuv3D_Range_Ill_t yuv3DRange_param; 682 CalibDb_Yuv3D_2_Range_Ill_t yuv3D2Range_param; 683 } CalibDb_Awb_Light_Info_t; 684 685 typedef struct CalibDb_Awb_Light_Info2_s { 686 char light_name[CALD_AWB_ILLUMINATION_NAME]; 687 unsigned char staWeight[CALD_AWB_LV_NUM_MAX]; 688 unsigned int spatialGain_LV_THH;//threshold for spatial gain calculation in different illuminant 689 unsigned int spatialGain_LV_THL;// 690 unsigned char xyType2Enable; 691 float weightCurve_ratio[4]; 692 float weightCurve_weight[4]; 693 } CalibDb_Awb_Light_Info2_t; 694 695 typedef struct CalibDb_StatWindow_s { 696 int mode; 697 int resNum; 698 char resName[CALD_AWB_RRES_NUM_MAX][CALD_AWB_RES_NAME]; 699 uint16_t window[CALD_AWB_RRES_NUM_MAX][4]; 700 } CalibDb_StatWindow_t; 701 typedef struct CalibDb_tcs_range_ill_s { 702 float NorrangeX[2];//left right 703 float NorrangeY[2];//top bottom 704 float SperangeX[2]; 705 float SperangeY[2]; 706 float SmalrangeX[2]; 707 float SmalrangeY[2]; 708 } CalibDb_tcs_range_ill_t; 709 710 typedef struct CalibDb_Awb_Cct_Clip_Cfg_s { 711 float outdoor_cct_min; 712 int grid_num; 713 float cct[CALD_AWB_CT_CLIP_GRID_NUM_MAX]; 714 float cri_bound_up[CALD_AWB_CT_CLIP_GRID_NUM_MAX]; 715 float cri_bound_low[CALD_AWB_CT_CLIP_GRID_NUM_MAX]; 716 } CalibDb_Awb_Cct_Clip_Cfg_t; 717 typedef struct CalibDb_limit_range_s { 718 int lumaNum; 719 float lumaValue[CALD_AWB_LV_NUM_MAX]; 720 unsigned short maxR[CALD_AWB_LV_NUM_MAX]; 721 unsigned short minR[CALD_AWB_LV_NUM_MAX]; 722 unsigned short maxG[CALD_AWB_LV_NUM_MAX]; 723 unsigned short minG[CALD_AWB_LV_NUM_MAX]; 724 unsigned short maxB[CALD_AWB_LV_NUM_MAX]; 725 unsigned short minB[CALD_AWB_LV_NUM_MAX]; 726 unsigned short maxY[CALD_AWB_LV_NUM_MAX]; 727 unsigned short minY[CALD_AWB_LV_NUM_MAX]; 728 } CalibDb_limit_range_t; 729 730 typedef struct CalibDb_Awb_Calib_Para_V200_s { 731 struct list_head listHead; 732 char scene[CALIBDB_MAX_SCENE_NAME_LENGTH]; 733 unsigned char hdrFrameChooseMode; 734 unsigned char hdrFrameChoose; 735 bool lscBypEnable; 736 bool uvDetectionEnable; 737 bool xyDetectionEnable; 738 bool yuvDetectionEnable; 739 bool wpDiffWeiEnable; 740 bool wbGainClipEn; 741 bool wbGainDaylightClipEn; 742 bool blkWeightEnable;//the different weight in WP sum 743 bool blkStatisticsEnable; 744 int lsUsedForYuvDetNum; 745 char lsUsedForYuvDet[CALD_AWB_LS_NUM_MAX][CALD_AWB_ILLUMINATION_NAME]; 746 unsigned char dsMode; 747 unsigned char blkMeasureMode; 748 CalibDb_StatWindow_t measeureWindow; 749 bool multiwindow_en; 750 unsigned char lightNum; 751 char lightName[CALD_AWB_LS_NUM_MAX][CALD_AWB_ILLUMINATION_NAME]; 752 unsigned char doorType[CALD_AWB_LS_NUM_MAX]; 753 float standardGainValue[CALD_AWB_LS_NUM_MAX][4];//rggb 754 CalibDb_limit_range_t limitRange; 755 //uv_range_ill_t uvRange_param[7];//big range 756 //uv_range_ill_t uvRange_param_small[7];//small range 757 CalibDb_Rgb2TcsParam_t rgb2tcs_param; 758 //tcs_range_ill_t xyRangeLight[7];//HZ A TL84 CWF D50 D65 D75 759 //yuv3d_range_ill_t yuv3DRange_param[7]; 760 //yuv3d_2_range_ill_t yuv3D2Range_param[7]; 761 //several window in pixel domain 762 //CalibDb_Awb_Light_Info_t awb_light_info[CALD_AWB_LS_NUM_MAX]; 763 CalibDb_UV_Range_Ill_t uvRange_param[CALD_AWB_LS_NUM_MAX]; 764 CalibDb_UV_Range_Ill_t uvRange_param_small[CALD_AWB_LS_NUM_MAX]; 765 CalibDb_tcs_range_ill_t xyRangeLight[CALD_AWB_LS_NUM_MAX]; 766 CalibDb_Yuv3D_Range_Ill_t yuv3DRange_param[CALD_AWB_LS_NUM_MAX]; 767 768 769 unsigned short multiwindow[CALD_AWB_WINDOW_NUM_MAX][4];//8 windows in pixel domain ,hOffset,vOffser,hSize,vSize; 770 //several winow in uv or xy domain 771 CalibDb_ExcRange_t excludeWpRange[CALD_AWB_EXCRANGE_NUM_MAX]; 772 float spatialGain_H[4];//spatial gain 773 float spatialGain_L[4]; 774 float temporalDefaultGain[4]; 775 float ca_targetGain[4]; 776 //single color 777 unsigned short sSelColorNUM; 778 unsigned short sIndSelColor[CALD_AWB_SGC_NUM_MAX]; 779 float sMeanCh[2][CALD_AWB_SGC_NUM_MAX]; 780 float srGain[CALD_AWB_LS_NUM_MAX]; 781 float sbGain[CALD_AWB_LS_NUM_MAX]; 782 unsigned short sIllEstNum; 783 char sNameIllEst[CALD_AWB_LS_NUM_MAX][CALD_AWB_ILLUMINATION_NAME]; 784 float sAlpha; 785 float lineRgBg[3]; 786 float lineRgProjCCT[3]; 787 //wbgain clip 788 CalibDb_Awb_Cct_Clip_Cfg_t cct_clip_cfg; 789 } CalibDb_Awb_Calib_Para_V200_t; 790 791 792 typedef struct CalibDb_Awb_line_s { 793 float a; 794 float b; 795 float c; 796 } CalibDb_Awb_line_t; 797 798 typedef struct CalibDb_Awb_Cct_Lut_Cfg_Lv_s { 799 float lv; 800 int ct_grid_num; 801 int cri_grid_num; 802 float ct_range[2];//min,max, equal distance sapmle 803 float cri_range[2];//min,max 804 float ct_lut_out[CALD_AWB_CT_GRID_NUM_MAX * CALD_AWB_CRI_GRID_NUM_MAX]; 805 float cri_lut_out[CALD_AWB_CT_GRID_NUM_MAX * CALD_AWB_CRI_GRID_NUM_MAX]; 806 } CalibDb_Awb_Cct_Lut_Cfg_Lv_t; 807 808 809 typedef struct CalibDb_Awb_gain_offset_cfg_s { 810 bool enable; 811 float offset[4]; 812 } CalibDb_Awb_gain_offset_cfg_t; 813 814 typedef struct rk_aiq_wb_awb_runinterval_s { 815 int num; 816 float LV[CALD_AWB_LV_NUM_FOR_RUNINTERVAL]; 817 float value[CALD_AWB_LV_NUM_FOR_RUNINTERVAL]; 818 } CalibDb_Awb_runinterval_t; 819 820 typedef struct rk_aiq_wb_awb_tolerance_s { 821 int num; 822 float LV[CALD_AWB_LV_NUM_FOR_RUNINTERVAL]; 823 float value[CALD_AWB_LV_NUM_FOR_RUNINTERVAL]; 824 } CalibDb_Awb_tolerance_t; 825 826 typedef struct CalibDb_Awb_Remosaic_Para_s 827 { 828 bool enable; 829 float sensor_awb_gain[4]; 830 } CalibDb_Awb_Remosaic_Para_t; 831 832 typedef struct CalibDb_Awb_Wp_Th_s { 833 int num; 834 float lumaValue[CALD_AWB_LV_NUM_MAX]; 835 float WP_THH[CALD_AWB_LV_NUM_MAX]; 836 float WP_THL[CALD_AWB_LV_NUM_MAX]; 837 } CalibDb_Awb_Wp_Th_t; 838 839 typedef struct CalibDb_Awb_XyReionSelect_WpNumTh_s { 840 int num; 841 float lumaValue[CALD_AWB_LV_NUM_MAX]; 842 float wpNumThForBigType[CALD_AWB_LV_NUM_MAX]; 843 float wpNumThForExtraType[CALD_AWB_LV_NUM_MAX]; 844 845 } CalibDb_Awb_XyReionSelect_WpNumTh_t; 846 847 848 typedef struct CalibDb_Awb_Adjust_Para_s { 849 struct list_head listHead; 850 char scene[CALIBDB_MAX_SCENE_NAME_LENGTH]; 851 bool wbBypass; 852 bool awbEnable; 853 unsigned char lightNum; 854 bool ca_enable; 855 bool wbGainAdjustEn; 856 char lsForFirstFrame[CALD_AWB_ILLUMINATION_NAME]; 857 //multiwindow 858 unsigned char multiwindowMode; 859 bool uvRange_small_enable; 860 CalibDb_Awb_tolerance_t tolerance;//wb gain diff th for awb gain update, set 0 to disable this function 861 CalibDb_Awb_runinterval_t runInterval; 862 //wbgain damp 863 float dFStep; 864 float dFMin; 865 float dFMax; 866 int LvIIRsize; 867 float LvVarTh; 868 869 int LV_NUM; 870 unsigned int LVMatrix[CALD_AWB_LV_NUM_MAX]; 871 unsigned int LV_THL; 872 unsigned int LV_THL2; 873 unsigned int LV_THH; 874 unsigned int LV_THH2; 875 CalibDb_Awb_Wp_Th_t WP_TH; 876 float proDis_THL; //threshold for distance probality calculation 877 float proDis_THH; 878 unsigned int proLV_Indoor_THL;// threshold for luminance probality calculation 879 unsigned int proLV_Indoor_THH; 880 unsigned int proLV_Outdoor_THL; 881 unsigned int proLV_Outdoor_THH; 882 unsigned char temporalCalGainSetSize; 883 unsigned char temporalGainSetWeight[CALD_AWB_TEMPORAL_GAIN_SIZE_MAX];//ËÄÖ¡µÄ±ÈÀý0-100×ܺÍΪ100//gainPer[0]Ϊ-1Ö¡£¬gainPer[1]is -2,gainPer[2] is -3 gainPer[3] is -4 884 float wpNumPercTh;//ÎÞЧ°×µããÐÖµ£¬°×µãÊýÁ¿ÉÙʱÈÏΪ¸Ã°×µãÎÞЧ 885 unsigned char tempWeight[CALD_AWB_LV_NUM_MAX]; 886 887 888 //color adaptation 889 float ca_LACalcFactor; 890 891 892 //wb gain shift 2 //to do from xml 893 int cct_lut_cfg_num; 894 CalibDb_Awb_Cct_Lut_Cfg_Lv_t cct_lut_cfg[CALD_AWB_CT_LV_NUM_MAX]; 895 CalibDb_Awb_gain_offset_cfg_t wbGainOffset; 896 897 898 float convergedVarTh; 899 900 901 902 //make xyTypeSelect stable 903 int xyTypeListSize;// xyTypeListSize ==0 will disable this function 904 float varianceLumaTh; 905 CalibDb_Awb_XyReionSelect_WpNumTh_t wpNumTh; 906 CalibDb_Awb_Light_Info2_t awb_light_info[CALD_AWB_LS_NUM_MAX]; 907 908 bool xyType2ForColBalEnable;// to do for awb2.1 909 910 CalibDb_Awb_Remosaic_Para_t remosaic_cfg; 911 } CalibDb_Awb_Adjust_Para_t; 912 913 914 typedef struct CalibDb_Awb_Para_s 915 { 916 CalibDb_Awb_Calib_Para_V200_t calib_para_v200; 917 CalibDb_Awb_Adjust_Para_t adjust_para; 918 } CalibDb_Awb_Para_t; 919 920 typedef struct GlobalLuma_s 921 { 922 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 923 float GlobalLumaMode; 924 float envLevel[13]; 925 float ISO[13]; 926 float Tolerance; 927 float globalLuma[13]; 928 } GlobalLuma_t; 929 930 typedef struct DetailsHighLight_s 931 { 932 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 933 float DetailsHighLightMode; 934 float OEPdf[13]; 935 float EnvLv[13]; 936 float Tolerance; 937 float detailsHighLight[13]; 938 } DetailsHighLight_t; 939 940 typedef struct DetailsLowLight_s 941 { 942 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 943 float DetailsLowLightMode; 944 float FocusLuma[13]; 945 float DarkPdf[13]; 946 float ISO[13]; 947 float Tolerance; 948 float detailsLowLight[13]; 949 } DetailsLowLight_t; 950 951 typedef struct LocalTMO_s 952 { 953 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 954 float LocalTMOMode; 955 float DynamicRange[13]; 956 float EnvLv[13]; 957 float Tolerance; 958 float Strength[13]; 959 } LocalTMO_t; 960 961 typedef struct GlobaTMO_s 962 { 963 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 964 float en; 965 float iir; 966 float mode; 967 float DynamicRange[13]; 968 float EnvLv[13]; 969 float Tolerance; 970 float Strength[13]; 971 } GlobaTMO_t; 972 973 typedef struct TMO_en_s 974 { 975 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 976 float en; 977 } TMO_en_t; 978 979 typedef struct CalibDb_Amerge_Para_s { 980 float envLevel[13]; 981 float oeCurve_smooth[13]; 982 float oeCurve_offset[13]; 983 float moveCoef[13]; 984 float mdCurveLm_smooth[13]; 985 float mdCurveLm_offset[13]; 986 float mdCurveMs_smooth[13]; 987 float mdCurveMs_offset[13]; 988 float oeCurve_damp; 989 float mdCurveLm_damp; 990 float mdCurveMs_damp; 991 } CalibDb_Amerge_Para_t; 992 993 typedef struct CalibDb_Atmo_Para_s { 994 TMO_en_t en[CALIBDB_MAX_MODE_NUM]; 995 GlobalLuma_t luma[CALIBDB_MAX_MODE_NUM]; 996 DetailsHighLight_t HighLight[CALIBDB_MAX_MODE_NUM]; 997 DetailsLowLight_t LowLight[CALIBDB_MAX_MODE_NUM]; 998 LocalTMO_t LocalTMO[CALIBDB_MAX_MODE_NUM]; 999 GlobaTMO_t GlobaTMO[CALIBDB_MAX_MODE_NUM]; 1000 float damp; 1001 } CalibDb_Atmo_Para_t; 1002 1003 1004 1005 typedef struct CalibDb_Blc_ModeCell_s { 1006 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 1007 float iso[CALIBDB_BLC_MAX_ISO_LEVEL]; 1008 float level[4][CALIBDB_BLC_MAX_ISO_LEVEL]; 1009 } CalibDb_Blc_ModeCell_t; 1010 1011 typedef struct CalibDb_Blc_s { 1012 int enable; 1013 CalibDb_Blc_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM]; 1014 } CalibDb_Blc_t; 1015 1016 typedef struct CalibDb_Dpcc_set_RK_s { 1017 unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1018 unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1019 unsigned char rb_sw_mindis[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1020 unsigned char g_sw_mindis[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1021 unsigned char sw_dis_scale_min[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1022 unsigned char sw_dis_scale_max[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1023 } CalibDb_Dpcc_set_RK_t; 1024 1025 typedef struct CalibDb_Dpcc_set_LC_s { 1026 unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1027 unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1028 unsigned char rb_line_thr[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1029 unsigned char g_line_thr[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1030 unsigned char rb_line_mad_fac[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1031 unsigned char g_line_mad_fac[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1032 } CalibDb_Dpcc_set_LC_t; 1033 1034 typedef struct CalibDb_Dpcc_set_PG_s { 1035 unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1036 unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1037 unsigned char rb_pg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1038 unsigned char g_pg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1039 } CalibDb_Dpcc_set_PG_t; 1040 1041 typedef struct CalibDb_Dpcc_set_RND_s { 1042 unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1043 unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1044 unsigned char rb_rnd_thr[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1045 unsigned char g_rnd_thr[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1046 unsigned char rb_rnd_offs[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1047 unsigned char g_rnd_offs[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1048 } CalibDb_Dpcc_set_RND_t; 1049 1050 typedef struct CalibDb_Dpcc_set_RG_s { 1051 unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1052 unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1053 unsigned char rb_rg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1054 unsigned char g_rg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1055 } CalibDb_Dpcc_set_RG_t; 1056 1057 typedef struct CalibDb_Dpcc_set_RO_s { 1058 unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1059 unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1060 unsigned char rb_ro_lim[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1061 unsigned char g_ro_lim[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1062 } CalibDb_Dpcc_set_RO_t; 1063 1064 typedef struct CalibDb_Dpcc_set_s { 1065 CalibDb_Dpcc_set_RK_t rk; 1066 CalibDb_Dpcc_set_LC_t lc; 1067 CalibDb_Dpcc_set_PG_t pg; 1068 CalibDb_Dpcc_set_RND_t rnd; 1069 CalibDb_Dpcc_set_RG_t rg; 1070 CalibDb_Dpcc_set_RO_t ro; 1071 } CalibDb_Dpcc_set_t; 1072 1073 typedef struct CalibDb_Dpcc_Pdaf_s { 1074 unsigned char en; 1075 unsigned char point_en[16]; 1076 unsigned short int offsetx; 1077 unsigned short int offsety; 1078 unsigned char wrapx; 1079 unsigned char wrapy; 1080 unsigned short int wrapx_num; 1081 unsigned short int wrapy_num; 1082 unsigned char point_x[16]; 1083 unsigned char point_y[16]; 1084 unsigned char forward_med; 1085 } CalibDb_Dpcc_Pdaf_t; 1086 1087 typedef struct CalibDb_Dpcc_Expert_Mode_s { 1088 float iso[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1089 unsigned char stage1_Enable[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1090 unsigned char grayscale_mode; 1091 unsigned char rk_out_sel[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1092 unsigned char dpcc_out_sel[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1093 unsigned char stage1_rb_3x3[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1094 unsigned char stage1_g_3x3[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1095 unsigned char stage1_inc_rb_center[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1096 unsigned char stage1_inc_g_center[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1097 unsigned char stage1_use_fix_set[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1098 unsigned char stage1_use_set3[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1099 unsigned char stage1_use_set2[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1100 unsigned char stage1_use_set1[CALIBDB_DPCC_MAX_ISO_LEVEL]; 1101 CalibDb_Dpcc_set_t set[3]; 1102 } CalibDb_Dpcc_Expert_Mode_t; 1103 1104 typedef struct CalibDb_Dpcc_s { 1105 int enable; 1106 char version[64]; 1107 CalibDb_Dpcc_Fast_Mode_t fast; 1108 CalibDb_Dpcc_Expert_Mode_t expert; 1109 CalibDb_Dpcc_Pdaf_t pdaf; 1110 CalibDb_Dpcc_Sensor_t sensor_dpcc; 1111 } CalibDb_Dpcc_t; 1112 1113 #define CALIBDB_NR_SHARP_NAME_LENGTH 64 1114 #define CALIBDB_NR_SHARP_MODE_LENGTH 64 1115 1116 typedef struct CalibDb_BayerNR_Params_s { 1117 char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH]; 1118 char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH]; 1119 float iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1120 float filtPara[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1121 float luLevel[8]; 1122 float luLevelVal[8]; 1123 float luRatio[8][CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1124 float fixW[4][CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1125 float lamda; 1126 unsigned char gauss_en; 1127 float RGainOff; 1128 float RGainFilp; 1129 float BGainOff; 1130 float BGainFilp; 1131 float edgeSoftness; 1132 float gaussWeight0; 1133 float gaussWeight1; 1134 float bilEdgeFilter; 1135 float bilFilterStreng[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1136 float bilEdgeSoft; 1137 float bilEdgeSoftRatio; 1138 float bilRegWgt; 1139 } CalibDb_BayerNR_Params_t; 1140 1141 typedef struct CalibDb_BayerNr_ModeCell_s { 1142 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 1143 CalibDb_BayerNR_Params_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL]; 1144 } CalibDb_BayerNr_ModeCell_t; 1145 1146 typedef struct CalibDb_BayerNr_s { 1147 int enable; 1148 char version[64]; 1149 CalibDb_BayerNr_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM]; 1150 } CalibDb_BayerNr_t; 1151 1152 typedef struct CalibDb_BayerNr_2_s { 1153 int enable; 1154 char version[64]; 1155 CalibDb_BayerNr_ModeCell_t *mode_cell; 1156 int mode_num; 1157 } CalibDb_BayerNr_2_t; 1158 1159 1160 #define CIFISP_LSC_DATA_TBL_SIZE_ISP20 289 1161 #define CIFISP_LSC_GRAD_TBL_SIZE_ISP20 8 1162 #define CIFISP_LSC_SIZE_TBL_SIZE_ISP20 8 1163 #define LSC_GRAD_TBL_SIZE_ISP20 8 1164 #define LSC_ILLUMINATION_MAX 10 1165 typedef enum CalibDb_Used_For_Case_e { 1166 USED_FOR_CASE_NORMAL = 0, 1167 USED_FOR_CASE_FLASH, 1168 USED_FOR_CASE_GRAY, 1169 USED_FOR_CASE_3, 1170 USED_FOR_CASE_MAX 1171 } CalibDb_Used_For_Case_t; 1172 1173 #define LSC_RESOLUTION_NAME ( 15U ) 1174 typedef char CalibDb_ResolutionName_t[LSC_RESOLUTION_NAME]; 1175 #define LSC_PROFILE_NAME ( 25U ) 1176 typedef char CalibDb_Lsc_ProfileName_t[LSC_PROFILE_NAME]; 1177 #define LSC_ILLUMINATION_NAME ( 20U ) 1178 typedef char CalibDb_IlluminationName_t[LSC_ILLUMINATION_NAME]; 1179 #ifndef LSC_PROFILES_NUM_MAX 1180 #define LSC_PROFILES_NUM_MAX ( 5 ) 1181 #endif 1182 #ifndef LSC_RESOLUTIONS_NUM_MAX 1183 #define LSC_RESOLUTIONS_NUM_MAX ( 4 ) 1184 #endif 1185 typedef enum Cam4ChColorComponent_e 1186 { 1187 CAM_4CH_COLOR_COMPONENT_RED = 0, 1188 CAM_4CH_COLOR_COMPONENT_GREENR = 1, 1189 CAM_4CH_COLOR_COMPONENT_GREENB = 2, 1190 CAM_4CH_COLOR_COMPONENT_BLUE = 3, 1191 CAM_4CH_COLOR_COMPONENT_MAX 1192 } Cam4ChColorComponent_t; 1193 1194 typedef struct CamLscMatrix_s 1195 { 1196 Cam17x17UShortMatrix_t LscMatrix[CAM_4CH_COLOR_COMPONENT_MAX]; 1197 } CamLscMatrix_t; 1198 1199 typedef struct CamVignettingCurve_s { 1200 uint16_t arraySize; 1201 float pSensorGain[4];//change to pointer 1202 float pVignetting[4]; 1203 } CamVignettingCurve_t; 1204 1205 typedef struct CalibDb_AlscCof_ill_s { 1206 char illuName[25]; 1207 float awbGain[2]; 1208 int tableUsedNO; 1209 CalibDb_Lsc_ProfileName_t tableUsed[LSC_PROFILES_NUM_MAX]; 1210 CamVignettingCurve_t vignettingCurve; 1211 } CalibDb_AlscCof_ill_t; 1212 1213 typedef struct CalibDb_AlscCof_s { 1214 int lscResNum; 1215 CalibDb_ResolutionName_t lscResName[LSC_RESOLUTIONS_NUM_MAX];// type CalibDb_ResolutionName_t 1216 int illuNum[USED_FOR_CASE_MAX]; 1217 CalibDb_AlscCof_ill_t illAll[USED_FOR_CASE_MAX][LSC_ILLUMINATION_MAX]; 1218 int usedForCaseAll[USED_FOR_CASE_MAX * LSC_ILLUMINATION_MAX]; //for write xml 1219 } CalibDb_AlscCof_t; 1220 1221 1222 typedef struct CalibDb_LscTableProfile_s { 1223 CalibDb_Lsc_ProfileName_t name; /**< profile name */ 1224 CalibDb_ResolutionName_t resolution; /**< resolution link */ 1225 CalibDb_IlluminationName_t illumination; /**< illumination link */ 1226 float vignetting; /**< vignetting value */ 1227 1228 uint16_t LscSectors; 1229 uint16_t LscNo; 1230 uint16_t LscXo; 1231 uint16_t LscYo; 1232 1233 uint16_t LscXGradTbl[LSC_GRAD_TBL_SIZE_ISP20]; 1234 uint16_t LscYGradTbl[LSC_GRAD_TBL_SIZE_ISP20]; 1235 uint16_t LscXSizeTbl[CIFISP_LSC_SIZE_TBL_SIZE_ISP20]; 1236 uint16_t LscYSizeTbl[CIFISP_LSC_SIZE_TBL_SIZE_ISP20]; 1237 1238 Cam17x17UShortMatrix_t LscMatrix[CAM_4CH_COLOR_COMPONENT_MAX]; /**< matrix for different color channels */ 1239 } CalibDb_LscTableProfile_t; 1240 1241 typedef struct CalibDb_Lsc_s { 1242 bool enable; 1243 bool damp_enable; 1244 CalibDb_AlscCof_t aLscCof; 1245 int tableAllNum; 1246 CalibDb_LscTableProfile_t *tableAll; //type CalibDb_LscTableProfile_t; 1247 } CalibDb_Lsc_t; 1248 1249 1250 typedef struct CalibDb_RKDM_s { 1251 unsigned char debayer_en; 1252 signed char debayer_filter1[5]; 1253 signed char debayer_filter2[5]; 1254 unsigned char debayer_gain_offset; 1255 int ISO[9]; 1256 unsigned char sharp_strength[9]; 1257 unsigned short debayer_hf_offset[9]; 1258 unsigned char debayer_offset; 1259 unsigned char debayer_clip_en; 1260 unsigned char debayer_filter_g_en; 1261 unsigned char debayer_filter_c_en; 1262 unsigned char debayer_thed0; 1263 unsigned char debayer_thed1; 1264 unsigned char debayer_dist_scale; 1265 unsigned char debayer_cnr_strength; 1266 unsigned char debayer_shift_num; 1267 } CalibDb_RKDM_t; 1268 1269 #define CCM_ILLUMINATION_MAX 7 1270 #define CCM_PROFILE_NAME ( 25U ) 1271 typedef char CalibDb_Ccm_ProfileName_t[CCM_PROFILE_NAME]; 1272 #define CCM_ILLUMINATION_NAME ( 20U ) 1273 // typedef char CalibDb_IlluminationName_t[CCM_ILLUMINATION_NAME]; 1274 #define CCM_PROFILES_NUM_MAX ( 5 ) 1275 #define CCM_RESOLUTIONS_NUM_MAX ( 4 ) 1276 #define CALIBDB_ISO_NUM ( 9 ) 1277 typedef enum Cam3ChColorComponent_e 1278 { 1279 CAM_3CH_COLOR_COMPONENT_RED = 0, 1280 CAM_3CH_COLOR_COMPONENT_GREEN = 1, 1281 CAM_3CH_COLOR_COMPONENT_BLUE = 2, 1282 CAM_3CH_COLOR_COMPONENT_MAX 1283 } Cam3ChColorComponent_t; 1284 1285 typedef struct CamSaturationCurve_s { 1286 uint16_t arraySize; 1287 float pSensorGain[4];//change to pointer 1288 float pSaturation[4]; 1289 } CamSaturationCurve_t; 1290 1291 typedef struct CalibDb_AccmCof_ill_s { 1292 char illuName[25]; 1293 float awbGain[2]; 1294 int matrixUsedNO; 1295 CalibDb_Ccm_ProfileName_t matrixUsed[CCM_PROFILES_NUM_MAX]; 1296 CamSaturationCurve_t saturationCurve; 1297 } CalibDb_AccmCof_ill_t; 1298 1299 typedef struct CalibDb_AccmCof_s { 1300 int illuNum; 1301 CalibDb_AccmCof_ill_t illAll[CCM_ILLUMINATION_MAX]; 1302 } CalibDb_AccmCof_t; 1303 1304 typedef struct CalibDb_CcmMatrixProfile_s 1305 { 1306 CalibDb_Ccm_ProfileName_t name; /**< profile name */ 1307 CalibDb_IlluminationName_t illumination; 1308 float saturation; /**< saturation value */ 1309 Cam3x3FloatMatrix_t CrossTalkCoeff; /**< CrossTalk matrix coefficients */ 1310 Cam1x3FloatMatrix_t CrossTalkOffset; /**< CrossTalk offsets */ 1311 } CalibDb_CcmMatrixProfile_t; 1312 1313 typedef struct CalibDb_LUMA_CCM_s { 1314 float rgb2y_para[3]; 1315 float low_bound_pos_bit; 1316 float y_alpha_curve[17]; 1317 int gain_scale_cure_size; 1318 float alpha_gain[9];//change to pointer 1319 float alpha_scale[9]; 1320 } CalibDb_LUMA_CCM_t; 1321 1322 typedef struct CalibDb_Ccm_ModeCell_s { 1323 bool valid; 1324 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 1325 bool damp_enable; 1326 CalibDb_AccmCof_t aCcmCof; 1327 CalibDb_LUMA_CCM_t luma_ccm; 1328 int matrixAllNum; 1329 CalibDb_CcmMatrixProfile_t matrixAll[CCM_RESOLUTIONS_NUM_MAX * CCM_ILLUMINATION_MAX * CCM_PROFILES_NUM_MAX]; //type CalibDb_CcmMatrixProfile_t; 1330 } CalibDb_Ccm_ModeCell_t; 1331 1332 typedef enum CalibDb_CcmHdrNormalMode_e { 1333 CCM_FOR_MODE_NORMAL = 0, 1334 CCM_FOR_MODE_HDR, 1335 CCM_FOR_MODE_MAX, 1336 } CalibDb_CcmHdrNormalMode_t; 1337 1338 1339 typedef struct CalibDb_Ccm_s { 1340 int modecellNum; 1341 bool enable; 1342 CalibDb_Ccm_ModeCell_t mode_cell[CCM_FOR_MODE_MAX]; 1343 } CalibDb_Ccm_t; 1344 1345 typedef struct CalibDb_UVNR_Params_s { 1346 char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH]; 1347 char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH]; 1348 float ISO[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1349 float step0_uvgrad_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1350 float step0_uvgrad_offset[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1351 float step1_nonMed1[4]; 1352 float step1_nonBf1[4]; 1353 float step1_downSample_w[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1354 float step1_downSample_h[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1355 float step1_downSample_meansize[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1356 float step1_median_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1357 float step1_median_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1358 float step1_median_IIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1359 float step1_bf_sigmaR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1360 float step1_bf_uvgain[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1361 float step1_bf_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1362 float step1_bf_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1363 float step1_bf_sigmaD[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1364 float step1_bf_isRowIIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1365 float step1_bf_isYcopy[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1366 float step2_nonExt_block[4]; 1367 float step2_nonMed[4]; 1368 float step2_nonBf[4]; 1369 float step2_downSample_w[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1370 float step2_downSample_h[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1371 float step2_downSample_meansize[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1372 float step2_median_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1373 float step2_median_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1374 float step2_median_IIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1375 float step2_bf_sigmaR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1376 float step2_bf_uvgain[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1377 float step2_bf_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1378 float step2_bf_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1379 float step2_bf_sigmaD[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1380 float step2_bf_isRowIIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1381 float step2_bf_isYcopy[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1382 float step3_nonBf3[4]; 1383 float step3_bf_sigmaR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1384 float step3_bf_uvgain[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1385 float step3_bf_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1386 float step3_bf_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1387 float step3_bf_sigmaD[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1388 float step3_bf_isRowIIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1389 float step3_bf_isYcopy[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1390 float kernel_3x3[3]; 1391 float kernel_5x5[5]; 1392 float kernel_9x9[8]; 1393 float kernel_9x9_num; 1394 float sigma_adj_luma[9]; 1395 float sigma_adj_ratio[9]; 1396 float threshold_adj_luma[9]; 1397 float threshold_adj_thre[9]; 1398 } CalibDb_UVNR_Params_t; 1399 1400 typedef struct CalibDb_UVNR_ModeCell_s { 1401 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 1402 CalibDb_UVNR_Params_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL]; 1403 } CalibDb_UVNR_ModeCell_t; 1404 1405 typedef struct CalibDb_UVNR_s { 1406 int enable; 1407 char version[64]; 1408 CalibDb_UVNR_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM]; 1409 } CalibDb_UVNR_t; 1410 1411 typedef struct CalibDb_UVNR_2_s { 1412 int enable; 1413 char version[64]; 1414 CalibDb_UVNR_ModeCell_t *mode_cell; 1415 int mode_num; 1416 } CalibDb_UVNR_2_t; 1417 1418 1419 typedef struct CalibDb_Gamma_s { 1420 unsigned char gamma_en; 1421 unsigned char gamma_out_segnum; 1422 unsigned char gamma_out_offset; 1423 float curve_normal[45]; 1424 float curve_hdr[45]; 1425 float curve_night[45]; 1426 } CalibDb_Gamma_t; 1427 1428 typedef struct CalibDb_Degamma_para_s { 1429 unsigned char degamma_scene_en; 1430 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 1431 float X_axis[CALIBDB_DEGAMMA_CRUVE_KNOTS]; 1432 float curve_R[CALIBDB_DEGAMMA_CRUVE_KNOTS]; 1433 float curve_G[CALIBDB_DEGAMMA_CRUVE_KNOTS]; 1434 float curve_B[CALIBDB_DEGAMMA_CRUVE_KNOTS]; 1435 } CalibDb_Degamma_para_t; 1436 1437 typedef struct CalibDb_Degamma_s { 1438 unsigned char degamma_en; 1439 CalibDb_Degamma_para_t mode[3]; 1440 } CalibDb_Degamma_t; 1441 1442 typedef struct CalibDb_YNR_ISO_s { 1443 float iso; 1444 double sigma_curve[5]; 1445 float ynr_lci[4]; 1446 float ynr_lhci[4]; 1447 float ynr_hlci[4]; 1448 float ynr_hhci[4]; 1449 float lo_lumaPoint[6]; 1450 float lo_lumaRatio[6]; 1451 float lo_directionStrength; 1452 float lo_bfScale[4]; 1453 float imerge_ratio; 1454 float imerge_bound; 1455 float denoise_weight[4]; 1456 float hi_lumaPoint[6]; 1457 float hi_lumaRatio[6]; 1458 float hi_bfScale[4]; 1459 float hwith_d[4]; 1460 float hi_denoiseStrength; 1461 float hi_detailMinAdjDnW; 1462 float hi_denoiseWeight[4]; 1463 float y_luma_point[6]; 1464 float hgrad_y_level1[6]; 1465 float hgrad_y_level2[6]; 1466 float hgrad_y_level3[6]; 1467 float hgrad_y_level4[6]; 1468 float hi_soft_thresh_scale[4]; 1469 } CalibDb_YNR_ISO_t; 1470 1471 typedef struct CalibDb_YNR_Setting_s { 1472 char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH]; 1473 char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH]; 1474 CalibDb_YNR_ISO_t ynr_iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1475 } CalibDb_YNR_Setting_t; 1476 1477 typedef struct CalibDb_YNR_ModeCell_s { 1478 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 1479 CalibDb_YNR_Setting_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL]; 1480 } CalibDb_YNR_ModeCell_t; 1481 1482 typedef struct CalibDb_YNR_s { 1483 int enable; 1484 char version[64]; 1485 CalibDb_YNR_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM]; 1486 } CalibDb_YNR_t; 1487 1488 typedef struct CalibDb_YNR_2_s { 1489 int enable; 1490 char version[64]; 1491 CalibDb_YNR_ModeCell_t *mode_cell; 1492 int mode_num; 1493 } CalibDb_YNR_2_t; 1494 1495 1496 typedef struct CalibDb_Gic_setting_v20_s { 1497 float iso[CALIBDB_ISO_NUM]; 1498 float min_busy_thre[CALIBDB_ISO_NUM]; 1499 float min_grad_thr1[CALIBDB_ISO_NUM]; 1500 float min_grad_thr2[CALIBDB_ISO_NUM] ; 1501 float k_grad1[CALIBDB_ISO_NUM]; 1502 float k_grad2[CALIBDB_ISO_NUM] ; 1503 float gb_thre[CALIBDB_ISO_NUM] ; 1504 float maxCorV[CALIBDB_ISO_NUM] ; 1505 float maxCorVboth[CALIBDB_ISO_NUM]; 1506 float dark_thre[CALIBDB_ISO_NUM]; 1507 float dark_threHi[CALIBDB_ISO_NUM]; 1508 float k_grad1_dark[CALIBDB_ISO_NUM]; 1509 float k_grad2_dark[CALIBDB_ISO_NUM] ; 1510 float min_grad_thr_dark1[CALIBDB_ISO_NUM]; 1511 float min_grad_thr_dark2[CALIBDB_ISO_NUM] ; 1512 float noiseCurve_0[CALIBDB_ISO_NUM]; 1513 float noiseCurve_1[CALIBDB_ISO_NUM]; 1514 float GValueLimitLo[CALIBDB_ISO_NUM] ; 1515 float GValueLimitHi[CALIBDB_ISO_NUM]; 1516 float textureStrength[CALIBDB_ISO_NUM] ; 1517 float ScaleLo[CALIBDB_ISO_NUM] ; 1518 float ScaleHi[CALIBDB_ISO_NUM] ; 1519 float globalStrength[CALIBDB_ISO_NUM]; 1520 float noise_coea[CALIBDB_ISO_NUM] ; 1521 float noise_coeb[CALIBDB_ISO_NUM]; 1522 float diff_clip[CALIBDB_ISO_NUM]; 1523 } CalibDb_Gic_setting_v20_t; 1524 1525 typedef struct CalibDb_Gic_ModeCell_v20_s { 1526 char scene[CALIBDB_MAX_MODE_NAME_LENGTH]; 1527 unsigned char gic_en; 1528 unsigned char edge_en; 1529 unsigned char gr_ration; 1530 unsigned char noise_cut_en; 1531 CalibDb_Gic_setting_v20_t setting; 1532 } CalibDb_Gic_ModeCell_v20_t; 1533 1534 typedef struct CalibDb_Gic_s { 1535 CalibDb_Gic_ModeCell_v20_t calib_v20[CALIBDB_MAX_MODE_NUM]; 1536 CalibDb_Gic_ModeCell_v20_t tuning_v20[CALIBDB_MAX_MODE_NUM]; 1537 } CalibDb_Gic_t; 1538 1539 struct CalibDb_awb_uv_ratio_s { 1540 char illum[9]; 1541 float ratio[2]; 1542 }; 1543 1544 struct CalibDb_MFNR_ISO_s { 1545 float iso; 1546 float weight_limit_y[4]; 1547 float weight_limit_uv[3]; 1548 float ratio_frq[4]; 1549 float luma_w_in_chroma[3]; 1550 double noise_curve[5]; 1551 double noise_curve_x00; 1552 float y_lo_noiseprofile[4]; 1553 float y_hi_noiseprofile[4]; 1554 float y_lo_denoiseweight[4]; 1555 float y_hi_denoiseweight[4]; 1556 float y_lo_bfscale[4]; 1557 float y_hi_bfscale[4]; 1558 float y_lumanrpoint[6]; 1559 float y_lumanrcurve[6]; 1560 float y_denoisestrength; 1561 float y_lo_lvl0_gfdelta[6]; 1562 float y_hi_lvl0_gfdelta[6]; 1563 float y_lo_lvl1_gfdelta[3]; 1564 float y_hi_lvl1_gfdelta[3]; 1565 float y_lo_lvl2_gfdelta[3]; 1566 float y_hi_lvl2_gfdelta[3]; 1567 float y_lo_lvl3_gfdelta[3]; 1568 float y_hi_lvl3_gfdelta[3]; 1569 float uv_lo_noiseprofile[3]; 1570 float uv_hi_noiseprofile[3]; 1571 float uv_lo_denoiseweight[3]; 1572 float uv_hi_denoiseweight[3]; 1573 float uv_lo_bfscale[3]; 1574 float uv_hi_bfscale[3]; 1575 float uv_lumanrpoint[6]; 1576 float uv_lumanrcurve[6]; 1577 float uv_denoisestrength; 1578 float uv_lo_lvl0_gfdelta[6]; 1579 float uv_hi_lvl0_gfdelta[6]; 1580 float uv_lo_lvl1_gfdelta[3]; 1581 float uv_hi_lvl1_gfdelta[3]; 1582 float uv_lo_lvl2_gfdelta[3]; 1583 float uv_hi_lvl2_gfdelta[3]; 1584 float lvl0_gfsigma[6]; 1585 float lvl1_gfsigma[3]; 1586 float lvl2_gfsigma[3]; 1587 float lvl3_gfsigma[3]; 1588 }; 1589 1590 typedef struct CalibDb_MFNR_Setting_s { 1591 char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH]; 1592 char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH]; 1593 struct CalibDb_MFNR_ISO_s mfnr_iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1594 } CalibDb_MFNR_Setting_t; 1595 1596 typedef struct CalibDb_MFNR_Dynamic_s { 1597 int enable; 1598 float lowth_iso; 1599 float lowth_time; 1600 float highth_iso; 1601 float highth_time; 1602 } CalibDb_MFNR_Dynamic_t; 1603 1604 typedef struct CalibDb_MFNR_Motion_s { 1605 int enable; 1606 float iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1607 float sigmaHScale[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1608 float sigmaLScale[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1609 float lightClp[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1610 float uvWeight[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1611 float mfnrSigmaScale[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1612 float yuvnrGainScale0[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1613 float yuvnrGainScale1[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1614 float yuvnrGainScale2[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1615 float reserved0[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1616 float reserved1[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1617 float reserved2[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1618 float reserved3[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1619 float reserved4[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1620 float reserved5[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1621 float reserved6[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1622 float reserved7[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1623 float frame_limit_uv[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1624 float frame_limit_y[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1625 } CalibDb_MFNR_Motion_t; 1626 1627 typedef struct CalibDb_MFNR_ModeCell_s { 1628 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 1629 CalibDb_MFNR_Setting_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL]; 1630 CalibDb_MFNR_Dynamic_t dynamic; 1631 CalibDb_MFNR_Motion_t motion; 1632 } CalibDb_MFNR_ModeCell_t; 1633 1634 typedef struct CalibDb_MFNR_s { 1635 int enable; 1636 char version[64]; 1637 unsigned char local_gain_en; 1638 unsigned char motion_detect_en; 1639 unsigned char mode_3to1; 1640 unsigned char max_level; 1641 unsigned char max_level_uv; 1642 unsigned char back_ref_num; 1643 struct CalibDb_awb_uv_ratio_s uv_ratio[4]; 1644 CalibDb_MFNR_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM]; 1645 } CalibDb_MFNR_t; 1646 1647 typedef struct CalibDb_MFNR_2_s { 1648 int enable; 1649 char version[64]; 1650 unsigned char local_gain_en; 1651 unsigned char motion_detect_en; 1652 unsigned char mode_3to1; 1653 unsigned char max_level; 1654 unsigned char max_level_uv; 1655 unsigned char back_ref_num; 1656 struct CalibDb_awb_uv_ratio_s uv_ratio[4]; 1657 CalibDb_MFNR_ModeCell_t *mode_cell; 1658 int mode_num; 1659 } CalibDb_MFNR_2_t; 1660 1661 1662 struct CalibDb_Sharp_ISO_s { 1663 float iso; 1664 float hratio; 1665 float lratio; 1666 float mf_sharp_ratio; 1667 float hf_sharp_ratio; 1668 float luma_sigma[8]; 1669 float pbf_gain; 1670 float pbf_ratio; 1671 float pbf_add; 1672 float mf_clip_pos[8]; 1673 float mf_clip_neg[8]; 1674 float hf_clip[8]; 1675 float mbf_gain; 1676 float hbf_gain; 1677 float hbf_ratio; 1678 float mbf_add; 1679 float hbf_add; 1680 float local_sharp_strength; 1681 float pbf_coeff_percent; 1682 float rf_m_coeff_percent; 1683 float rf_h_coeff_percent; 1684 float hbf_coeff_percent; 1685 }; 1686 1687 typedef struct CalibDb_Sharp_Setting_s { 1688 char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH]; 1689 char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH]; 1690 struct CalibDb_Sharp_ISO_s sharp_iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1691 } CalibDb_Sharp_Setting_t; 1692 1693 typedef struct CalibDb_Sharp_ModeCell_s { 1694 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 1695 float gauss_luma_coeff[9]; 1696 float mbf_coeff[221]; 1697 #if 0 1698 float pbf_coeff[9]; 1699 float rf_m_coeff[25]; 1700 float rf_h_coeff[25]; 1701 float hbf_coeff[9]; 1702 #else 1703 //v2 1704 float pbf_coeff_l[9]; 1705 float pbf_coeff_h[9]; 1706 float rf_m_coeff_l[25]; 1707 float rf_m_coeff_h[25]; 1708 float rf_h_coeff_l[25]; 1709 float rf_h_coeff_h[25]; 1710 float hbf_coeff_l[9]; 1711 float hbf_coeff_h[9]; 1712 #endif 1713 CalibDb_Sharp_Setting_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL]; 1714 } CalibDb_Sharp_ModeCell_t; 1715 1716 typedef struct CalibDb_Sharp_s { 1717 int enable; 1718 char version[64]; 1719 float luma_point[8]; 1720 CalibDb_Sharp_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM]; 1721 } CalibDb_Sharp_t; 1722 1723 typedef struct CalibDb_Sharp_2_s { 1724 int enable; 1725 char version[64]; 1726 float luma_point[8]; 1727 CalibDb_Sharp_ModeCell_t* mode_cell; 1728 int mode_num; 1729 } CalibDb_Sharp_2_t; 1730 1731 1732 struct CalibDb_EdgeFilter_ISO_s { 1733 float iso; 1734 float edge_thed; 1735 float src_wgt; 1736 unsigned char alpha_adp_en; 1737 float local_alpha; 1738 float global_alpha; 1739 float noise_clip[8]; 1740 float dog_clip_pos[8]; 1741 float dog_clip_neg[8]; 1742 float dog_alpha[8]; 1743 float direct_filter_coeff[5]; 1744 float dog_kernel_row0[5]; 1745 float dog_kernel_row1[5]; 1746 float dog_kernel_row2[5]; 1747 float dog_kernel_row3[5]; 1748 float dog_kernel_row4[5]; 1749 float dog_kernel_percent; 1750 }; 1751 1752 typedef struct CalibDb_EdgeFilter_Setting_s { 1753 char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH]; 1754 char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH]; 1755 struct CalibDb_EdgeFilter_ISO_s edgeFilter_iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL]; 1756 } CalibDb_EdgeFilter_Setting_t; 1757 1758 typedef struct CalibDb_EdgeFilter_ModeCell_s { 1759 char name[CALIBDB_MAX_MODE_NAME_LENGTH]; 1760 float dog_kernel_l[25]; 1761 float dog_kernel_h[25]; 1762 CalibDb_EdgeFilter_Setting_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL]; 1763 } CalibDb_EdgeFilter_ModeCell_t; 1764 1765 typedef struct CalibDb_EdgeFilter_s { 1766 int enable; 1767 char version[64]; 1768 float luma_point[8]; 1769 CalibDb_EdgeFilter_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM]; 1770 } CalibDb_EdgeFilter_t; 1771 1772 typedef struct CalibDb_EdgeFilter_2_s { 1773 int enable; 1774 char version[64]; 1775 float luma_point[8]; 1776 CalibDb_EdgeFilter_ModeCell_t *mode_cell; 1777 int mode_num; 1778 } CalibDb_EdgeFilter_2_t; 1779 1780 typedef struct CalibDb_IIR_setting_v20_s { 1781 float stab_fnum; 1782 float sigma; 1783 float wt_sigma; 1784 float air_sigma; 1785 float tmax_sigma; 1786 } CalibDb_IIR_setting_v20_t; 1787 1788 typedef struct CalibDb_Dehaze_Setting_v20_s { 1789 float en; 1790 float iso[9]; 1791 float dc_min_th[9]; 1792 float dc_max_th[9]; 1793 float yhist_th[9]; 1794 float yblk_th[9]; 1795 float dark_th[9]; 1796 float bright_min[9]; 1797 float bright_max[9]; 1798 float wt_max[9]; 1799 float air_min[9]; 1800 float air_max[9]; 1801 float tmax_base[9]; 1802 float tmax_off[9]; 1803 float tmax_max[9]; 1804 float cfg_wt[9]; 1805 float cfg_air[9]; 1806 float cfg_tmax[9]; 1807 float dc_thed[9]; 1808 float dc_weitcur[9]; 1809 float air_thed[9]; 1810 float air_weitcur[9]; 1811 CalibDb_IIR_setting_v20_t IIR_setting; 1812 } CalibDb_Dehaze_Setting_v20_t; 1813 1814 typedef struct CalibDb_Enhance_Setting_v20_s { 1815 float en; 1816 float iso[9]; 1817 float enhance_value[9]; 1818 } CalibDb_Enhance_Setting_v20_t; 1819 1820 typedef struct CalibDb_Hist_setting_v20_s { 1821 float en; 1822 float iso[9]; 1823 unsigned char hist_channel[9]; 1824 unsigned char hist_para_en[9]; 1825 float hist_gratio[9]; 1826 float hist_th_off[9]; 1827 float hist_k[9]; 1828 float hist_min[9]; 1829 float hist_scale[9]; 1830 float cfg_gratio[9]; 1831 } CalibDb_Hist_setting_v20_t; 1832 1833 typedef struct CalibDb_Dehaze_ModeCell_v20_s { 1834 char scene[CALIBDB_MAX_MODE_NAME_LENGTH]; 1835 float en; 1836 float cfg_alpha; 1837 CalibDb_Dehaze_Setting_v20_t dehaze_setting; 1838 CalibDb_Enhance_Setting_v20_t enhance_setting; 1839 CalibDb_Hist_setting_v20_t hist_setting; 1840 } CalibDb_Dehaze_ModeCell_v20_t; 1841 1842 typedef struct CalibDb_Dehaze_s { 1843 CalibDb_Dehaze_ModeCell_v20_t calib_v20[CALIBDB_MAX_MODE_NUM]; 1844 CalibDb_Dehaze_ModeCell_v20_t tuning_v20[CALIBDB_MAX_MODE_NUM]; 1845 1846 } CalibDb_Dehaze_t; 1847 1848 typedef enum CalibDb_Af_SearchDir_s { 1849 CAM_AFM_POSITIVE_SEARCH = 0, 1850 CAM_AFM_NEGATIVE_SEARCH = 1, 1851 CAM_AFM_ADAPTIVE_SEARCH = 2 1852 } CalibDb_Af_SearchDir_t; 1853 1854 typedef enum CalibDb_Af_SS_s { 1855 CAM_AFM_FSS_INVALID = 0, 1856 CAM_AFM_FSS_FULLRANGE = 1, /**< scan the full focus range to find the point of best focus */ 1857 CAM_AFM_FSS_HILLCLIMBING = 2, /**< use hillclimbing search */ 1858 CAM_AFM_FSS_ADAPTIVE_RANGE = 3, /**< similar to full range search, but with multiple subsequent scans 1859 with decreasing range and step size will be performed. */ 1860 CAM_AFM_FSS_MUTIWINDOW = 4, /**< search by muti-window statistics */ 1861 CAM_AFM_FSS_MAX 1862 } CalibDb_Af_SS_t; 1863 1864 typedef struct CalibDb_Af_Contrast_s { 1865 unsigned char enable; 1866 CalibDb_Af_SS_t Afss; /**< enumeration type for search strategy */ 1867 CalibDb_Af_SearchDir_t FullDir; 1868 unsigned char FullSteps; 1869 unsigned short FullRangeTbl[65]; /**< full range search table*/ 1870 CalibDb_Af_SearchDir_t AdaptiveDir; 1871 unsigned char AdaptiveSteps; 1872 unsigned short AdaptRangeTbl[65]; /**< adaptive range search table*/ 1873 float TrigThers; /**< AF trigger threshold */ 1874 float LumaTrigThers; 1875 1876 float StableThers; /**< AF stable threshold */ 1877 unsigned short StableFrames; /**< AF stable status must hold frames */ 1878 unsigned short StableTime; /**< AF stable status must hold time */ 1879 1880 unsigned char SceneDiffEnable; 1881 float SceneDiffThers; 1882 unsigned short SceneDiffBlkThers; 1883 float CenterSceneDiffThers; 1884 1885 float ValidMaxMinRatio; 1886 float ValidValueThers; 1887 1888 float OutFocusValue; /**< out of focus vlaue*/ 1889 unsigned short OutFocusPos; /**< out of focus position*/ 1890 1891 unsigned char WeightEnable; 1892 unsigned short Weight[225]; /**< weight */ 1893 1894 unsigned char SearchPauseLumaEnable; 1895 float SearchPauseLumaThers; 1896 unsigned short SearchLumaStableFrames; 1897 float SearchLumaStableThers; 1898 1899 float FlatValue; 1900 } CalibDb_Af_Contrast_t; 1901 1902 typedef struct CalibDb_Af_Laser_s { 1903 unsigned char enable; 1904 float vcmDot[7]; 1905 float distanceDot[7]; 1906 } CalibDb_Af_Laser_t; 1907 1908 typedef struct CalibDb_Af_Pdaf_s { 1909 unsigned char enable; 1910 } CalibDb_Af_Pdaf_t; 1911 1912 typedef struct CalibDb_Af_VcmCfg_s { 1913 int start_current; 1914 int rated_current; 1915 int step_mode; 1916 int extra_delay; 1917 } CalibDb_Af_VcmCfg_t; 1918 1919 typedef struct CalibDb_Af_MeasIsoCfg_s { 1920 int iso; 1921 unsigned short afmThres; 1922 unsigned short gammaY[17]; 1923 unsigned char gaussWeight[3]; 1924 } CalibDb_Af_MeasIsoCfg_t; 1925 1926 typedef struct CalibDb_Af_DefCode_s { 1927 unsigned char code; 1928 } CalibDb_Af_DefCode_t; 1929 1930 typedef struct CalibDb_Af_ZoomFocusTbl_s { 1931 int tbl_len; 1932 float focal_length[CALIBDB_ZOOM_FOCUS_TBL_SIZE]; 1933 int zoom_pos[CALIBDB_ZOOM_FOCUS_TBL_SIZE]; 1934 int focus_infpos[CALIBDB_ZOOM_FOCUS_TBL_SIZE]; 1935 int focus_macropos[CALIBDB_ZOOM_FOCUS_TBL_SIZE]; 1936 } CalibDb_Af_ZoomFocusTbl_t; 1937 1938 typedef struct CalibDb_AF_s { 1939 signed char af_mode; 1940 unsigned short win_h_offs; 1941 unsigned short win_v_offs; 1942 unsigned short win_h_size; 1943 unsigned short win_v_size; 1944 CalibDb_Af_DefCode_t fixed_mode; 1945 CalibDb_Af_DefCode_t macro_mode; 1946 CalibDb_Af_DefCode_t infinity_mode; 1947 CalibDb_Af_Contrast_t contrast_af; 1948 CalibDb_Af_Laser_t laser_af; 1949 CalibDb_Af_Pdaf_t pdaf; 1950 CalibDb_Af_VcmCfg_t vcmcfg; 1951 CalibDb_Af_MeasIsoCfg_t measiso_cfg[CALIBDB_MAX_ISO_LEVEL]; 1952 CalibDb_Af_ZoomFocusTbl_t zoomfocus_tbl; 1953 } CalibDb_AF_t; 1954 1955 typedef struct CalibDb_ORB_s { 1956 unsigned char orb_en; 1957 } CalibDb_ORB_t; 1958 1959 typedef struct CalibDb_LUMA_DETECT_s { 1960 unsigned char luma_detect_en; 1961 int fixed_times; 1962 float mutation_threshold; 1963 float mutation_threshold_level2; 1964 } CalibDb_LUMA_DETECT_t; 1965 1966 typedef struct CalibDb_FEC_s { 1967 unsigned char fec_en; 1968 char meshfile[256]; 1969 int correct_level; 1970 double light_center[2]; // light center 1971 double coefficient[4]; // the distortion coefficient of the fisheye lens 1972 } CalibDb_FEC_t; 1973 1974 typedef struct CalibDb_EIS_s { 1975 unsigned char eis_en; 1976 // TODO(Cody): Add EIS specific calib data 1977 } CalibDb_EIS_t; 1978 1979 typedef struct CalibDb_LDCH_s { 1980 unsigned char ldch_en; 1981 char meshfile[256]; 1982 int correct_level; 1983 int correct_level_max; 1984 double light_center[2]; // light center 1985 double coefficient[4]; // the distortion coefficient of the fisheye lens 1986 } CalibDb_LDCH_t; 1987 typedef struct { 1988 bool enable; 1989 unsigned short look_up_table_r[729]; 1990 unsigned short look_up_table_g[729]; 1991 unsigned short look_up_table_b[729]; 1992 } CalibDb_Lut3d_t; 1993 1994 typedef struct { 1995 bool support_en; 1996 RKAiqOPMode_t dcg_optype; 1997 Cam1x3IntMatrix_t dcg_mode; 1998 float dcg_ratio; 1999 bool gainCtrl_en; 2000 bool envCtrl_en; 2001 bool sync_switch; 2002 float lcg2hcg_gain_th; 2003 float lcg2hcg_env_th; 2004 float hcg2lcg_gain_th; 2005 float hcg2lcg_env_th; 2006 } CalibDb_Dcg_Params_t; 2007 2008 typedef struct { 2009 CalibDb_Dcg_Params_t Hdr; 2010 CalibDb_Dcg_Params_t Normal; 2011 } CalibDb_Dcg_t; 2012 2013 typedef struct { 2014 uint8_t support_en; 2015 /* default mode 2016 * 0: auto 2017 * 1: manual 2018 */ 2019 int32_t mode; 2020 /* force gray if cpsl on */ 2021 uint8_t gray; 2022 /* default cpsl source 2023 * 0: led 2024 * 1: ir 2025 * 2: mix 2026 */ 2027 int32_t lght_src; 2028 /* auto mode default params */ 2029 float ajust_sens; 2030 uint32_t sw_interval; 2031 uint32_t on2off_th; 2032 uint32_t off2on_th; 2033 /* manual mode default params */ 2034 uint8_t cpsl_on; 2035 float strength; 2036 } CalibDb_Cpsl_t; 2037 2038 typedef struct { 2039 int time_delay; 2040 int gain_delay; 2041 int dcg_delay; 2042 } CalibDb_ExpDelay_t; 2043 2044 typedef struct { 2045 CalibDb_ExpDelay_t Hdr; 2046 CalibDb_ExpDelay_t Normal; 2047 } CalibDb_ExpDelay_comb_t; 2048 2049 typedef struct { 2050 #define HDR_MODE_2_FRAME_STR "MODE_2_FRAME" 2051 #define HDR_MODE_2_LINE_STR "MODE_2_LINE" 2052 #define HDR_MODE_3_FRAME_STR "MODE_3_FRAME" 2053 #define HDR_MODE_3_LINE_STR "MODE_3_LINE" 2054 #define HDR_LINE_MODE_DCG_STR "DCG" 2055 #define HDR_LINE_MODE_STAGGER_STR "STAGGER" 2056 2057 unsigned char hdr_en; 2058 rk_aiq_isp_hdr_mode_t hdr_mode; 2059 rk_aiq_sensor_hdr_line_mode_t line_mode; 2060 CalibDb_Dcg_t dcg; 2061 CalibDb_ExpDelay_comb_t exp_delay; 2062 } CalibDb_System_t; 2063 2064 typedef struct { 2065 char parse_version[16]; 2066 char date[16]; 2067 char author[32]; 2068 char sensor_name[32]; 2069 char sample_name[64]; 2070 char gen_verion[16]; 2071 uint32_t magic_code; 2072 } CalibDb_Header_t; 2073 2074 typedef struct CalibDb_ColorAsGrey_s { 2075 int enable; 2076 } CalibDb_ColorAsGrey_t; 2077 2078 2079 typedef struct CalibDb_cProc_s { 2080 uint8_t enable; 2081 uint8_t brightness; 2082 uint8_t contrast; 2083 uint8_t saturation; 2084 uint8_t hue; 2085 } CalibDb_cProc_t; 2086 2087 typedef struct CalibDb_IE_s { 2088 int enable; 2089 int mode; 2090 } CalibDb_IE_t; 2091 2092 typedef struct CamCalibDbContextIsp20_s { 2093 CalibDb_Header_t header; 2094 struct list_head awb_calib_para_v200; 2095 struct list_head awb_adjust_para; 2096 CalibDb_Lut3d_t lut3d; 2097 CalibDb_Aec_Para_t aec; 2098 CalibDb_AF_t af; 2099 CalibDb_Amerge_Para_t amerge; 2100 CalibDb_Atmo_Para_t atmo; 2101 CalibDb_Blc_t blc; 2102 CalibDb_Dpcc_t dpcc; 2103 CalibDb_BayerNr_2_t bayerNr; 2104 CalibDb_Lsc_t lsc; 2105 CalibDb_RKDM_t dm; 2106 CalibDb_Ccm_t ccm; 2107 CalibDb_UVNR_2_t uvnr; 2108 CalibDb_Gamma_t gamma; 2109 CalibDb_Degamma_t degamma; 2110 CalibDb_YNR_2_t ynr; 2111 CalibDb_Gic_t gic; 2112 CalibDb_MFNR_2_t mfnr; 2113 CalibDb_Sharp_2_t sharp; 2114 CalibDb_EdgeFilter_2_t edgeFilter; 2115 CalibDb_Dehaze_t dehaze; 2116 CalibDb_FEC_t afec; 2117 CalibDb_EIS_t aeis; 2118 CalibDb_LDCH_t aldch; 2119 CalibDb_LUMA_DETECT_t lumaDetect; 2120 CalibDb_ORB_t orb; 2121 CalibDb_Sensor_Para_t sensor; 2122 CalibDb_Module_Info_t module; 2123 CalibDb_Cpsl_t cpsl; 2124 CalibDb_ColorAsGrey_t colorAsGrey; 2125 CalibDb_cProc_t cProc; 2126 CalibDb_IE_t ie; 2127 CalibDb_System_t sysContrl; 2128 } CamCalibDbContextIsp20_t; 2129 2130 #pragma pack() 2131 2132 #endif 2133