/* 
 | 
 * awb_head.h 
 | 
 * 
 | 
 *  Copyright (c) 2021 Rockchip Corporation 
 | 
 * 
 | 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 | 
 * you may not use this file except in compliance with the License. 
 | 
 * You may obtain a copy of the License at 
 | 
 * 
 | 
 *      http://www.apache.org/licenses/LICENSE-2.0 
 | 
 * 
 | 
 * Unless required by applicable law or agreed to in writing, software 
 | 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 | 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 | 
 * See the License for the specific language governing permissions and 
 | 
 * limitations under the License. 
 | 
 * 
 | 
 */ 
 | 
  
 | 
#ifndef __CALIBDBV2_AWB_HEADER_H__ 
 | 
#define __CALIBDBV2_AWB_HEADER_H__ 
 | 
  
 | 
#include "rk_aiq_comm.h" 
 | 
  
 | 
RKAIQ_BEGIN_DECLARE 
 | 
  
 | 
#define CALD_AWB_WINDOW_NUM_MAX 8 
 | 
#define CALD_AWB_EXCRANGE_NUM_MAX 7 
 | 
#define CALD_AWB_LV_NUM_MAX 16 
 | 
#define CALD_AWB_ILLUMINATION_NAME       ( 20U ) 
 | 
#define CALD_AWB_GRID_NUM_TOTAL 225 
 | 
  
 | 
typedef enum CalibDbV2_Awb_Down_Scale_Mode_e { 
 | 
  CALIB_AWB_DS_4X4 = 0, 
 | 
  CALIB_AWB_DS_8X8 = 1, 
 | 
} CalibDbV2_Awb_Down_Scale_Mode_t; 
 | 
  
 | 
typedef enum CalibDbV2_Awb_Blk_Stat_Mode_V21_e { 
 | 
  CALIB_AWB_BLK_STAT_MODE_ALL_V201 = 0, 
 | 
  CALIB_AWB_BLK_STAT_MODE_REALWP_V201 = 1, 
 | 
} CalibDbV2_Awb_Blk_Stat_Mode_V21_t; 
 | 
  
 | 
typedef enum CalibDbV2_Awb_Blk_Stat_Mode_V20_e { 
 | 
  CALIB_AWB_BLK_STAT_MODE_ALL_V200 = 1, 
 | 
  CALIB_AWB_BLK_STAT_MODE_UVWP_V200 = 2, 
 | 
  CALIB_AWB_BLK_STAT_MODE_XYWP_V200 = 3, 
 | 
} CalibDbV2_Awb_Blk_Stat_Mode_V20_t; 
 | 
  
 | 
  
 | 
typedef enum CalibDbV2_Awb_Ext_Range_Domain_e { 
 | 
  CALIB_AWB_EXTRA_RANGE_DOMAIN_UV = 0, 
 | 
  CALIB_AWB_EXTRA_RANGE_DOMAIN_XY = 1 
 | 
} CalibDbV2_Awb_Ext_Range_Domain_t; 
 | 
  
 | 
typedef enum CalibDbV2_Awb_Ext_Range_Mode_s { 
 | 
  CALIB_AWB_EXCLUDE_WP_MODE = 1, 
 | 
  CALIB_AWB_EXTTRA_LIGHT_SOURCES_MODE = 3, 
 | 
} CalibDbV2_Awb_Ext_Range_Mode_t; 
 | 
  
 | 
typedef struct CalibDbV2_ExtRange_s { 
 | 
  // M4_ENUM_DESC("domain", "CalibDbV2_Awb_Ext_Range_Domain_t", "CALIB_AWB_EXTRA_RANGE_DOMAIN_UV") 
 | 
  CalibDbV2_Awb_Ext_Range_Domain_t domain;/*0uv domain,1 xy domain*/ 
 | 
  // M4_ENUM_DESC("mode", "CalibDbV2_Awb_Ext_Range_Mode_t", "CALIB_AWB_EXCLUDE_WP_MODE") 
 | 
  CalibDbV2_Awb_Ext_Range_Mode_t mode; 
 | 
  // M4_ARRAY_DESC("region", "s32", M4_SIZE(1,4), M4_RANGE(-8192, 8191), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  int region[4]; 
 | 
} CalibDbV2_ExtRange_t; 
 | 
  
 | 
typedef struct CalibDbV2_Yuv3D_Range_Ill_s { 
 | 
  // M4_NUMBER_DESC("b_uv", "s32", M4_RANGE(-65536,65535), "0", M4_DIGIT(0), M4_HIDE(1)) 
 | 
  int b_uv;           //17+0 s 
 | 
  // M4_NUMBER_DESC("slope_inv_neg_uv", "s32", M4_RANGE(-262144,262143), "0", M4_DIGIT(0)) 
 | 
  int slope_inv_neg_uv; //9+10s //-1/k 
 | 
  // M4_NUMBER_DESC("slope_factor_uv", "s32", M4_RANGE(-16384,16383), "0", M4_DIGIT(0), M4_HIDE(1)) 
 | 
  int slope_factor_uv; //1+14s // 1/(-1/k+k) 
 | 
  // M4_NUMBER_DESC("slope_ydis", "s32", M4_RANGE(-262144,262143), "0", M4_DIGIT(0), M4_HIDE(1)) 
 | 
  int slope_ydis;     //9+10s //k 
 | 
  // M4_NUMBER_DESC("b_ydis", "s32", M4_RANGE(-65536,65535), "0", M4_DIGIT(0), M4_HIDE(1)) 
 | 
  int b_ydis;         //17+0s 
 | 
  // M4_NUMBER_DESC("ref_v", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0), M4_HIDE(1)) 
 | 
  unsigned char ref_v;//8u 
 | 
  // M4_ARRAY_DESC("dis", "u16", M4_SIZE(1,6), M4_RANGE(0,4095), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  unsigned short  dis[6];//8+4 u 
 | 
  // M4_ARRAY_DESC("th", "u8", M4_SIZE(1,6), M4_RANGE(0,255), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  unsigned char th[6]; //8u 
 | 
} CalibDbV2_Yuv3D_Range_Ill_t; 
 | 
  
 | 
typedef struct CalibDbV2_Yuv3D_2_Range_Ill_s { 
 | 
  // M4_ARRAY_DESC("thcurve_u", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  float thcurve_u[6]; 
 | 
  // M4_ARRAY_DESC("thcure_th", "f32", M4_SIZE(1,6), M4_RANGE(0,8), "0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float thcure_th[6]; 
 | 
  // M4_ARRAY_DESC("lineVector", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "0", M4_DIGIT(4), M4_DYNAMIC(0), M4_HIDE(1)) 
 | 
  float lineVector[6]; 
 | 
  // M4_NUMBER_DESC("disP1P2", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0), M4_HIDE(1)) 
 | 
  unsigned char disP1P2; 
 | 
} CalibDbV2_Yuv3D_2_Range_Ill_t; 
 | 
  
 | 
typedef struct CalibDbV2_Tcs_Range_Ill_s { 
 | 
  // M4_ARRAY_DESC("normal", "f32", M4_SIZE(1,4), M4_RANGE(-8,8), "0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float normal[4]; 
 | 
  // M4_ARRAY_DESC("big", "f32", M4_SIZE(1,4), M4_RANGE(-8,8), "0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float big[4]; 
 | 
  // M4_ARRAY_DESC("small", "f32", M4_SIZE(1,4), M4_RANGE(-8,8), "0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float small[4]; 
 | 
} CalibDbV2_Tcs_Range_Ill_t; 
 | 
  
 | 
typedef struct CalibDbV2_Tcs_Range_Ill2_s { 
 | 
  // M4_ARRAY_DESC("normal", "f32", M4_SIZE(1,4), M4_RANGE(-8,8), "0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float normal[4]; 
 | 
  // M4_ARRAY_DESC("big", "f32", M4_SIZE(1,4), M4_RANGE(-8,8), "0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float big[4]; 
 | 
} CalibDbV2_Tcs_Range_Ill2_t; 
 | 
  
 | 
typedef struct CalibDbV2_Uv_Range_Ill_s { 
 | 
  // M4_ARRAY_DESC("u", "f32", M4_SIZE(1,4), M4_RANGE(0,255), "0", M4_DIGIT(1), M4_DYNAMIC(0)) 
 | 
  float  u[4]; 
 | 
  // M4_ARRAY_DESC("v", "f32", M4_SIZE(1,4), M4_RANGE(0,255), "0", M4_DIGIT(1), M4_DYNAMIC(0)) 
 | 
  float  v[4]; 
 | 
} CalibDbV2_Uv_Range_Ill_t; 
 | 
  
 | 
typedef enum CalibDbV2_Awb_DoorType_e { 
 | 
  CALIB_AWB_DOOR_TYPE_INDOOR = 1, 
 | 
  CALIB_AWB_DOOR_TYPE_AMBIGUITY = 2, 
 | 
  CALIB_AWB_DOOR_TYPE_OUTDOOR = 3, 
 | 
} CalibDbV2_Awb_DoorType_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Light_V20_s { 
 | 
  // M4_STRING_DESC("name", M4_SIZE(1,1), M4_RANGE(0, 16), "default", M4_DYNAMIC(0)) 
 | 
  char* name; 
 | 
  // M4_ENUM_DESC("doorType", "CalibDbV2_Awb_DoorType_t", "CALIB_AWB_DOOR_TYPE_AMBIGUITY") 
 | 
  CalibDbV2_Awb_DoorType_t doorType; 
 | 
  // M4_ARRAY_DESC("standardGainValue", "f32", M4_SIZE(1,4), M4_RANGE(0,4), "1.0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float standardGainValue[4]; 
 | 
  // M4_ARRAY_TABLE_DESC("uvRegion", "array_table_ui", M4_INDEX_DEFAULT) 
 | 
  CalibDbV2_Uv_Range_Ill_t uvRegion; 
 | 
  // M4_ARRAY_TABLE_DESC("xyRegion", "array_table_ui", M4_INDEX_DEFAULT) 
 | 
  CalibDbV2_Tcs_Range_Ill_t xyRegion; 
 | 
  // M4_STRUCT_DESC("yuvRegion", "normal_ui_style") 
 | 
  CalibDbV2_Yuv3D_Range_Ill_t   yuvRegion; 
 | 
  // M4_ARRAY_DESC("staWeight", "u8", M4_SIZE(1,16), M4_RANGE(0,100), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  unsigned char staWeight[CALD_AWB_LV_NUM_MAX]; 
 | 
  // M4_ARRAY_DESC("dayGainLvThSet", "u32", M4_SIZE(1,2), M4_RANGE(0,255000), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  unsigned int dayGainLvThSet[2]; 
 | 
  // M4_ARRAY_DESC("defaultDayGainLow", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float defaultDayGainLow[4];//spatial gain 
 | 
  // M4_ARRAY_DESC("defaultDayGainHigh", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float defaultDayGainHigh[4]; 
 | 
  // M4_BOOL_DESC("xyType2Enable", "1", M4_HIDE(1)) 
 | 
  bool  xyType2Enable; 
 | 
} CalibDbV2_Awb_Light_V20_t; 
 | 
  
 | 
typedef enum CalibDb_Window_Mode_e { 
 | 
  CALIB_AWB_WINDOW_CFG_AUTO = 0, 
 | 
  CALIB_AWB_WINDOW_CFG_FIXED, 
 | 
} CalibDb_Window_Mode_t; 
 | 
  
 | 
typedef struct CalibDbV2_StatWindow_s { 
 | 
  // M4_ENUM_DESC("mode", "CALIB_AWB_WINDOW_CFG_AUTO", "CALIB_AWB_WINDOW_CFG_AUTO") 
 | 
  CalibDb_Window_Mode_t mode; 
 | 
  // M4_ARRAY_DESC("window", "f32", M4_SIZE(1,4), M4_RANGE(0,100), "[0,0,1,1]", M4_DIGIT(2), M4_DYNAMIC(0)) 
 | 
  float window[4];//percent 100% ,between[0,100] 
 | 
} CalibDbV2_StatWindow_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Cct_Clip_Cfg_s { 
 | 
  // M4_BOOL_DESC("enable", "0") 
 | 
  bool enable; 
 | 
  // M4_ARRAY_DESC("cct", "f32", M4_SIZE(1,5), M4_RANGE(0,10000), "0", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  float* cct; 
 | 
  int cct_len; 
 | 
  // M4_ARRAY_DESC("cri_bound_up", "f32", M4_SIZE(1,5), M4_RANGE(0,1), "0", M4_DIGIT(4), M4_DYNAMIC(1)) 
 | 
  float* cri_bound_up; 
 | 
  int cri_bound_up_len; 
 | 
  // M4_ARRAY_DESC("cri_bound_low", "f32", M4_SIZE(1,5), M4_RANGE(0,1), "0", M4_DIGIT(4), M4_DYNAMIC(1)) 
 | 
  float* cri_bound_low; 
 | 
  int cri_bound_low_len; 
 | 
} CalibDbV2_Awb_Cct_Clip_Cfg_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Cct_DaylightClip_Cfg_s { 
 | 
  // M4_BOOL_DESC("enable", "0") 
 | 
  bool  enable; 
 | 
  // M4_NUMBER_DESC("outdoor_cct_min", "f32", M4_RANGE(0,10000), "5000", M4_DIGIT(0)) 
 | 
  float outdoor_cct_min; 
 | 
} CalibDbV2_Awb_Cct_DaylightClip_Cfg_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Limit_Range_s { 
 | 
  // M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,5), M4_RANGE(0,255000), "0", M4_DIGIT(1), M4_DYNAMIC(1)) 
 | 
  float *lumaValue; 
 | 
  int lumaValue_len; 
 | 
  // M4_ARRAY_DESC("maxR", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "230", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  unsigned short *maxR; 
 | 
  int maxR_len; 
 | 
  // M4_ARRAY_DESC("minR", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "3", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  unsigned short *minR; 
 | 
  int minR_len; 
 | 
  // M4_ARRAY_DESC("maxG", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "230", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  unsigned short *maxG; 
 | 
  int maxG_len; 
 | 
  // M4_ARRAY_DESC("minG", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "3", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  unsigned short *minG; 
 | 
  int minG_len; 
 | 
  // M4_ARRAY_DESC("maxB", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "230", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  unsigned short *maxB; 
 | 
  int maxB_len; 
 | 
  // M4_ARRAY_DESC("minB", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "3", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  unsigned short *minB; 
 | 
  int minB_len; 
 | 
  // M4_ARRAY_DESC("maxY", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "230", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  unsigned short *maxY; 
 | 
  int maxY_len; 
 | 
  // M4_ARRAY_DESC("minY", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "3", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  unsigned short *minY; 
 | 
  int minY_len; 
 | 
} CalibDbV2_Awb_Limit_Range_t; 
 | 
  
 | 
typedef struct CalibDbV2_Rgb2Tcs_s { 
 | 
  // M4_ARRAY_DESC("pseudoLuminanceWeight", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "0.3", M4_DIGIT(6), M4_DYNAMIC(0)) 
 | 
  float pseudoLuminanceWeight[3]; 
 | 
  // M4_ARRAY_DESC("rotationMat", "f32", M4_SIZE(3,3), M4_RANGE(0,1), "0.3", M4_DIGIT(6), M4_DYNAMIC(0)) 
 | 
  float rotationMat[9]; 
 | 
} CalibDbV2_Rgb2Tcs_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Sgc_Cblk_s { 
 | 
  // M4_NUMBER_DESC("index", "u16", M4_RANGE(1,24), "1", M4_DIGIT(0)) 
 | 
  unsigned short index; 
 | 
  // M4_NUMBER_DESC("meanC", "f32", M4_RANGE(0,255), "0", M4_DIGIT(6)) 
 | 
  float meanC; 
 | 
  // M4_NUMBER_DESC("meanH", "f32", M4_RANGE(-180,180), "0", M4_DIGIT(6)) 
 | 
  float meanH; 
 | 
} CalibDbV2_Awb_Sgc_Cblk_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Sgc_Ls_s { 
 | 
  // M4_STRING_DESC("name", M4_SIZE(1,1), M4_RANGE(0, 16), "default", M4_DYNAMIC(0)) 
 | 
  char* name; 
 | 
  // M4_NUMBER_DESC("RGain", "f32", M4_RANGE(0,8), "1", M4_DIGIT(6)) 
 | 
  float RGain; 
 | 
  // M4_NUMBER_DESC("BGain", "f32", M4_RANGE(0,8), "1", M4_DIGIT(6)) 
 | 
  float BGain; 
 | 
} CalibDbV2_Awb_Sgc_Ls_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Sgc_s { 
 | 
  // M4_BOOL_DESC("enable", "0") 
 | 
  bool enable; 
 | 
  // M4_STRUCT_LIST_DESC("colorBlock", M4_SIZE(1,24), "normal_ui_style") 
 | 
  CalibDbV2_Awb_Sgc_Cblk_t *colorBlock; 
 | 
  int colorBlock_len; 
 | 
  // M4_STRUCT_LIST_DESC("lsUsedForEstimation", M4_SIZE(1,7), "normal_ui_style") 
 | 
  CalibDbV2_Awb_Sgc_Ls_t *lsUsedForEstimation; 
 | 
  int lsUsedForEstimation_len; 
 | 
  // M4_NUMBER_DESC("alpha", "f32", M4_RANGE(0,1), "1", M4_DIGIT(4)) 
 | 
  float alpha; 
 | 
} CalibDbV2_Awb_Sgc_t; 
 | 
  
 | 
typedef enum CalibDbV2_Awb_Hdr_Fr_Ch_Mode_e { 
 | 
  CALIB_AWB_HDR_FRAME_CHOOSE_MODE_MANUAL = 0, 
 | 
  CALIB_AWB_HDR_FRAME_CHOOSE_MODE_AUTO 
 | 
} CalibDbV2_Awb_Hdr_Fr_Ch_Mode_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Hdr_Fr_Ch_s { 
 | 
  // M4_ENUM_DESC("frameChooseMode", "CalibDbV2_Awb_Hdr_Fr_Ch_Mode_t", "CALIB_AWB_HDR_FRAME_CHOOSE_MODE_AUTO") 
 | 
  CalibDbV2_Awb_Hdr_Fr_Ch_Mode_t frameChooseMode; 
 | 
  // M4_NUMBER_DESC("frameChoose", "u8", M4_RANGE(0,2), "1", M4_DIGIT(0)) 
 | 
  unsigned char frameChoose; 
 | 
} CalibDbV2_Awb_Hdr_Fr_Ch_t; 
 | 
  
 | 
typedef enum CalibDbV2_Awb_Mul_Win_Mode_e { 
 | 
  CALIB_AWB_WIN_USELESS = 0, 
 | 
  CALIB_AWB_WIN_EXTRAWP = 1, 
 | 
  CALIB_AWB_WIN_WEIGHTWP = 2, 
 | 
} CalibDbV2_Awb_Mul_Win_Mode_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Mul_Win_s { 
 | 
  // M4_BOOL_DESC("enable", "1") 
 | 
  bool  enable; 
 | 
  // M4_ENUM_DESC("multiwindowMode", "CalibDbV2_Awb_Mul_Win_Mode_t", "CALIB_AWB_WIN_USELESS") 
 | 
  CalibDbV2_Awb_Mul_Win_Mode_t multiwindowMode; 
 | 
  // M4_ARRAY_DESC("window", "u16", M4_SIZE(8,4), M4_RANGE(0,8191), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  float window[CALD_AWB_WINDOW_NUM_MAX][4];//8  windows in pixel domain ,hOffset,vOffser,hSize,vSize; 
 | 
  // M4_ARRAY_DESC("weight", "u16", M4_SIZE(8,4), M4_RANGE(0,10), "0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float weight;//weight for 8  windows; 
 | 
} CalibDbV2_Awb_Mul_Win_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Awb_Div_WpTh_s{ 
 | 
  //  M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,5), M4_RANGE(0,255000), "0", M4_DIGIT(1), M4_DYNAMIC(1)) 
 | 
  float *lumaValue; 
 | 
  int lumaValue_len; 
 | 
  // M4_ARRAY_DESC("low", "f32", M4_SIZE(1,5), M4_RANGE(0,100000), "0", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  float *low; 
 | 
  int low_len; 
 | 
  // M4_ARRAY_DESC("high", "f32", M4_SIZE(1,5), M4_RANGE(0,100000), "0", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  float *high; 
 | 
  int high_len; 
 | 
}CalibDbV2_Wb_Awb_Div_WpTh_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Awb_Div_s { 
 | 
  // M4_NUMBER_DESC("lumaValThLow", "u32", M4_RANGE(0, 255000), "0", M4_DIGIT(0)) 
 | 
  unsigned int lumaValThLow; 
 | 
  // M4_NUMBER_DESC("lumaValThLow2", "u32", M4_RANGE(0, 255000), "0", M4_DIGIT(0)) 
 | 
  unsigned int lumaValThLow2; 
 | 
  // M4_NUMBER_DESC("lumaValThHigh", "u32", M4_RANGE(0, 255000), "0", M4_DIGIT(0)) 
 | 
  unsigned int lumaValThHigh; 
 | 
  // M4_NUMBER_DESC("lumaValThHigh2", "u32", M4_RANGE(0, 255000), "0", M4_DIGIT(0)) 
 | 
  unsigned int lumaValThHigh2; 
 | 
  // M4_ARRAY_TABLE_DESC("wpNumTh", "array_table_ui", M4_INDEX_DEFAULT) 
 | 
  CalibDbV2_Wb_Awb_Div_WpTh_t wpNumTh; 
 | 
} CalibDbV2_Wb_Awb_Div_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Awb_Caga_s { 
 | 
  // M4_BOOL_DESC("enable", "1") 
 | 
  bool enable; 
 | 
  // M4_ARRAY_DESC("targetGain", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float targetGain[4];//cagaTargetGain 
 | 
  // M4_NUMBER_DESC("laCalcFactor", "f32", M4_RANGE(0, 255), "0", M4_DIGIT(4)) 
 | 
  float laCalcFactor; 
 | 
} CalibDbV2_Wb_Awb_Caga_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Awb_Prob_Calc_Dis_s { 
 | 
  // M4_NUMBER_DESC("proDis_THH", "f32", M4_RANGE(0, 8), "0", M4_DIGIT(4)) 
 | 
  float proDis_THH; //threshold for distance probality calculation// rename to do 
 | 
  // M4_NUMBER_DESC("proDis_THL", "f32", M4_RANGE(0, 8), "0", M4_DIGIT(4)) 
 | 
  float proDis_THL; 
 | 
} CalibDbV2_Wb_Awb_Prob_Calc_Dis_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Awb_Prob_Calc_Lv_s { 
 | 
  // M4_NUMBER_DESC("outdoorLumaValThLow", "u32", M4_RANGE(0, 255000), "0", M4_DIGIT(0)) 
 | 
  unsigned int outdoorLumaValThLow; 
 | 
  // M4_NUMBER_DESC("outdoorLumaValThHigh", "u32", M4_RANGE(0, 255000), "0", M4_DIGIT(0)) 
 | 
  unsigned int outdoorLumaValThHigh;// threshold for luminance probality calculation 
 | 
} CalibDbV2_Wb_Awb_Prob_Calc_Lv_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Awb_Prob_Calc_Wp_s { 
 | 
  // M4_NUMBER_DESC("wpNumPercTh", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(6)) 
 | 
  float  wpNumPercTh; 
 | 
  // M4_NUMBER_DESC("wpNumPercTh2", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(6)) 
 | 
  float  wpNumPercTh2; 
 | 
} CalibDbV2_Wb_Awb_Prob_Calc_Wp_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Awb_Convg_s { 
 | 
  // M4_NUMBER_DESC("varThforUnDamp", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(4)) 
 | 
  float  varThforUnDamp; 
 | 
  // M4_NUMBER_DESC("varThforDamp", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(4)) 
 | 
  float  varThforDamp; 
 | 
} CalibDbV2_Wb_Awb_Convg_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Tolerance_s { 
 | 
  // M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,4), M4_RANGE(0,255000), "0", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  float* lumaValue; 
 | 
  int lumaValue_len; 
 | 
  // M4_ARRAY_DESC("toleranceValue", "f32", M4_SIZE(1,4), M4_RANGE(0,1), "0", M4_DIGIT(4), M4_DYNAMIC(1)) 
 | 
  float* toleranceValue; 
 | 
  int toleranceValue_len; 
 | 
}  CalibDbV2_Awb_Tolerance_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_runinterval_s { 
 | 
  // M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,4), M4_RANGE(0,255000), "0", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  float *lumaValue; 
 | 
  int lumaValue_len; 
 | 
  // M4_ARRAY_DESC("intervalValue", "f32", M4_SIZE(1,4), M4_RANGE(0,255), "0", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  float *intervalValue; 
 | 
  int intervalValue_len; 
 | 
}  CalibDbV2_Awb_runinterval_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_DampFactor_s { 
 | 
  // M4_NUMBER_DESC("dFStep", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(4)) 
 | 
  float dFStep; 
 | 
  // M4_NUMBER_DESC("dFMin", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(4)) 
 | 
  float dFMin; 
 | 
  // M4_NUMBER_DESC("dFMax", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(4)) 
 | 
  float dFMax; 
 | 
  // M4_NUMBER_DESC("lvIIRsize", "u32", M4_RANGE(0, 128), "0", M4_DIGIT(0)) 
 | 
  int lvIIRsize; 
 | 
  // M4_NUMBER_DESC("lvVarTh", "f32", M4_RANGE(0, 100), "0", M4_DIGIT(4)) 
 | 
  float lvVarTh; 
 | 
} CalibDbV2_Awb_DampFactor_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Cct_Lut_Cfg_Lv_s { 
 | 
  // M4_NUMBER_DESC("lumaValue", "f32", M4_RANGE(0, 255000), "0", M4_DIGIT(0)) 
 | 
  float lumaValue; 
 | 
  // M4_NUMBER_DESC("ct_grid_num", "s32", M4_RANGE(0, 32), "0", M4_DIGIT(0)) 
 | 
  int ct_grid_num; 
 | 
  // M4_NUMBER_DESC("cri_grid_num", "s32", M4_RANGE(0, 32), "0", M4_DIGIT(0)) 
 | 
  int cri_grid_num; 
 | 
  // M4_ARRAY_DESC("ct_in_range", "f32", M4_SIZE(1,2), M4_RANGE(0,10000), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  float ct_in_range[2];//min,max, equal distance sapmle 
 | 
  // M4_ARRAY_DESC("cri_in_range", "f32", M4_SIZE(1,2), M4_RANGE(-2,2), "0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float cri_in_range[2];//min,max 
 | 
  // M4_ARRAY_DESC("ct_lut_out", "f32", M4_SIZE(9,7), M4_RANGE(0,10000), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  float *ct_lut_out; 
 | 
  int ct_lut_out_len; 
 | 
  // M4_ARRAY_DESC("cri_lut_out", "f32", M4_SIZE(9,7), M4_RANGE(-2,2), "0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float *cri_lut_out; 
 | 
  int cri_lut_out_len; 
 | 
} CalibDbV2_Awb_Cct_Lut_Cfg_Lv_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_GainAdjust_s { 
 | 
  // M4_BOOL_DESC("enable", "1") 
 | 
  bool enable; 
 | 
  // M4_STRUCT_LIST_DESC("lutAll", M4_SIZE(1,8), "normal_ui_style") 
 | 
  CalibDbV2_Awb_Cct_Lut_Cfg_Lv_t *lutAll; 
 | 
  int lutAll_len; 
 | 
} CalibDbV2_Awb_GainAdjust_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Remosaic_Para_s { 
 | 
  // M4_BOOL_DESC("enable", "1") 
 | 
  bool enable; 
 | 
  // M4_BOOL_DESC("applyInvWbGainEnable", "1") 
 | 
  bool applyInvWbGainEnable; 
 | 
  // M4_ARRAY_DESC("sensorWbGain", "f32", M4_SIZE(1,4), M4_RANGE(0,4), "1", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float sensorWbGain[4]; 
 | 
} CalibDbV2_Awb_Remosaic_Para_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_xyRegion_stable_WpTh_s { 
 | 
    // M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,5), M4_RANGE(0,255000), "0", M4_DIGIT(1), M4_DYNAMIC(1)) 
 | 
    float *lumaValue; 
 | 
    int lumaValue_len; 
 | 
    // M4_ARRAY_DESC("forBigType", "f32", M4_SIZE(1,5), M4_RANGE(0,100000), "0", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
    float *forBigType; 
 | 
    int forBigType_len; 
 | 
    // M4_ARRAY_DESC("forExtraType", "f32", M4_SIZE(1,5), M4_RANGE(0,100000), "0", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
    float *forExtraType; 
 | 
    int forExtraType_len; 
 | 
} CalibDbV2_Awb_xyRegion_stable_WpTh_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_xyRegion_stable_s { 
 | 
  // M4_BOOL_DESC("enable", "1") 
 | 
  bool enable; 
 | 
  //  M4_ARRAY_TABLE_DESC("wpNumTh", "array_table_ui", M4_INDEX_DEFAULT) 
 | 
  CalibDbV2_Awb_xyRegion_stable_WpTh_t wpNumTh; 
 | 
  // M4_NUMBER_DESC("xyTypeListSize", "s32", M4_RANGE(0, 65535), "0", M4_DIGIT(0)) 
 | 
  int xyTypeListSize;// xyTypeListSize ==0 will disable this function 
 | 
  // M4_NUMBER_DESC("varianceLumaTh", "f32", M4_RANGE(0, 100), "0", M4_DIGIT(4)) 
 | 
  float varianceLumaTh; 
 | 
} CalibDbV2_Awb_xyRegion_stable_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_gain_offset_cfg_s{ 
 | 
  // M4_BOOL_DESC("enable", "1") 
 | 
  bool enable; 
 | 
  // M4_ARRAY_DESC("offset", "f32", M4_SIZE(1,4), M4_RANGE(-8,8), "0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float offset[4]; 
 | 
}CalibDbV2_Awb_gain_offset_cfg_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Awb_Ext_Com_Para_t{ 
 | 
  // M4_STRING_DESC("lightSourceForFirstFrame", M4_SIZE(1,1), M4_RANGE(-128, 127), "default", M4_DYNAMIC(0)) 
 | 
  char *lightSourceForFirstFrame; 
 | 
  // M4_ARRAY_TABLE_DESC("tolerance", "array_table_ui", M4_INDEX_DEFAULT) 
 | 
  CalibDbV2_Awb_Tolerance_t tolerance;//wb gain diff th for awb gain update, set 0 to disable this function 
 | 
  // M4_ARRAY_TABLE_DESC("runInterval", "array_table_ui", M4_INDEX_DEFAULT) 
 | 
  CalibDbV2_Awb_runinterval_t runInterval; 
 | 
  // M4_STRUCT_DESC("dampFactor", "normal_ui_style") 
 | 
  CalibDbV2_Awb_DampFactor_t dampFactor; 
 | 
  // M4_STRUCT_DESC("wbGainAdjust", "normal_ui_style") 
 | 
  CalibDbV2_Awb_GainAdjust_t wbGainAdjust; 
 | 
  // M4_STRUCT_DESC("wbGainDaylightClip", "normal_ui_style") 
 | 
  CalibDbV2_Awb_Cct_DaylightClip_Cfg_t wbGainDaylightClip; 
 | 
  // M4_STRUCT_DESC("wbGainClip", "normal_ui_style") 
 | 
  CalibDbV2_Awb_Cct_Clip_Cfg_t wbGainClip; 
 | 
  // M4_STRUCT_DESC("division", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Awb_Div_t division; 
 | 
  // M4_ARRAY_DESC("defaultNightGain", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float defaultNightGain[4]; 
 | 
  // M4_ARRAY_DESC("lumaValueMatrix", "u32", M4_SIZE(1,16), M4_RANGE(0,255000), "1", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  unsigned int lumaValueMatrix[CALD_AWB_LV_NUM_MAX]; 
 | 
  // M4_ARRAY_DESC("defaultNightGainWeight", "u8", M4_SIZE(1,16), M4_RANGE(0,100), "1", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  unsigned char defaultNightGainWeight[CALD_AWB_LV_NUM_MAX]; 
 | 
  // M4_STRUCT_DESC("probCalcDis", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Awb_Prob_Calc_Dis_t probCalcDis; 
 | 
  // M4_STRUCT_DESC("probCalcLv", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Awb_Prob_Calc_Lv_t probCalcLv; 
 | 
  // M4_STRUCT_DESC("probCalcWp", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Awb_Prob_Calc_Wp_t probCalcWp; 
 | 
  // M4_STRUCT_DESC("converged", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Awb_Convg_t converged; 
 | 
  // M4_STRUCT_DESC("xyRegionStableSelection", "normal_ui_style") 
 | 
  CalibDbV2_Awb_xyRegion_stable_t xyRegionStableSelection; 
 | 
  // M4_ARRAY_DESC("weightForNightGainCalc", "u8", M4_SIZE(1,16), M4_RANGE(0,100), "1", M4_DIGIT(0), M4_DYNAMIC(1)) 
 | 
  unsigned char *weightForNightGainCalc; 
 | 
  int weightForNightGainCalc_len; 
 | 
  // M4_STRUCT_DESC("singleColorProces", "normal_ui_style") 
 | 
  CalibDbV2_Awb_Sgc_t singleColorProces; 
 | 
  // M4_ARRAY_DESC("lineRgBg", "f32", M4_SIZE(1,3), M4_RANGE(-2147483648,2147483647), "1", M4_DIGIT(4), M4_DYNAMIC(0), M4_HIDE(1)) 
 | 
  float lineRgBg[3]; 
 | 
  // M4_ARRAY_DESC("lineRgProjCCT", "f32", M4_SIZE(1,3), M4_RANGE(-2147483648,2147483647), "1", M4_DIGIT(4), M4_DYNAMIC(0), M4_HIDE(1)) 
 | 
  float lineRgProjCCT[3]; 
 | 
  // M4_STRUCT_DESC("chrAdpttAdj", "normal_ui_style", M4_HIDE(1)) 
 | 
  CalibDbV2_Wb_Awb_Caga_t chrAdpttAdj; 
 | 
  // M4_STRUCT_DESC("remosaicCfg", "normal_ui_style") 
 | 
  CalibDbV2_Awb_Remosaic_Para_t remosaicCfg; 
 | 
  // M4_STRUCT_DESC("wbGainOffset", "normal_ui_style") 
 | 
  CalibDbV2_Awb_gain_offset_cfg_t wbGainOffset; 
 | 
} CalibDbV2_Wb_Awb_Ext_Com_Para_t; 
 | 
  
 | 
  
 | 
typedef struct CalibDbV2_Wb_Awb_Para_V20_t { 
 | 
  // M4_STRUCT_DESC("hdrPara", "normal_ui_style") 
 | 
  CalibDbV2_Awb_Hdr_Fr_Ch_t hdrPara; 
 | 
  // M4_BOOL_DESC("lscBypassEnable", "0"); 
 | 
  bool                lscBypassEnable; 
 | 
  // M4_BOOL_DESC("uvDetectionEnable", "1"); 
 | 
  bool                uvDetectionEnable; 
 | 
  // M4_BOOL_DESC("xyDetectionEnable", "1"); 
 | 
  bool                xyDetectionEnable; 
 | 
  // M4_BOOL_DESC("yuvDetectionEnable", "1"); 
 | 
  bool                yuvDetectionEnable; 
 | 
  // CXF CHECK 
 | 
  // M4_STRING_DESC("lsUsedForYuvDet", M4_SIZE(1,7), M4_RANGE(-128,127), "light", M4_DYNAMIC(1), M4_HIDE(1)); 
 | 
  char**              lsUsedForYuvDet; 
 | 
  int                 lsUsedForYuvDet_len; 
 | 
  // M4_NUMBER_DESC("yuvDetRef_u", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0), M4_HIDE(1)) 
 | 
  unsigned char yuvDetRef_u;          //8u //cxf3333 
 | 
  // M4_ENUM_DESC("downScaleMode", "CalibDbV2_Awb_Down_Scale_Mode_t","CALIB_AWB_DS_4X4"); 
 | 
  CalibDbV2_Awb_Down_Scale_Mode_t downScaleMode; 
 | 
  // M4_ENUM_DESC("blkMeasureMode", "CalibDbV2_Awb_Blk_Stat_Mode_V20_t","CALIB_AWB_BLK_STAT_MODE_ALL_V200"); 
 | 
  CalibDbV2_Awb_Blk_Stat_Mode_V20_t blkMeasureMode; 
 | 
  // M4_STRUCT_DESC("mainWindow", "normal_ui_style") 
 | 
  CalibDbV2_StatWindow_t mainWindow; 
 | 
  // M4_ARRAY_TABLE_DESC("limitRange", "array_table_ui", M4_INDEX_DEFAULT) 
 | 
  CalibDbV2_Awb_Limit_Range_t limitRange; 
 | 
  // M4_STRUCT_DESC("rgb2TcsPara", "normal_ui_style", M4_HIDE(1)) 
 | 
  CalibDbV2_Rgb2Tcs_t rgb2TcsPara; 
 | 
  // M4_STRUCT_DESC("multiWindow", "normal_ui_style") 
 | 
  CalibDbV2_Awb_Mul_Win_t  multiWindow; 
 | 
  // M4_STRUCT_LIST_DESC("extraWpRange", M4_SIZE(1,7), "normal_ui_style") 
 | 
  CalibDbV2_ExtRange_t extraWpRange[CALD_AWB_EXCRANGE_NUM_MAX]; 
 | 
  // M4_STRUCT_LIST_DESC("lightSources", M4_SIZE(1,7), "normal_ui_style") 
 | 
  CalibDbV2_Awb_Light_V20_t* lightSources; 
 | 
  int   lightSources_len; 
 | 
} CalibDbV2_Wb_Awb_Para_V20_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Luma_Weight_Enable_Th_s { 
 | 
  // M4_NUMBER_DESC("wpDiffWeiNoTh", "f32", M4_RANGE(0,1), "0", M4_DIGIT(4)) 
 | 
  float wpDiffWeiNoTh; 
 | 
  // M4_NUMBER_DESC("wpDiffWeiLvValueTh", "u32", M4_RANGE(0,255000), "0", M4_DIGIT(0)) 
 | 
  unsigned int   wpDiffWeiLvValueTh; 
 | 
} CalibDbV2_Awb_Luma_Weight_Enable_Th_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Luma_Weight_Lv_Ratio_s { 
 | 
  // M4_NUMBER_DESC("ratioValue", "f32", M4_RANGE(0,1), "0", M4_DIGIT(4)) 
 | 
  float ratioValue; 
 | 
  // M4_ARRAY_DESC("weight", "f32", M4_SIZE(1,9), M4_RANGE(0,1), "0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float weight[9] ; 
 | 
} CalibDbV2_Awb_Luma_Weight_Lv_Ratio_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Luma_Weight_Lv_s { 
 | 
  // M4_NUMBER_DESC("LvValue", "f32", M4_RANGE(0,255000), "0", M4_DIGIT(0)) 
 | 
  float LvValue; 
 | 
  // M4_STRUCT_LIST_DESC("ratioSet", M4_SIZE(1,4), "normal_ui_style") 
 | 
  CalibDbV2_Awb_Luma_Weight_Lv_Ratio_t* ratioSet; 
 | 
  int ratioSet_len; 
 | 
} CalibDbV2_Awb_Luma_Weight_Lv_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Luma_Weight_s { 
 | 
  //with differernt luma ,the different weight in WP sum 
 | 
  // M4_BOOL_DESC("lscBypassEnable", "0"); 
 | 
  bool enable; 
 | 
  // M4_STRUCT_DESC("wpDiffWeiEnableTh", "normal_ui_style") 
 | 
  CalibDbV2_Awb_Luma_Weight_Enable_Th_t wpDiffWeiEnableTh; 
 | 
  // M4_ARRAY_DESC("wpDiffwei_y", "u8", M4_SIZE(1,9), M4_RANGE(0,255), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  unsigned char wpDiffwei_y[9]; 
 | 
  // M4_ARRAY_DESC("perfectBin", "u8", M4_SIZE(1,8), M4_RANGE(0,1), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  unsigned char  perfectBin[8];// true means the luma is appropriate 
 | 
  // M4_STRUCT_LIST_DESC("wpDiffWeightLvSet", M4_SIZE(1,4), "normal_ui_style") 
 | 
  CalibDbV2_Awb_Luma_Weight_Lv_t* wpDiffWeightLvSet; 
 | 
  int wpDiffWeightLvSet_len; 
 | 
} CalibDbV2_Awb_Luma_Weight_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Light_V21_s { 
 | 
  // M4_STRING_DESC("name", M4_SIZE(1,1), M4_RANGE(0, 32), "default", M4_DYNAMIC(0)) 
 | 
  char* name; 
 | 
  // M4_ENUM_DESC("doorType", "CalibDbV2_Awb_DoorType_t", "CALIB_AWB_DOOR_TYPE_AMBIGUITY") 
 | 
  CalibDbV2_Awb_DoorType_t doorType; 
 | 
  // M4_ARRAY_DESC("standardGainValue", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float standardGainValue[4]; 
 | 
  // M4_ARRAY_TABLE_DESC("uvRegion", "array_table_ui", M4_INDEX_DEFAULT) 
 | 
  CalibDbV2_Uv_Range_Ill_t uvRegion; 
 | 
  // M4_ARRAY_TABLE_DESC("xyRegion", "array_table_ui", M4_INDEX_DEFAULT) 
 | 
  CalibDbV2_Tcs_Range_Ill2_t xyRegion; 
 | 
  // M4_STRUCT_DESC("rtYuvRegion", "normal_ui_style") 
 | 
  CalibDbV2_Yuv3D_2_Range_Ill_t rtYuvRegion; 
 | 
  // M4_ARRAY_DESC("staWeight", "u8", M4_SIZE(1,16), M4_RANGE(0,100), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  unsigned char staWeight[CALD_AWB_LV_NUM_MAX]; 
 | 
  // M4_ARRAY_DESC("dayGainLvThSet", "u8", M4_SIZE(1,2), M4_RANGE(0,255000), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  unsigned int dayGainLvThSet[2]; 
 | 
  // M4_ARRAY_DESC("defaultDayGainLow", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float defaultDayGainLow[4];//spatial gain 
 | 
  // M4_ARRAY_DESC("defaultDayGainHigh", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float defaultDayGainHigh[4]; 
 | 
  // M4_NUMBER_DESC("xyType2Enable", "u8", M4_RANGE(0,1), "1", M4_DIGIT(0), M4_HIDE(1)) 
 | 
  unsigned char xyType2Enable; 
 | 
} CalibDbV2_Awb_Light_V21_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Awb_Para_V21_t { 
 | 
  // M4_STRUCT_DESC("hdrPara", "normal_ui_style") 
 | 
  CalibDbV2_Awb_Hdr_Fr_Ch_t hdrPara;//hdrFrameChoose; 
 | 
  // M4_BOOL_DESC("lscBypassEnable", "0"); 
 | 
  bool                lscBypassEnable; 
 | 
  // M4_BOOL_DESC("uvDetectionEnable", "0"); 
 | 
  bool                uvDetectionEnable; 
 | 
  // M4_BOOL_DESC("xyDetectionEnable", "0"); 
 | 
  bool                xyDetectionEnable; 
 | 
  // M4_BOOL_DESC("yuvDetectionEnable", "0"); 
 | 
  bool                yuvDetectionEnable; 
 | 
  // M4_STRING_DESC("lsUsedForYuvDet", M4_SIZE(1,7), M4_RANGE(0, 16), "default", M4_DYNAMIC(1), M4_HIDE(1)) 
 | 
  char** lsUsedForYuvDet; 
 | 
  int                 lsUsedForYuvDet_len; 
 | 
  // M4_BOOL_DESC("blkStatisticsEnable", "0"); 
 | 
  bool                blkStatisticsEnable; 
 | 
  // M4_ENUM_DESC("downScaleMode", "CalibDbV2_Awb_Down_Scale_Mode_t", "CALIB_AWB_DS_8X8") 
 | 
  CalibDbV2_Awb_Down_Scale_Mode_t       downScaleMode; 
 | 
  // M4_ENUM_DESC("blkMeasureMode", "CalibDbV2_Awb_Blk_Stat_Mode_V21_t", "CALIB_AWB_BLK_STAT_MODE_REALWP_V201") 
 | 
  CalibDbV2_Awb_Blk_Stat_Mode_V21_t      blkMeasureMode; 
 | 
  // M4_STRUCT_DESC("mainWindow", "normal_ui_style") 
 | 
  CalibDbV2_StatWindow_t mainWindow; 
 | 
  // M4_ARRAY_TABLE_DESC("limitRange", "array_table_ui", M4_INDEX_DEFAULT) 
 | 
  CalibDbV2_Awb_Limit_Range_t limitRange; 
 | 
  // M4_STRUCT_DESC("rgb2TcsPara", "normal_ui_style", M4_HIDE(1)) 
 | 
  CalibDbV2_Rgb2Tcs_t rgb2TcsPara; 
 | 
  // M4_ARRAY_DESC("rgb2RotationYuvMat", "f32", M4_SIZE(4,4), M4_RANGE(-255,255), "0", M4_DIGIT(6), M4_DYNAMIC(0), M4_HIDE(1)) 
 | 
  float rgb2RotationYuvMat[16]; 
 | 
  //several winow in uv or xy domain 
 | 
  // M4_STRUCT_LIST_DESC("extraWpRange", M4_SIZE(1,7), "normal_ui_style") 
 | 
  CalibDbV2_ExtRange_t extraWpRange[CALD_AWB_EXCRANGE_NUM_MAX]; 
 | 
  // M4_STRUCT_DESC("wpDiffLumaWeight", "normal_ui_style") 
 | 
  CalibDbV2_Awb_Luma_Weight_t wpDiffLumaWeight; 
 | 
  // M4_BOOL_DESC("wpDiffBlkWeiEnable", "0"); 
 | 
  bool           wpDiffBlkWeiEnable; 
 | 
  // M4_ARRAY_DESC("wpDiffBlkWeight", "u16", M4_SIZE(15,15), M4_RANGE(0,63), "0", M4_DIGIT(0), M4_DYNAMIC(0)) 
 | 
  unsigned short wpDiffBlkWeight[CALD_AWB_GRID_NUM_TOTAL]; 
 | 
  // M4_STRUCT_LIST_DESC("lightSources", M4_SIZE(1,7), "normal_ui_style") 
 | 
  CalibDbV2_Awb_Light_V21_t* lightSources; 
 | 
  int lightSources_len; 
 | 
} CalibDbV2_Wb_Awb_Para_V21_t; 
 | 
  
 | 
typedef enum CalibDbV2_Wb_Mwb_Mode_e { 
 | 
  CALIB_MWB_MODE_CCT                  = 1,        /**< run manual white balance by cct*/ 
 | 
  CALIB_MWB_MODE_WBGAIN               = 2,        /**< run manual white balance by wbgain*/ 
 | 
  CALIB_MWB_MODE_SCENE                = 3,       /**< run manual white balance by scene selection*/ 
 | 
} CalibDbV2_Wb_Mwb_Mode_t; 
 | 
  
 | 
typedef enum CalibDbV2_Wb_Mwb_Scene_e { 
 | 
  CALIB_WB_SCENE_INCANDESCENT = 0, 
 | 
  CALIB_WB_SCENE_FLUORESCENT, 
 | 
  CALIB_WB_SCENE_WARM_FLUORESCENT, 
 | 
  CALIB_WB_SCENE_DAYLIGHT, 
 | 
  CALIB_WB_SCENE_CLOUDY_DAYLIGHT, 
 | 
  CALIB_WB_SCENE_TWILIGHT, 
 | 
  CALIB_WB_SCENE_SHADE 
 | 
} CalibDbV2_Wb_Mwb_Scene_t; 
 | 
  
 | 
typedef struct CalibDbV2_Awb_Cct_s { 
 | 
  // M4_NUMBER_DESC("CCT", "f32", M4_RANGE(0,10000), "5000", M4_DIGIT(0)) 
 | 
  float CCT; 
 | 
  // CXF CHECK 
 | 
  // M4_NUMBER_DESC("CCRI", "f32", M4_RANGE(-2,2), "0", M4_DIGIT(3)) 
 | 
  float CCRI; 
 | 
} CalibDbV2_Awb_Cct_t; 
 | 
typedef struct CalibDbV2_Wb_Mwb_Cfg_Para_s{ 
 | 
  // M4_ARRAY_DESC("mwbGain", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1.0", M4_DIGIT(4), M4_DYNAMIC(0)) 
 | 
  float mwbGain[4]; 
 | 
  // M4_ENUM_DESC("scene", "CalibDbV2_Wb_Mwb_Scene_t", "CALIB_WB_SCENE_DAYLIGHT"); 
 | 
  CalibDbV2_Wb_Mwb_Scene_t scene; 
 | 
  // M4_STRUCT_DESC("cct", "normal_ui_style") 
 | 
  CalibDbV2_Awb_Cct_t cct; 
 | 
}CalibDbV2_Wb_Mwb_Cfg_Para_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Mwb_Para_s { 
 | 
  // M4_ENUM_DESC("mode", "CalibDbV2_Wb_Mwb_Mode_t", "CALIB_MWB_MODE_WBGAIN"); 
 | 
  CalibDbV2_Wb_Mwb_Mode_t mode; 
 | 
  // M4_STRUCT_DESC("cfg", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Mwb_Cfg_Para_t cfg; 
 | 
} CalibDbV2_Wb_Mwb_Para_t; 
 | 
  
 | 
typedef enum CalibDbV2_Wb_Op_Mode_e { 
 | 
  CALIB_WB_MODE_MANUAL                      = 0,        /**< run manual white balance */ 
 | 
  CALIB_WB_MODE_AUTO                        = 1,        /**< run auto white balance */ 
 | 
} CalibDbV2_Wb_Op_Mode_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Para_t { 
 | 
  // M4_BOOL_DESC("byPass", "0"); 
 | 
  bool byPass; 
 | 
  // M4_ENUM_DESC("mode", "CalibDbV2_Wb_Op_Mode_t", "CALIB_WB_MODE_AUTO"); 
 | 
  CalibDbV2_Wb_Op_Mode_t mode;//replace awbEnable 
 | 
} CalibDbV2_Wb_Para_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Para_V20_s { 
 | 
  // M4_STRUCT_DESC("control", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Para_t control; 
 | 
  // M4_STRUCT_DESC("manualPara", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Mwb_Para_t manualPara; 
 | 
  // M4_STRUCT_DESC("autoPara", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Awb_Para_V20_t autoPara; 
 | 
  // M4_STRUCT_DESC("autoExtPara", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Awb_Ext_Com_Para_t autoExtPara; 
 | 
} CalibDbV2_Wb_Para_V20_t; 
 | 
  
 | 
typedef struct CalibDbV2_Wb_Para_V21_s { 
 | 
  // M4_STRUCT_DESC("control", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Para_t control; 
 | 
  // M4_STRUCT_DESC("manualPara", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Mwb_Para_t manualPara; 
 | 
  // M4_STRUCT_DESC("autoPara", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Awb_Para_V21_t autoPara; 
 | 
  // M4_STRUCT_DESC("autoExtPara", "normal_ui_style") 
 | 
  CalibDbV2_Wb_Awb_Ext_Com_Para_t autoExtPara; 
 | 
} CalibDbV2_Wb_Para_V21_t; 
 | 
  
 | 
RKAIQ_END_DECLARE 
 | 
  
 | 
#endif 
 |