/* * 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