You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
763 lines
52 KiB
763 lines
52 KiB
#include "awb_xml2json.h"
|
|
#include "RkAiqCalibApi.h"
|
|
|
|
void CalibV2AwbV21Free(CamCalibDbV2Context_t *calibV2)
|
|
{
|
|
CalibDbV2_Wb_Para_V21_t* wb_v21 =
|
|
(CalibDbV2_Wb_Para_V21_t*)(CALIBDBV2_GET_MODULE_PTR(calibV2, wb_v21));
|
|
if(wb_v21 == NULL){
|
|
return;
|
|
}
|
|
CalibDbV2_Wb_Awb_Ext_Com_Para_t *commV21 = &wb_v21->autoExtPara;
|
|
CalibDbV2_Wb_Awb_Para_V21_t* autoParaV21 = &wb_v21->autoPara;
|
|
free(commV21->lightSourceForFirstFrame);
|
|
free(commV21->wbGainClip.cct);
|
|
free(commV21->wbGainClip.cri_bound_up);
|
|
free(commV21->wbGainClip.cri_bound_low);
|
|
free(commV21->singleColorProces.colorBlock);
|
|
for(int i=0;i<commV21->singleColorProces.lsUsedForEstimation_len;i++){
|
|
free(commV21->singleColorProces.lsUsedForEstimation[i].name);
|
|
}
|
|
free(commV21->singleColorProces.lsUsedForEstimation);
|
|
free(commV21->tolerance.toleranceValue);
|
|
free(commV21->tolerance.lumaValue);
|
|
free(commV21->runInterval.intervalValue);
|
|
free(commV21->runInterval.lumaValue);
|
|
for(int i=0;i<commV21->wbGainAdjust.lutAll_len;i++){
|
|
free(commV21->wbGainAdjust.lutAll[i].ct_lut_out);
|
|
free(commV21->wbGainAdjust.lutAll[i].cri_lut_out);
|
|
}
|
|
free(commV21->wbGainAdjust.lutAll);
|
|
free(commV21->weightForNightGainCalc);
|
|
free(commV21->division.wpNumTh.high);
|
|
free(commV21->division.wpNumTh.low);
|
|
free(commV21->division.wpNumTh.lumaValue);
|
|
free(commV21->xyRegionStableSelection.wpNumTh.lumaValue);
|
|
free(commV21->xyRegionStableSelection.wpNumTh.forBigType);
|
|
free(commV21->xyRegionStableSelection.wpNumTh.forExtraType);
|
|
for(int i=0;i<autoParaV21->lsUsedForYuvDet_len;i++){
|
|
free(autoParaV21->lsUsedForYuvDet[i]);
|
|
}
|
|
free(autoParaV21->lsUsedForYuvDet);
|
|
for(int i=0;i<autoParaV21->lightSources_len;i++){
|
|
free(autoParaV21->lightSources[i].name);
|
|
}
|
|
free(autoParaV21->lightSources);
|
|
free(autoParaV21->limitRange.lumaValue);
|
|
free(autoParaV21->limitRange.maxB);
|
|
free(autoParaV21->limitRange.maxR);
|
|
free(autoParaV21->limitRange.maxG);
|
|
free(autoParaV21->limitRange.maxY);
|
|
free(autoParaV21->limitRange.minB);
|
|
free(autoParaV21->limitRange.minR);
|
|
free(autoParaV21->limitRange.minG);
|
|
free(autoParaV21->limitRange.minY);
|
|
}
|
|
void convertCalib2calibV21(const CamCalibDbContext_t *calib,CamCalibDbV2Context_t *calibV2)
|
|
{
|
|
const CalibDb_Awb_Calib_Para_V201_t *awb_calib_v21 = NULL;
|
|
|
|
list_head *awb_calib_para_list =
|
|
(list_head*)CALIBDB_GET_MODULE_PTR((void*)calib, awb_calib_para_v201);
|
|
|
|
if (awb_calib_para_list)
|
|
GetAwbProfileFromAwbCalibV201ListByIdx(awb_calib_para_list, 0, &awb_calib_v21);
|
|
else
|
|
return;
|
|
|
|
const CalibDb_Awb_Adjust_Para_t *awb_adjust = NULL;
|
|
|
|
list_head *awb_adjust_list =
|
|
(list_head*)CALIBDB_GET_MODULE_PTR((void*)calib, awb_adjust_para);
|
|
|
|
if (awb_adjust_list)
|
|
GetAwbProfileFromAwbAdjustListByIdx(awb_adjust_list, 0, &awb_adjust);
|
|
else
|
|
return;
|
|
|
|
CalibDbV2_Wb_Para_V21_t* wb_v21 =
|
|
(CalibDbV2_Wb_Para_V21_t*)(CALIBDBV2_GET_MODULE_PTR(calibV2, wb_v21));
|
|
memset(wb_v21, 0, sizeof(CalibDbV2_Wb_Para_V21_t));
|
|
CalibDbV2_Wb_Awb_Ext_Com_Para_t *commV21 = &wb_v21->autoExtPara;
|
|
CalibDbV2_Wb_Awb_Para_V21_t* autoParaV21 = &wb_v21->autoPara;
|
|
commV21->lightSourceForFirstFrame= (char*)malloc(sizeof(char)*CALD_AWB_ILLUMINATION_NAME);
|
|
commV21->wbGainClip.cct_len = awb_calib_v21->cct_clip_cfg.grid_num;
|
|
commV21->wbGainClip.cri_bound_up_len = awb_calib_v21->cct_clip_cfg.grid_num;
|
|
commV21->wbGainClip.cri_bound_low_len = awb_calib_v21->cct_clip_cfg.grid_num;
|
|
commV21->wbGainClip.cct = (float*)malloc(sizeof(float) * commV21->wbGainClip.cct_len);
|
|
commV21->wbGainClip.cri_bound_up = (float*)malloc(sizeof(float) * commV21->wbGainClip.cct_len);
|
|
commV21->wbGainClip.cri_bound_low = (float*)malloc(sizeof(float) * commV21->wbGainClip.cct_len);
|
|
commV21->singleColorProces.colorBlock_len = awb_calib_v21->sSelColorNUM;
|
|
commV21->singleColorProces.lsUsedForEstimation_len = awb_calib_v21->sIllEstNum;
|
|
commV21->singleColorProces.colorBlock = (CalibDbV2_Awb_Sgc_Cblk_t*)malloc(sizeof(CalibDbV2_Awb_Sgc_Cblk_t)*commV21->singleColorProces.colorBlock_len);
|
|
commV21->singleColorProces.lsUsedForEstimation = (CalibDbV2_Awb_Sgc_Ls_t*)malloc(sizeof(CalibDbV2_Awb_Sgc_Ls_t)*commV21->singleColorProces.lsUsedForEstimation_len);
|
|
for(int i=0;i<commV21->singleColorProces.lsUsedForEstimation_len;i++){
|
|
commV21->singleColorProces.lsUsedForEstimation[i].name = (char*)malloc(sizeof(char)*CALD_AWB_ILLUMINATION_NAME);
|
|
}
|
|
commV21->tolerance.lumaValue_len = awb_adjust->tolerance.num;
|
|
commV21->tolerance.toleranceValue_len = awb_adjust->tolerance.num;
|
|
commV21->tolerance.toleranceValue = (float*)malloc(sizeof(float)*commV21->tolerance.toleranceValue_len);
|
|
commV21->tolerance.lumaValue= (float*)malloc(sizeof(float)*commV21->tolerance.lumaValue_len);
|
|
commV21->runInterval.lumaValue_len = awb_adjust->runInterval.num;
|
|
commV21->runInterval.intervalValue_len= awb_adjust->runInterval.num;
|
|
commV21->runInterval.intervalValue = (float*)malloc(sizeof(float)*commV21->runInterval.intervalValue_len);
|
|
commV21->runInterval.lumaValue= (float*)malloc(sizeof(float)*commV21->runInterval.lumaValue_len);
|
|
commV21->wbGainAdjust.lutAll_len = awb_adjust->cct_lut_cfg_num;
|
|
commV21->wbGainAdjust.lutAll = (CalibDbV2_Awb_Cct_Lut_Cfg_Lv_t*)malloc(sizeof(CalibDbV2_Awb_Cct_Lut_Cfg_Lv_t)*commV21->wbGainAdjust.lutAll_len);
|
|
for(int i=0;i<commV21->wbGainAdjust.lutAll_len;i++){
|
|
commV21->wbGainAdjust.lutAll[i].ct_lut_out_len = awb_adjust->cct_lut_cfg[0].ct_grid_num * awb_adjust->cct_lut_cfg[0].cri_grid_num;
|
|
commV21->wbGainAdjust.lutAll[i].ct_lut_out = (float*)malloc(sizeof(float)*commV21->wbGainAdjust.lutAll[i].ct_lut_out_len);
|
|
commV21->wbGainAdjust.lutAll[i].cri_lut_out_len = awb_adjust->cct_lut_cfg[0].ct_grid_num * awb_adjust->cct_lut_cfg[0].cri_grid_num;
|
|
commV21->wbGainAdjust.lutAll[i].cri_lut_out = (float*)malloc(sizeof(float)*commV21->wbGainAdjust.lutAll[i].cri_lut_out_len);
|
|
}
|
|
commV21->weightForNightGainCalc_len = 4;
|
|
commV21->weightForNightGainCalc = (unsigned char*)malloc(sizeof(unsigned char)*commV21->weightForNightGainCalc_len);
|
|
autoParaV21->lsUsedForYuvDet_len = 7;
|
|
autoParaV21->lsUsedForYuvDet = (char**)malloc(sizeof(char*)*autoParaV21->lsUsedForYuvDet_len);
|
|
for(int i=0;i<autoParaV21->lsUsedForYuvDet_len;i++){
|
|
autoParaV21->lsUsedForYuvDet[i] = (char*)malloc(sizeof(char)*CALD_AWB_ILLUMINATION_NAME);
|
|
}
|
|
autoParaV21->lightSources_len = 7;
|
|
autoParaV21->lightSources = (CalibDbV2_Awb_Light_V21_t*)malloc(sizeof(CalibDbV2_Awb_Light_V21_t)*autoParaV21->lightSources_len);
|
|
for(int i=0;i<autoParaV21->lightSources_len;i++){
|
|
autoParaV21->lightSources[i].name = (char*)malloc(sizeof(char)*CALD_AWB_ILLUMINATION_NAME);
|
|
}
|
|
autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet_len = 2;
|
|
autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet =
|
|
(CalibDbV2_Awb_Luma_Weight_Lv_t*)malloc(sizeof(CalibDbV2_Awb_Luma_Weight_Lv_t)*autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet_len);
|
|
for(int i=0;i<autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet_len;i++){
|
|
autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet[i].ratioSet_len = 3;
|
|
autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet[i].ratioSet =
|
|
(CalibDbV2_Awb_Lum_Wgt_Lv_Rto_t*)malloc(sizeof(CalibDbV2_Awb_Lum_Wgt_Lv_Rto_t)*autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet[i].ratioSet_len);
|
|
}
|
|
autoParaV21->limitRange.lumaValue = (float*)malloc(awb_calib_v21->limitRange.lumaNum *sizeof(float));
|
|
autoParaV21->limitRange.maxB= (unsigned short*)malloc(awb_calib_v21->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV21->limitRange.maxR= (unsigned short*)malloc(awb_calib_v21->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV21->limitRange.maxG= (unsigned short*)malloc(awb_calib_v21->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV21->limitRange.maxY= (unsigned short*)malloc(awb_calib_v21->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV21->limitRange.minB= (unsigned short*)malloc(awb_calib_v21->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV21->limitRange.minR= (unsigned short*)malloc(awb_calib_v21->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV21->limitRange.minG= (unsigned short*)malloc(awb_calib_v21->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV21->limitRange.minY= (unsigned short*)malloc(awb_calib_v21->limitRange.lumaNum *sizeof(unsigned short));
|
|
commV21->division.wpNumTh.high = (float *)malloc(awb_adjust->WP_TH.num*sizeof(float));
|
|
commV21->division.wpNumTh.low= (float *)malloc(awb_adjust->WP_TH.num*sizeof(float));
|
|
commV21->division.wpNumTh.lumaValue= (float *)malloc(awb_adjust->WP_TH.num*sizeof(float));
|
|
commV21->xyRegionStableSelection.wpNumTh.lumaValue = (float *)malloc(awb_adjust->wpNumTh.num*sizeof(float));
|
|
commV21->xyRegionStableSelection.wpNumTh.forBigType= (float *)malloc(awb_adjust->wpNumTh.num*sizeof(float));
|
|
commV21->xyRegionStableSelection.wpNumTh.forExtraType= (float *)malloc(awb_adjust->wpNumTh.num*sizeof(float));
|
|
//coppy value
|
|
CalibDbV2_Wb_Para_t *control = &wb_v21->control;
|
|
control->byPass = 0;
|
|
control->mode = CALIB_WB_MODE_AUTO;
|
|
CalibDbV2_Wb_Mwb_Para_t *manualPara = &wb_v21->manualPara;
|
|
manualPara->mode = CALIB_MWB_MODE_SCENE;
|
|
manualPara->cfg.scene = CALIB_WB_SCENE_CLOUDY_DAYLIGHT;
|
|
manualPara->cfg.cct.CCT = 5000;
|
|
manualPara->cfg.cct.CCRI = 0;
|
|
memcpy(manualPara->cfg.mwbGain, awb_calib_v21->standardGainValue[0],sizeof(manualPara->cfg.mwbGain));
|
|
autoParaV21->hdrPara.frameChoose = awb_calib_v21->hdrFrameChoose;
|
|
autoParaV21->hdrPara.frameChooseMode= (CalibDbV2_Awb_Hdr_Fr_Ch_Mode_t)awb_calib_v21->hdrFrameChooseMode;
|
|
autoParaV21->lscBypassEnable = awb_calib_v21->lscBypEnable;
|
|
autoParaV21->uvDetectionEnable = awb_calib_v21->uvDetectionEnable;
|
|
autoParaV21->xyDetectionEnable= awb_calib_v21->xyDetectionEnable;
|
|
autoParaV21->yuvDetectionEnable = awb_calib_v21->yuvDetectionEnable;
|
|
for(int i=0;i<autoParaV21->lsUsedForYuvDet_len;i++){
|
|
strcpy(autoParaV21->lsUsedForYuvDet[i],awb_calib_v21->lsUsedForYuvDet[i]);
|
|
}
|
|
autoParaV21->blkStatisticsEnable = awb_calib_v21->blkStatisticsEnable;
|
|
autoParaV21->downScaleMode = (CalibDbV2_Awb_Down_Scale_Mode_t)awb_calib_v21->dsMode;
|
|
autoParaV21->blkMeasureMode = (CalibDbV2_Awb_Blk_Stat_V21_t)awb_calib_v21->blkMeasureMode;
|
|
autoParaV21->mainWindow.mode = (CalibDb_Window_Mode_t)awb_calib_v21->measeureWindow.mode;
|
|
float window[4] ={0,0,1,1};
|
|
bool flag = false;
|
|
if(autoParaV21->mainWindow.mode != CALIB_AWB_WINDOW_CFG_AUTO){
|
|
char resName[CALD_AWB_RES_NAME];
|
|
for(int i=0;i<awb_calib_v21->measeureWindow.resNum;i++){
|
|
char* p;
|
|
float width = 0;
|
|
float height =0;
|
|
strcpy(resName,awb_calib_v21->measeureWindow.resName[i]);
|
|
p = strtok(resName, "x");
|
|
if(p==NULL){
|
|
printf("parse resName %s error0,\n",awb_calib_v21->measeureWindow.resName[i]);
|
|
continue;
|
|
}
|
|
width = atoi(p);
|
|
p = strtok(NULL, " ");
|
|
if(p==NULL){
|
|
printf("parse resName %s error1,\n",awb_calib_v21->measeureWindow.resName[i]);
|
|
continue;
|
|
}
|
|
height = atoi(p);
|
|
if (height*width>0.001){
|
|
if((float)awb_calib_v21->measeureWindow.window[i][0]/width > window[0]){
|
|
window[0] = awb_calib_v21->measeureWindow.window[i][0]/width;
|
|
flag = true;
|
|
}
|
|
if((float)awb_calib_v21->measeureWindow.window[i][1]/height > window[1]){
|
|
window[1] = awb_calib_v21->measeureWindow.window[i][1]/height;
|
|
flag = true;
|
|
}
|
|
if((float)awb_calib_v21->measeureWindow.window[i][2]/width < window[2]){
|
|
window[2] = awb_calib_v21->measeureWindow.window[i][2]/width;
|
|
flag = true;
|
|
}
|
|
if((float)awb_calib_v21->measeureWindow.window[i][3]/height < window[3]){
|
|
window[3] = awb_calib_v21->measeureWindow.window[i][3]/height;
|
|
flag = true;
|
|
}
|
|
}else{
|
|
printf("parse resName %s error2,\n",awb_calib_v21->measeureWindow.resName[i]);
|
|
}
|
|
}
|
|
}
|
|
if (flag){
|
|
printf("please check parse mainWindow.window (ratio) is %f,%f,%f,%f\n",window[0],window[1],window[2],window[3]);
|
|
|
|
}
|
|
memcpy(autoParaV21->mainWindow.window, window,sizeof(window));
|
|
|
|
autoParaV21->limitRange.lumaValue_len= awb_calib_v21->limitRange.lumaNum;
|
|
memcpy(autoParaV21->limitRange.lumaValue,awb_calib_v21->limitRange.lumaValue,autoParaV21->limitRange.lumaValue_len*sizeof(float));
|
|
autoParaV21->limitRange.maxB_len= awb_calib_v21->limitRange.lumaNum;
|
|
memcpy(autoParaV21->limitRange.maxB,awb_calib_v21->limitRange.maxB,autoParaV21->limitRange.maxB_len*sizeof(unsigned short));
|
|
autoParaV21->limitRange.maxR_len= awb_calib_v21->limitRange.lumaNum;
|
|
memcpy(autoParaV21->limitRange.maxR,awb_calib_v21->limitRange.maxR,autoParaV21->limitRange.maxR_len*sizeof(unsigned short));
|
|
autoParaV21->limitRange.maxG_len= awb_calib_v21->limitRange.lumaNum;
|
|
memcpy(autoParaV21->limitRange.maxG,awb_calib_v21->limitRange.maxG,autoParaV21->limitRange.maxG_len*sizeof(unsigned short));
|
|
autoParaV21->limitRange.maxY_len= awb_calib_v21->limitRange.lumaNum;
|
|
memcpy(autoParaV21->limitRange.maxY,awb_calib_v21->limitRange.maxY,autoParaV21->limitRange.maxY_len*sizeof(unsigned short));
|
|
autoParaV21->limitRange.minB_len= awb_calib_v21->limitRange.lumaNum;
|
|
memcpy(autoParaV21->limitRange.minB,awb_calib_v21->limitRange.minB,autoParaV21->limitRange.minB_len*sizeof(unsigned short));
|
|
autoParaV21->limitRange.minR_len= awb_calib_v21->limitRange.lumaNum;
|
|
memcpy(autoParaV21->limitRange.minR,awb_calib_v21->limitRange.minR,autoParaV21->limitRange.minR_len*sizeof(unsigned short));
|
|
autoParaV21->limitRange.minG_len= awb_calib_v21->limitRange.lumaNum;
|
|
memcpy(autoParaV21->limitRange.minG,awb_calib_v21->limitRange.minG,autoParaV21->limitRange.minG_len*sizeof(unsigned short));
|
|
autoParaV21->limitRange.minY_len= awb_calib_v21->limitRange.lumaNum;
|
|
memcpy(autoParaV21->limitRange.minY,awb_calib_v21->limitRange.minY,autoParaV21->limitRange.minY_len*sizeof(unsigned short));
|
|
memcpy(autoParaV21->rgb2TcsPara.rotationMat, awb_calib_v21->rgb2tcs_param.rotationMat, sizeof(autoParaV21->rgb2TcsPara.rotationMat));
|
|
memcpy(autoParaV21->rgb2TcsPara.pseudoLuminanceWeight, awb_calib_v21->rgb2tcs_param.pseudoLuminanceWeight, sizeof(autoParaV21->rgb2TcsPara.pseudoLuminanceWeight));
|
|
memcpy(autoParaV21->rgb2RotationYuvMat, awb_calib_v21->rgb2RYuv_matrix,sizeof(autoParaV21->rgb2RotationYuvMat));
|
|
for(int i=0;i<CALD_AWB_EXCRANGE_NUM_MAX;i++){
|
|
autoParaV21->extraWpRange[i].domain = (CalibDbV2_Awb_Ext_Range_Dom_t)awb_calib_v21->excludeWpRange[i].domain;
|
|
if(awb_calib_v21->excludeWpRange[i].mode != CALIB_AWB_EXCLUDE_WP_MODE
|
|
&& awb_calib_v21->excludeWpRange[i].mode != CALIB_AWB_ETR_LIGHT_SOUR_MODE ){
|
|
autoParaV21->extraWpRange[i].mode = CALIB_AWB_EXCLUDE_WP_MODE;
|
|
}else{
|
|
autoParaV21->extraWpRange[i].mode = (CalibDbV2_Awb_Ext_Range_Mode_t)awb_calib_v21->excludeWpRange[i].mode;
|
|
}
|
|
autoParaV21->extraWpRange[i].region[0] = awb_calib_v21->excludeWpRange[i].xu[0];
|
|
autoParaV21->extraWpRange[i].region[1] = awb_calib_v21->excludeWpRange[i].xu[1];
|
|
autoParaV21->extraWpRange[i].region[2] = awb_calib_v21->excludeWpRange[i].yv[0];
|
|
autoParaV21->extraWpRange[i].region[3] = awb_calib_v21->excludeWpRange[i].yv[1];
|
|
}
|
|
autoParaV21->wpDiffBlkWeiEnable = awb_calib_v21->blkWeightEnable;
|
|
for(int i=0;i<CALD_AWB_GRID_NUM_TOTAL;i++){
|
|
autoParaV21->wpDiffBlkWeight[i] = (awb_calib_v21->blkWeight[i] * 2) > 63 ? 63 : awb_calib_v21->blkWeight[i] * 2;
|
|
}
|
|
autoParaV21->wpDiffLumaWeight.enable = awb_calib_v21->wpDiffWeiEnable;
|
|
memcpy(autoParaV21->wpDiffLumaWeight.wpDiffwei_y, awb_calib_v21->wpDiffwei_y, sizeof(autoParaV21->wpDiffLumaWeight.wpDiffwei_y));
|
|
memcpy(autoParaV21->wpDiffLumaWeight.perfectBin, awb_calib_v21->perfectBin, sizeof(autoParaV21->wpDiffLumaWeight.perfectBin));
|
|
autoParaV21->wpDiffLumaWeight.wpDiffWeiEnableTh.wpDiffWeiNoTh= awb_calib_v21->wpDiffNoTh;
|
|
autoParaV21->wpDiffLumaWeight.wpDiffWeiEnableTh.wpDiffWeiLvValueTh= awb_calib_v21->wpDiffLvValueTh;
|
|
for(int i=0;i < autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet_len; i++){
|
|
autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet[i].LvValue = awb_calib_v21->wpDiffweiSet_w_LvValueTh[i];
|
|
for(int j=0;j<autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet[i].ratioSet_len;j++){
|
|
autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet[i].ratioSet[j].ratioValue = awb_calib_v21->wpDiffWeiRatioTh[j];
|
|
if(i==1){
|
|
memcpy(autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet[i].ratioSet[j].weight, awb_calib_v21->wpDiffweiSet_w_HigLV[j],
|
|
sizeof(autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet[i].ratioSet[j].weight));
|
|
}else{
|
|
memcpy(autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet[i].ratioSet[j].weight, awb_calib_v21->wpDiffweiSet_w_LowLV[j],
|
|
sizeof(autoParaV21->wpDiffLumaWeight.wpDiffWeightLvSet[i].ratioSet[j].weight));
|
|
}
|
|
}
|
|
}
|
|
for(int i=0;i<autoParaV21->lightSources_len;i++){
|
|
strcpy(autoParaV21->lightSources[i].name, awb_calib_v21->lightName[i]);
|
|
autoParaV21->lightSources[i].doorType = (CalibDbV2_Awb_DoorType_t)awb_calib_v21->doorType[i];
|
|
memcpy(autoParaV21->lightSources[i].standardGainValue, awb_calib_v21->standardGainValue[i],sizeof(autoParaV21->lightSources[i].standardGainValue));
|
|
memcpy(autoParaV21->lightSources[i].uvRegion.u, awb_calib_v21->uvRange_param[i].pu_region,sizeof(autoParaV21->lightSources[i].uvRegion.u));
|
|
memcpy(autoParaV21->lightSources[i].uvRegion.v, awb_calib_v21->uvRange_param[i].pv_region,sizeof(autoParaV21->lightSources[i].uvRegion.v));
|
|
autoParaV21->lightSources[i].xyRegion.normal[0] = awb_calib_v21->xyRangeLight[i].NorrangeX[0];
|
|
autoParaV21->lightSources[i].xyRegion.normal[1] = awb_calib_v21->xyRangeLight[i].NorrangeX[1];
|
|
autoParaV21->lightSources[i].xyRegion.normal[2] = awb_calib_v21->xyRangeLight[i].NorrangeY[0];
|
|
autoParaV21->lightSources[i].xyRegion.normal[3] = awb_calib_v21->xyRangeLight[i].NorrangeY[1];
|
|
autoParaV21->lightSources[i].xyRegion.big[0] = awb_calib_v21->xyRangeLight[i].SperangeX[0];
|
|
autoParaV21->lightSources[i].xyRegion.big[1] = awb_calib_v21->xyRangeLight[i].SperangeX[1];
|
|
autoParaV21->lightSources[i].xyRegion.big[2] = awb_calib_v21->xyRangeLight[i].SperangeY[0];
|
|
autoParaV21->lightSources[i].xyRegion.big[3] = awb_calib_v21->xyRangeLight[i].SperangeY[1];
|
|
memcpy(autoParaV21->lightSources[i].rtYuvRegion.thcurve_u, awb_calib_v21->yuv3D2Range_param[i].thcurve_u,
|
|
sizeof(awb_calib_v21->yuv3D2Range_param[i].thcurve_u));
|
|
memcpy(autoParaV21->lightSources[i].rtYuvRegion.thcure_th, awb_calib_v21->yuv3D2Range_param[i].thcure_th,
|
|
sizeof(awb_calib_v21->yuv3D2Range_param[i].thcure_th));
|
|
memcpy(autoParaV21->lightSources[i].rtYuvRegion.lineVector, awb_calib_v21->yuv3D2Range_param[i].line,
|
|
sizeof(awb_calib_v21->yuv3D2Range_param[i].line));
|
|
autoParaV21->lightSources[i].rtYuvRegion.disP1P2 = 15;
|
|
|
|
memcpy(autoParaV21->lightSources[i].staWeight, awb_adjust->awb_light_info[i].staWeight, sizeof(autoParaV21->lightSources[i].staWeight));
|
|
autoParaV21->lightSources[i].dayGainLvThSet[0] = awb_adjust->awb_light_info[i].spatialGain_LV_THL;
|
|
autoParaV21->lightSources[i].dayGainLvThSet[1] = awb_adjust->awb_light_info[i].spatialGain_LV_THH;
|
|
memcpy(autoParaV21->lightSources[i].defaultDayGainLow,awb_calib_v21->spatialGain_L, sizeof(awb_calib_v21->spatialGain_L));
|
|
memcpy(autoParaV21->lightSources[i].defaultDayGainHigh,awb_calib_v21->spatialGain_H, sizeof(awb_calib_v21->spatialGain_H));
|
|
autoParaV21->lightSources[i].xyType2Enable = awb_adjust->awb_light_info[i].xyType2Enable;
|
|
}
|
|
|
|
strcpy(commV21->lightSourceForFirstFrame, awb_adjust->lsForFirstFrame);
|
|
memcpy(commV21->tolerance.lumaValue, awb_adjust->tolerance.LV,sizeof(float)*commV21->tolerance.lumaValue_len);
|
|
memcpy(commV21->tolerance.toleranceValue, awb_adjust->tolerance.value,sizeof(float)*commV21->tolerance.toleranceValue_len);
|
|
memcpy(commV21->runInterval.lumaValue, awb_adjust->runInterval.LV,sizeof(float)*commV21->runInterval.lumaValue_len);
|
|
memcpy(commV21->runInterval.intervalValue, awb_adjust->runInterval.value,sizeof(float)*commV21->runInterval.intervalValue_len);
|
|
commV21->dampFactor.dFStep = awb_adjust->dFStep;
|
|
commV21->dampFactor.dFMin = awb_adjust->dFMin;
|
|
commV21->dampFactor.dFMax = awb_adjust->dFMax;
|
|
commV21->dampFactor.lvIIRsize = awb_adjust->LvIIRsize;
|
|
commV21->dampFactor.lvVarTh = awb_adjust->LvVarTh;
|
|
commV21->wbGainAdjust.enable = awb_adjust->wbGainAdjustEn;
|
|
for(int i=0; i<commV21->wbGainAdjust.lutAll_len;i++){
|
|
commV21->wbGainAdjust.lutAll[i].lumaValue = awb_adjust->cct_lut_cfg[i].lv;
|
|
commV21->wbGainAdjust.lutAll[i].ct_grid_num = awb_adjust->cct_lut_cfg[0].ct_grid_num;
|
|
commV21->wbGainAdjust.lutAll[i].cri_grid_num = awb_adjust->cct_lut_cfg[0].cri_grid_num;
|
|
memcpy(commV21->wbGainAdjust.lutAll[i].ct_in_range, awb_adjust->cct_lut_cfg[0].ct_range,sizeof(commV21->wbGainAdjust.lutAll[i].ct_in_range));
|
|
memcpy(commV21->wbGainAdjust.lutAll[i].cri_in_range, awb_adjust->cct_lut_cfg[0].cri_range,sizeof(commV21->wbGainAdjust.lutAll[i].cri_in_range));
|
|
memcpy(commV21->wbGainAdjust.lutAll[i].ct_lut_out,awb_adjust->cct_lut_cfg[i].ct_lut_out,sizeof(float)*commV21->wbGainAdjust.lutAll[i].ct_lut_out_len);
|
|
memcpy(commV21->wbGainAdjust.lutAll[i].cri_lut_out,awb_adjust->cct_lut_cfg[i].cri_lut_out,sizeof(float)*commV21->wbGainAdjust.lutAll[i].cri_lut_out_len);
|
|
}
|
|
commV21->wbGainDaylightClip.enable= awb_calib_v21->wbGainDaylightClipEn;
|
|
commV21->wbGainDaylightClip.outdoor_cct_min = awb_calib_v21->cct_clip_cfg.outdoor_cct_min;
|
|
commV21->wbGainClip.enable= awb_calib_v21->wbGainClipEn;
|
|
memcpy(commV21->wbGainClip.cct, awb_calib_v21->cct_clip_cfg.cct,sizeof(float)*commV21->wbGainClip.cct_len);
|
|
memcpy(commV21->wbGainClip.cri_bound_low, awb_calib_v21->cct_clip_cfg.cri_bound_low,sizeof(float)*commV21->wbGainClip.cri_bound_low_len);
|
|
memcpy(commV21->wbGainClip.cri_bound_up, awb_calib_v21->cct_clip_cfg.cri_bound_up,sizeof(float)*commV21->wbGainClip.cri_bound_up_len);
|
|
commV21->division.lumaValThLow= awb_adjust->LV_THL;
|
|
commV21->division.lumaValThLow2= awb_adjust->LV_THL2;
|
|
commV21->division.lumaValThHigh= awb_adjust->LV_THH;
|
|
commV21->division.lumaValThHigh2= awb_adjust->LV_THH2;
|
|
commV21->division.wpNumTh.lumaValue_len = awb_adjust->WP_TH.num;
|
|
memcpy(commV21->division.wpNumTh.lumaValue, awb_adjust->WP_TH.lumaValue,sizeof(float)*commV21->division.wpNumTh.lumaValue_len);
|
|
commV21->division.wpNumTh.high_len = awb_adjust->WP_TH.num;
|
|
memcpy(commV21->division.wpNumTh.high, awb_adjust->WP_TH.WP_THH,sizeof(float)*commV21->division.wpNumTh.lumaValue_len);
|
|
commV21->division.wpNumTh.low_len = awb_adjust->WP_TH.num;
|
|
memcpy(commV21->division.wpNumTh.low, awb_adjust->WP_TH.WP_THL,sizeof(float)*commV21->division.wpNumTh.lumaValue_len);
|
|
memcpy(commV21->defaultNightGain,awb_calib_v21->temporalDefaultGain, sizeof(commV21->defaultNightGain));
|
|
memcpy(commV21->lumaValueMatrix,awb_adjust->LVMatrix, sizeof(commV21->lumaValueMatrix));
|
|
memcpy(commV21->defaultNightGainWeight,awb_adjust->tempWeight, sizeof(commV21->defaultNightGainWeight));
|
|
commV21->probCalcDis.proDis_THH = awb_adjust->proDis_THH;
|
|
commV21->probCalcDis.proDis_THL = awb_adjust->proDis_THL;
|
|
commV21->probCalcLv.outdoorLumaValThHigh = awb_adjust->proLV_Outdoor_THH;
|
|
commV21->probCalcLv.outdoorLumaValThLow = awb_adjust->proLV_Outdoor_THL;
|
|
commV21->probCalcWp.wpNumPercTh= awb_adjust->wpNumPercTh;
|
|
commV21->probCalcWp.wpNumPercTh2= 0.2;
|
|
commV21->converged.varThforDamp = awb_adjust->convergedVarTh;
|
|
commV21->converged.varThforUnDamp= awb_adjust->convergedVarTh;
|
|
commV21->xyRegionStableSelection.enable = true;
|
|
commV21->xyRegionStableSelection.wpNumTh.lumaValue_len= awb_adjust->wpNumTh.num;
|
|
memcpy(commV21->xyRegionStableSelection.wpNumTh.lumaValue,awb_adjust->wpNumTh.lumaValue,sizeof(float)*awb_adjust->wpNumTh.num);
|
|
commV21->xyRegionStableSelection.wpNumTh.forBigType_len= awb_adjust->wpNumTh.num;
|
|
memcpy(commV21->xyRegionStableSelection.wpNumTh.forBigType,awb_adjust->wpNumTh.wpNumThForBigType,sizeof(float)*awb_adjust->wpNumTh.num);
|
|
commV21->xyRegionStableSelection.wpNumTh.forExtraType_len= awb_adjust->wpNumTh.num;
|
|
memcpy(commV21->xyRegionStableSelection.wpNumTh.forExtraType,awb_adjust->wpNumTh.wpNumThForExtraType,sizeof(float)*awb_adjust->wpNumTh.num);
|
|
commV21->xyRegionStableSelection.xyTypeListSize = awb_adjust->xyTypeListSize;
|
|
commV21->xyRegionStableSelection.varianceLumaTh = awb_adjust->varianceLumaTh;
|
|
memcpy(commV21->weightForNightGainCalc, awb_adjust->temporalGainSetWeight, commV21->weightForNightGainCalc_len*sizeof(unsigned char));
|
|
commV21->singleColorProces.enable = true;
|
|
for(int i=0; i<commV21->singleColorProces.colorBlock_len; i++){
|
|
commV21->singleColorProces.colorBlock[i].index = awb_calib_v21->sIndSelColor[i];
|
|
commV21->singleColorProces.colorBlock[i].meanC= awb_calib_v21->sMeanCh[0][i];
|
|
commV21->singleColorProces.colorBlock[i].meanH= awb_calib_v21->sMeanCh[1][i];
|
|
}
|
|
for(int i=0; i<commV21->singleColorProces.lsUsedForEstimation_len; i++){
|
|
strcpy(commV21->singleColorProces.lsUsedForEstimation[i].name, awb_calib_v21->sNameIllEst[i]);
|
|
commV21->singleColorProces.lsUsedForEstimation[i].RGain= awb_calib_v21->srGain[i];
|
|
commV21->singleColorProces.lsUsedForEstimation[i].BGain= awb_calib_v21->sbGain[i];
|
|
}
|
|
commV21->singleColorProces.alpha= awb_calib_v21->sAlpha;
|
|
memcpy(commV21->lineRgBg,awb_calib_v21->lineRgBg,sizeof(commV21->lineRgBg));
|
|
memcpy(commV21->lineRgProjCCT,awb_calib_v21->lineRgProjCCT,sizeof(commV21->lineRgProjCCT));
|
|
commV21->chrAdpttAdj.enable = awb_adjust->ca_enable;
|
|
commV21->chrAdpttAdj.laCalcFactor = awb_adjust->ca_LACalcFactor;
|
|
memcpy(commV21->chrAdpttAdj.targetGain, awb_calib_v21->ca_targetGain, sizeof(commV21->chrAdpttAdj.targetGain));
|
|
commV21->remosaicCfg.enable = awb_adjust->remosaic_cfg.enable;
|
|
commV21->remosaicCfg.applyInvWbGainEnable= true;
|
|
memcpy(commV21->remosaicCfg.sensorWbGain, awb_adjust->remosaic_cfg.sensor_awb_gain, sizeof(commV21->remosaicCfg.sensorWbGain));
|
|
memcpy(&commV21->wbGainOffset, &awb_adjust->wbGainOffset, sizeof(commV21->wbGainOffset));
|
|
|
|
}
|
|
|
|
|
|
void CalibV2AwbV20Free(CamCalibDbV2Context_t *calibV2)
|
|
{
|
|
CalibDbV2_Wb_Para_V20_t* wb_v20 =
|
|
(CalibDbV2_Wb_Para_V20_t*)(CALIBDBV2_GET_MODULE_PTR(calibV2, wb_v20));
|
|
if(wb_v20 == NULL)
|
|
return;
|
|
|
|
CalibDbV2_Wb_Awb_Ext_Com_Para_t *commV20 = &wb_v20->autoExtPara;
|
|
CalibDbV2_Wb_Awb_Para_V20_t* autoParaV20 = &wb_v20->autoPara;
|
|
free(commV20->lightSourceForFirstFrame);
|
|
free(commV20->wbGainClip.cct);
|
|
free(commV20->wbGainClip.cri_bound_up);
|
|
free(commV20->wbGainClip.cri_bound_low);
|
|
free(commV20->singleColorProces.colorBlock);
|
|
for(int i=0;i<commV20->singleColorProces.lsUsedForEstimation_len;i++){
|
|
free(commV20->singleColorProces.lsUsedForEstimation[i].name);
|
|
}
|
|
free(commV20->singleColorProces.lsUsedForEstimation);
|
|
free(commV20->tolerance.toleranceValue);
|
|
free(commV20->tolerance.lumaValue);
|
|
free(commV20->runInterval.intervalValue);
|
|
free(commV20->runInterval.lumaValue);
|
|
for(int i=0;i<commV20->wbGainAdjust.lutAll_len;i++){
|
|
free(commV20->wbGainAdjust.lutAll[i].ct_lut_out);
|
|
free(commV20->wbGainAdjust.lutAll[i].cri_lut_out);
|
|
}
|
|
free(commV20->wbGainAdjust.lutAll);
|
|
free(commV20->weightForNightGainCalc);
|
|
free(commV20->division.wpNumTh.high);
|
|
free(commV20->division.wpNumTh.low);
|
|
free(commV20->division.wpNumTh.lumaValue);
|
|
free(commV20->xyRegionStableSelection.wpNumTh.lumaValue);
|
|
free(commV20->xyRegionStableSelection.wpNumTh.forBigType);
|
|
free(commV20->xyRegionStableSelection.wpNumTh.forExtraType);
|
|
for(int i=0;i<autoParaV20->lsUsedForYuvDet_len;i++){
|
|
free(autoParaV20->lsUsedForYuvDet[i]);
|
|
}
|
|
free(autoParaV20->lsUsedForYuvDet);
|
|
for(int i=0;i<autoParaV20->lightSources_len;i++){
|
|
free(autoParaV20->lightSources[i].name);
|
|
}
|
|
free(autoParaV20->lightSources);
|
|
free(autoParaV20->limitRange.lumaValue);
|
|
free(autoParaV20->limitRange.maxB);
|
|
free(autoParaV20->limitRange.maxR);
|
|
free(autoParaV20->limitRange.maxG);
|
|
free(autoParaV20->limitRange.maxY);
|
|
free(autoParaV20->limitRange.minB);
|
|
free(autoParaV20->limitRange.minR);
|
|
free(autoParaV20->limitRange.minG);
|
|
free(autoParaV20->limitRange.minY);
|
|
}
|
|
|
|
void convertCalib2calibV20(const CamCalibDbContext_t *calib,CamCalibDbV2Context_t *calibV2)
|
|
{
|
|
//malloc
|
|
const CalibDb_Awb_Calib_Para_V200_t *awb_calib_v20 = NULL;
|
|
|
|
list_head *awb_calib_para_list =
|
|
(list_head*)CALIBDB_GET_MODULE_PTR((void*)calib, awb_calib_para_v200);
|
|
|
|
#ifdef RKAIQ_ENABLE_PARSER_V1
|
|
if (awb_calib_para_list)
|
|
GetAwbProfileFromAwbCalibV200ListByIdx(awb_calib_para_list, 0, &awb_calib_v20);
|
|
#else
|
|
return;
|
|
#endif
|
|
|
|
const CalibDb_Awb_Adjust_Para_t *awb_adjust = NULL;
|
|
|
|
list_head *awb_adjust_list =
|
|
(list_head*)CALIBDB_GET_MODULE_PTR((void*)calib, awb_adjust_para);
|
|
|
|
if (awb_adjust_list)
|
|
GetAwbProfileFromAwbAdjustListByIdx(awb_adjust_list, 0, &awb_adjust);
|
|
else
|
|
return;
|
|
|
|
CalibDbV2_Wb_Para_V20_t* wb_v20 =
|
|
(CalibDbV2_Wb_Para_V20_t*)(CALIBDBV2_GET_MODULE_PTR(calibV2, wb_v20));
|
|
memset(wb_v20, 0, sizeof(CalibDbV2_Wb_Para_V20_t));
|
|
CalibDbV2_Wb_Awb_Ext_Com_Para_t *commV20 = &wb_v20->autoExtPara;
|
|
CalibDbV2_Wb_Awb_Para_V20_t* autoParaV20 = &wb_v20->autoPara;
|
|
commV20->lightSourceForFirstFrame= (char*)malloc(sizeof(char)*CALD_AWB_ILLUMINATION_NAME);
|
|
commV20->wbGainClip.cct_len = awb_calib_v20->cct_clip_cfg.grid_num;
|
|
commV20->wbGainClip.cri_bound_up_len = awb_calib_v20->cct_clip_cfg.grid_num;
|
|
commV20->wbGainClip.cri_bound_low_len = awb_calib_v20->cct_clip_cfg.grid_num;
|
|
commV20->wbGainClip.cct = (float*)malloc(sizeof(float) * commV20->wbGainClip.cct_len);
|
|
commV20->wbGainClip.cri_bound_up = (float*)malloc(sizeof(float) * commV20->wbGainClip.cct_len);
|
|
commV20->wbGainClip.cri_bound_low = (float*)malloc(sizeof(float) * commV20->wbGainClip.cct_len);
|
|
commV20->singleColorProces.colorBlock_len = awb_calib_v20->sSelColorNUM;
|
|
commV20->singleColorProces.lsUsedForEstimation_len = awb_calib_v20->sIllEstNum;
|
|
commV20->singleColorProces.colorBlock = (CalibDbV2_Awb_Sgc_Cblk_t*)malloc(sizeof(CalibDbV2_Awb_Sgc_Cblk_t)*commV20->singleColorProces.colorBlock_len);
|
|
commV20->singleColorProces.lsUsedForEstimation = (CalibDbV2_Awb_Sgc_Ls_t*)malloc(sizeof(CalibDbV2_Awb_Sgc_Ls_t)*commV20->singleColorProces.lsUsedForEstimation_len);
|
|
for(int i=0;i<commV20->singleColorProces.lsUsedForEstimation_len;i++){
|
|
commV20->singleColorProces.lsUsedForEstimation[i].name = (char*)malloc(sizeof(char)*CALD_AWB_ILLUMINATION_NAME);
|
|
}
|
|
commV20->tolerance.lumaValue_len = awb_adjust->tolerance.num;
|
|
commV20->tolerance.toleranceValue_len = awb_adjust->tolerance.num;
|
|
commV20->tolerance.toleranceValue = (float*)malloc(sizeof(float)*commV20->tolerance.toleranceValue_len);
|
|
commV20->tolerance.lumaValue= (float*)malloc(sizeof(float)*commV20->tolerance.lumaValue_len);
|
|
commV20->runInterval.lumaValue_len = awb_adjust->runInterval.num;
|
|
commV20->runInterval.intervalValue_len= awb_adjust->runInterval.num;
|
|
commV20->runInterval.intervalValue = (float*)malloc(sizeof(float)*commV20->runInterval.intervalValue_len);
|
|
commV20->runInterval.lumaValue= (float*)malloc(sizeof(float)*commV20->runInterval.lumaValue_len);
|
|
commV20->wbGainAdjust.lutAll_len = awb_adjust->cct_lut_cfg_num;
|
|
commV20->wbGainAdjust.lutAll = (CalibDbV2_Awb_Cct_Lut_Cfg_Lv_t*)malloc(sizeof(CalibDbV2_Awb_Cct_Lut_Cfg_Lv_t)*commV20->wbGainAdjust.lutAll_len);
|
|
for(int i=0;i<commV20->wbGainAdjust.lutAll_len;i++){
|
|
commV20->wbGainAdjust.lutAll[i].ct_lut_out_len = awb_adjust->cct_lut_cfg[0].ct_grid_num * awb_adjust->cct_lut_cfg[0].cri_grid_num;
|
|
commV20->wbGainAdjust.lutAll[i].ct_lut_out = (float*)malloc(sizeof(float)*commV20->wbGainAdjust.lutAll[i].ct_lut_out_len);
|
|
commV20->wbGainAdjust.lutAll[i].cri_lut_out_len = awb_adjust->cct_lut_cfg[0].ct_grid_num * awb_adjust->cct_lut_cfg[0].cri_grid_num;
|
|
commV20->wbGainAdjust.lutAll[i].cri_lut_out = (float*)malloc(sizeof(float)*commV20->wbGainAdjust.lutAll[i].cri_lut_out_len);
|
|
}
|
|
commV20->weightForNightGainCalc_len = 4;
|
|
commV20->weightForNightGainCalc = (unsigned char*)malloc(sizeof(unsigned char)*commV20->weightForNightGainCalc_len);
|
|
autoParaV20->lsUsedForYuvDet_len = 7;
|
|
autoParaV20->lsUsedForYuvDet = (char**)malloc(sizeof(char*)*autoParaV20->lsUsedForYuvDet_len);
|
|
for(int i=0;i<autoParaV20->lsUsedForYuvDet_len;i++){
|
|
autoParaV20->lsUsedForYuvDet[i] = (char*)malloc(sizeof(char)*CALD_AWB_ILLUMINATION_NAME);
|
|
}
|
|
autoParaV20->lightSources_len = 7;
|
|
autoParaV20->lightSources = (CalibDbV2_Awb_Light_V20_t*)malloc(sizeof(CalibDbV2_Awb_Light_V20_t)*autoParaV20->lightSources_len);
|
|
for(int i=0;i<autoParaV20->lightSources_len;i++){
|
|
autoParaV20->lightSources[i].name = (char*)malloc(sizeof(char)*CALD_AWB_ILLUMINATION_NAME);
|
|
}
|
|
autoParaV20->limitRange.lumaValue = (float*)malloc(awb_calib_v20->limitRange.lumaNum *sizeof(float));
|
|
autoParaV20->limitRange.maxB= (unsigned short*)malloc(awb_calib_v20->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV20->limitRange.maxR= (unsigned short*)malloc(awb_calib_v20->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV20->limitRange.maxG= (unsigned short*)malloc(awb_calib_v20->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV20->limitRange.maxY= (unsigned short*)malloc(awb_calib_v20->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV20->limitRange.minB= (unsigned short*)malloc(awb_calib_v20->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV20->limitRange.minR= (unsigned short*)malloc(awb_calib_v20->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV20->limitRange.minG= (unsigned short*)malloc(awb_calib_v20->limitRange.lumaNum *sizeof(unsigned short));
|
|
autoParaV20->limitRange.minY= (unsigned short*)malloc(awb_calib_v20->limitRange.lumaNum *sizeof(unsigned short));
|
|
commV20->division.wpNumTh.high = (float *)malloc(awb_adjust->WP_TH.num*sizeof(float));
|
|
commV20->division.wpNumTh.low= (float *)malloc(awb_adjust->WP_TH.num*sizeof(float));
|
|
commV20->division.wpNumTh.lumaValue= (float *)malloc(awb_adjust->WP_TH.num*sizeof(float));
|
|
commV20->xyRegionStableSelection.wpNumTh.lumaValue = (float *)malloc(awb_adjust->wpNumTh.num*sizeof(float));
|
|
commV20->xyRegionStableSelection.wpNumTh.forBigType= (float *)malloc(awb_adjust->wpNumTh.num*sizeof(float));
|
|
commV20->xyRegionStableSelection.wpNumTh.forExtraType= (float *)malloc(awb_adjust->wpNumTh.num*sizeof(float));
|
|
//coppy value
|
|
CalibDbV2_Wb_Para_t *control = &wb_v20->control;
|
|
control->byPass = 0;
|
|
control->mode = CALIB_WB_MODE_AUTO;
|
|
CalibDbV2_Wb_Mwb_Para_t *manualPara = &wb_v20->manualPara;
|
|
manualPara->mode = CALIB_MWB_MODE_SCENE;
|
|
manualPara->cfg.scene = CALIB_WB_SCENE_CLOUDY_DAYLIGHT;
|
|
manualPara->cfg.cct.CCT = 5000;
|
|
manualPara->cfg.cct.CCRI = 0;
|
|
memcpy(manualPara->cfg.mwbGain, awb_calib_v20->standardGainValue[0],sizeof(manualPara->cfg.mwbGain));
|
|
autoParaV20->hdrPara.frameChoose = awb_calib_v20->hdrFrameChoose;
|
|
autoParaV20->hdrPara.frameChooseMode= (CalibDbV2_Awb_Hdr_Fr_Ch_Mode_t)awb_calib_v20->hdrFrameChooseMode;
|
|
autoParaV20->lscBypassEnable = awb_calib_v20->lscBypEnable;
|
|
autoParaV20->uvDetectionEnable = awb_calib_v20->uvDetectionEnable;
|
|
autoParaV20->xyDetectionEnable= awb_calib_v20->xyDetectionEnable;
|
|
autoParaV20->yuvDetectionEnable = awb_calib_v20->yuvDetectionEnable;
|
|
for(int i=0;i<autoParaV20->lsUsedForYuvDet_len;i++){
|
|
strcpy(autoParaV20->lsUsedForYuvDet[i],awb_calib_v20->lsUsedForYuvDet[i]);
|
|
}
|
|
autoParaV20->yuvDetRef_u = awb_calib_v20->yuv3DRange_param[0].ref_u;
|
|
autoParaV20->downScaleMode = (CalibDbV2_Awb_Down_Scale_Mode_t)awb_calib_v20->dsMode;
|
|
autoParaV20->blkMeasureMode = (CalibDbV2_Awb_Blk_Stat_V20_t)awb_calib_v20->blkMeasureMode;
|
|
autoParaV20->mainWindow.mode = (CalibDb_Window_Mode_t)awb_calib_v20->measeureWindow.mode;
|
|
float window[4] ={0,0,1,1};
|
|
memcpy(autoParaV20->mainWindow.window, window,sizeof(window));
|
|
bool flag = false;
|
|
if(autoParaV20->mainWindow.mode != CALIB_AWB_WINDOW_CFG_AUTO){
|
|
char resName[CALD_AWB_RES_NAME];
|
|
for(int i=0;i<awb_calib_v20->measeureWindow.resNum;i++){
|
|
char* p;
|
|
float width = 0;
|
|
float height =0;
|
|
strcpy(resName,awb_calib_v20->measeureWindow.resName[i]);
|
|
p = strtok(resName, "x");
|
|
if(p==NULL){
|
|
printf("parse resName %s error0,\n",awb_calib_v20->measeureWindow.resName[i]);
|
|
continue;
|
|
}
|
|
width = atoi(p);
|
|
p = strtok(NULL, " ");
|
|
if(p==NULL){
|
|
printf("parse resName %s error1,\n",awb_calib_v20->measeureWindow.resName[i]);
|
|
continue;
|
|
}
|
|
height = atoi(p);
|
|
if (height*width>0.001){
|
|
if((float)awb_calib_v20->measeureWindow.window[i][0]/width > window[0]){
|
|
window[0] = awb_calib_v20->measeureWindow.window[i][0]/width;
|
|
flag = true;
|
|
}
|
|
if((float)awb_calib_v20->measeureWindow.window[i][1]/height > window[1]){
|
|
window[1] = awb_calib_v20->measeureWindow.window[i][1]/height;
|
|
flag = true;
|
|
}
|
|
if((float)awb_calib_v20->measeureWindow.window[i][2]/width < window[2]){
|
|
window[2] = awb_calib_v20->measeureWindow.window[i][2]/width;
|
|
flag = true;
|
|
}
|
|
if((float)awb_calib_v20->measeureWindow.window[i][3]/height < window[3]){
|
|
window[3] = awb_calib_v20->measeureWindow.window[i][3]/height;
|
|
flag = true;
|
|
}
|
|
}else{
|
|
printf("parse resName %s error2,\n",awb_calib_v20->measeureWindow.resName[i]);
|
|
}
|
|
}
|
|
}
|
|
if (flag){
|
|
printf("please check parse mainWindow.window (ratio) is %f,%f,%f,%f\n",window[0],window[1],window[2],window[3]);
|
|
|
|
}
|
|
autoParaV20->limitRange.lumaValue_len= awb_calib_v20->limitRange.lumaNum;
|
|
memcpy(autoParaV20->limitRange.lumaValue,awb_calib_v20->limitRange.lumaValue,autoParaV20->limitRange.lumaValue_len*sizeof(float));
|
|
autoParaV20->limitRange.maxB_len= awb_calib_v20->limitRange.lumaNum;
|
|
memcpy(autoParaV20->limitRange.maxB,awb_calib_v20->limitRange.maxB,autoParaV20->limitRange.maxB_len*sizeof(unsigned short));
|
|
autoParaV20->limitRange.maxR_len= awb_calib_v20->limitRange.lumaNum;
|
|
memcpy(autoParaV20->limitRange.maxR,awb_calib_v20->limitRange.maxR,autoParaV20->limitRange.maxR_len*sizeof(unsigned short));
|
|
autoParaV20->limitRange.maxG_len= awb_calib_v20->limitRange.lumaNum;
|
|
memcpy(autoParaV20->limitRange.maxG,awb_calib_v20->limitRange.maxG,autoParaV20->limitRange.maxG_len*sizeof(unsigned short));
|
|
autoParaV20->limitRange.maxY_len= awb_calib_v20->limitRange.lumaNum;
|
|
memcpy(autoParaV20->limitRange.maxY,awb_calib_v20->limitRange.maxY,autoParaV20->limitRange.maxY_len*sizeof(unsigned short));
|
|
autoParaV20->limitRange.minB_len= awb_calib_v20->limitRange.lumaNum;
|
|
memcpy(autoParaV20->limitRange.minB,awb_calib_v20->limitRange.minB,autoParaV20->limitRange.minB_len*sizeof(unsigned short));
|
|
autoParaV20->limitRange.minR_len= awb_calib_v20->limitRange.lumaNum;
|
|
memcpy(autoParaV20->limitRange.minR,awb_calib_v20->limitRange.minR,autoParaV20->limitRange.minR_len*sizeof(unsigned short));
|
|
autoParaV20->limitRange.minG_len= awb_calib_v20->limitRange.lumaNum;
|
|
memcpy(autoParaV20->limitRange.minG,awb_calib_v20->limitRange.minG,autoParaV20->limitRange.minG_len*sizeof(unsigned short));
|
|
autoParaV20->limitRange.minY_len= awb_calib_v20->limitRange.lumaNum;
|
|
memcpy(autoParaV20->limitRange.minY,awb_calib_v20->limitRange.minY,autoParaV20->limitRange.minY_len*sizeof(unsigned short));
|
|
memcpy(autoParaV20->rgb2TcsPara.rotationMat, awb_calib_v20->rgb2tcs_param.rotationMat, sizeof(autoParaV20->rgb2TcsPara.rotationMat));
|
|
memcpy(autoParaV20->rgb2TcsPara.pseudoLuminanceWeight, awb_calib_v20->rgb2tcs_param.pseudoLuminanceWeight, sizeof(autoParaV20->rgb2TcsPara.pseudoLuminanceWeight));
|
|
autoParaV20->multiWindow.enable = awb_calib_v20->multiwindow_en;
|
|
autoParaV20->multiWindow.multiwindowMode = (CalibDbV2_Awb_Mul_Win_Mode_t)awb_adjust->multiwindowMode;
|
|
for(int i=0;i<CALD_AWB_WINDOW_NUM_MAX;i++){
|
|
for(int j=0;j<4;j++){
|
|
autoParaV20->multiWindow.window[i][j]= awb_calib_v20->multiwindow[i][j];
|
|
}
|
|
}
|
|
for(int i=0;i<CALD_AWB_EXCRANGE_NUM_MAX;i++){
|
|
autoParaV20->extraWpRange[i].domain = (CalibDbV2_Awb_Ext_Range_Dom_t)awb_calib_v20->excludeWpRange[i].domain;
|
|
if(awb_calib_v20->excludeWpRange[i].mode != CALIB_AWB_EXCLUDE_WP_MODE
|
|
&& awb_calib_v20->excludeWpRange[i].mode != CALIB_AWB_ETR_LIGHT_SOUR_MODE ){
|
|
autoParaV20->extraWpRange[i].mode = CALIB_AWB_EXCLUDE_WP_MODE;
|
|
}else{
|
|
autoParaV20->extraWpRange[i].mode = (CalibDbV2_Awb_Ext_Range_Mode_t)awb_calib_v20->excludeWpRange[i].mode;
|
|
}
|
|
autoParaV20->extraWpRange[i].region[0] = awb_calib_v20->excludeWpRange[i].xu[0];
|
|
autoParaV20->extraWpRange[i].region[1] = awb_calib_v20->excludeWpRange[i].xu[1];
|
|
autoParaV20->extraWpRange[i].region[2] = awb_calib_v20->excludeWpRange[i].yv[0];
|
|
autoParaV20->extraWpRange[i].region[3] = awb_calib_v20->excludeWpRange[i].yv[1];
|
|
}
|
|
for(int i=0;i<autoParaV20->lightSources_len;i++){
|
|
strcpy(autoParaV20->lightSources[i].name, awb_calib_v20->lightName[i]);
|
|
autoParaV20->lightSources[i].doorType = (CalibDbV2_Awb_DoorType_t)awb_calib_v20->doorType[i];
|
|
memcpy(autoParaV20->lightSources[i].standardGainValue, awb_calib_v20->standardGainValue[i],sizeof(autoParaV20->lightSources[i].standardGainValue));
|
|
memcpy(autoParaV20->lightSources[i].uvRegion.u, awb_calib_v20->uvRange_param[i].pu_region,sizeof(autoParaV20->lightSources[i].uvRegion.u));
|
|
memcpy(autoParaV20->lightSources[i].uvRegion.v, awb_calib_v20->uvRange_param[i].pv_region,sizeof(autoParaV20->lightSources[i].uvRegion.v));
|
|
autoParaV20->lightSources[i].xyRegion.normal[0] = awb_calib_v20->xyRangeLight[i].NorrangeX[0];
|
|
autoParaV20->lightSources[i].xyRegion.normal[1] = awb_calib_v20->xyRangeLight[i].NorrangeX[1];
|
|
autoParaV20->lightSources[i].xyRegion.normal[2] = awb_calib_v20->xyRangeLight[i].NorrangeY[0];
|
|
autoParaV20->lightSources[i].xyRegion.normal[3] = awb_calib_v20->xyRangeLight[i].NorrangeY[1];
|
|
autoParaV20->lightSources[i].xyRegion.big[0] = awb_calib_v20->xyRangeLight[i].SperangeX[0];
|
|
autoParaV20->lightSources[i].xyRegion.big[1] = awb_calib_v20->xyRangeLight[i].SperangeX[1];
|
|
autoParaV20->lightSources[i].xyRegion.big[2] = awb_calib_v20->xyRangeLight[i].SperangeY[0];
|
|
autoParaV20->lightSources[i].xyRegion.big[3] = awb_calib_v20->xyRangeLight[i].SperangeY[1];
|
|
autoParaV20->lightSources[i].xyRegion.small[0] = awb_calib_v20->xyRangeLight[i].SmalrangeX[0];
|
|
autoParaV20->lightSources[i].xyRegion.small[1] = awb_calib_v20->xyRangeLight[i].SmalrangeX[1];
|
|
autoParaV20->lightSources[i].xyRegion.small[2] = awb_calib_v20->xyRangeLight[i].SmalrangeY[0];
|
|
autoParaV20->lightSources[i].xyRegion.small[3] = awb_calib_v20->xyRangeLight[i].SmalrangeY[1];
|
|
autoParaV20->lightSources[i].yuvRegion.b_uv = awb_calib_v20->yuv3DRange_param[i].b_uv;
|
|
autoParaV20->lightSources[i].yuvRegion.slope_inv_neg_uv= awb_calib_v20->yuv3DRange_param[i].slope_inv_neg_uv;
|
|
autoParaV20->lightSources[i].yuvRegion.slope_factor_uv= awb_calib_v20->yuv3DRange_param[i].slope_factor_uv;
|
|
autoParaV20->lightSources[i].yuvRegion.slope_ydis= awb_calib_v20->yuv3DRange_param[i].slope_ydis;
|
|
autoParaV20->lightSources[i].yuvRegion.b_ydis= awb_calib_v20->yuv3DRange_param[i].b_ydis;
|
|
autoParaV20->lightSources[i].yuvRegion.ref_v= awb_calib_v20->yuv3DRange_param[i].ref_v;
|
|
memcpy(autoParaV20->lightSources[i].yuvRegion.dis, awb_calib_v20->yuv3DRange_param[i].dis, sizeof(autoParaV20->lightSources[i].yuvRegion.dis));
|
|
memcpy(autoParaV20->lightSources[i].yuvRegion.th, awb_calib_v20->yuv3DRange_param[i].th, sizeof(autoParaV20->lightSources[i].yuvRegion.th));
|
|
memcpy(autoParaV20->lightSources[i].staWeight, awb_adjust->awb_light_info[i].staWeight, sizeof(autoParaV20->lightSources[i].staWeight));
|
|
autoParaV20->lightSources[i].dayGainLvThSet[0] = awb_adjust->awb_light_info[i].spatialGain_LV_THL;
|
|
autoParaV20->lightSources[i].dayGainLvThSet[1] = awb_adjust->awb_light_info[i].spatialGain_LV_THH;
|
|
memcpy(autoParaV20->lightSources[i].defaultDayGainLow,awb_calib_v20->spatialGain_L, sizeof(awb_calib_v20->spatialGain_L));
|
|
memcpy(autoParaV20->lightSources[i].defaultDayGainHigh,awb_calib_v20->spatialGain_H, sizeof(awb_calib_v20->spatialGain_H));
|
|
autoParaV20->lightSources[i].xyType2Enable = awb_adjust->awb_light_info[i].xyType2Enable;
|
|
}
|
|
|
|
strcpy(commV20->lightSourceForFirstFrame, awb_adjust->lsForFirstFrame);
|
|
memcpy(commV20->tolerance.lumaValue, awb_adjust->tolerance.LV,sizeof(float)*commV20->tolerance.lumaValue_len);
|
|
memcpy(commV20->tolerance.toleranceValue, awb_adjust->tolerance.value,sizeof(float)*commV20->tolerance.toleranceValue_len);
|
|
memcpy(commV20->runInterval.lumaValue, awb_adjust->runInterval.LV,sizeof(float)*commV20->runInterval.lumaValue_len);
|
|
memcpy(commV20->runInterval.intervalValue, awb_adjust->runInterval.value,sizeof(float)*commV20->runInterval.intervalValue_len);
|
|
commV20->dampFactor.dFStep = awb_adjust->dFStep;
|
|
commV20->dampFactor.dFMin = awb_adjust->dFMin;
|
|
commV20->dampFactor.dFMax = awb_adjust->dFMax;
|
|
commV20->dampFactor.lvIIRsize = awb_adjust->LvIIRsize;
|
|
commV20->dampFactor.lvVarTh = awb_adjust->LvVarTh;
|
|
commV20->wbGainAdjust.enable = awb_adjust->wbGainAdjustEn;
|
|
for(int i=0; i<commV20->wbGainAdjust.lutAll_len;i++){
|
|
commV20->wbGainAdjust.lutAll[i].lumaValue = awb_adjust->cct_lut_cfg[i].lv;
|
|
commV20->wbGainAdjust.lutAll[i].ct_grid_num = awb_adjust->cct_lut_cfg[0].ct_grid_num;
|
|
commV20->wbGainAdjust.lutAll[i].cri_grid_num = awb_adjust->cct_lut_cfg[0].cri_grid_num;
|
|
memcpy(commV20->wbGainAdjust.lutAll[i].ct_in_range, awb_adjust->cct_lut_cfg[0].ct_range,sizeof(commV20->wbGainAdjust.lutAll[i].ct_in_range));
|
|
memcpy(commV20->wbGainAdjust.lutAll[i].cri_in_range, awb_adjust->cct_lut_cfg[0].cri_range,sizeof(commV20->wbGainAdjust.lutAll[i].cri_in_range));
|
|
memcpy(commV20->wbGainAdjust.lutAll[i].ct_lut_out,awb_adjust->cct_lut_cfg[i].ct_lut_out,sizeof(float)*commV20->wbGainAdjust.lutAll[i].ct_lut_out_len);
|
|
memcpy(commV20->wbGainAdjust.lutAll[i].cri_lut_out,awb_adjust->cct_lut_cfg[i].cri_lut_out,sizeof(float)*commV20->wbGainAdjust.lutAll[i].cri_lut_out_len);
|
|
}
|
|
commV20->wbGainDaylightClip.enable= awb_calib_v20->wbGainDaylightClipEn;
|
|
commV20->wbGainDaylightClip.outdoor_cct_min = awb_calib_v20->cct_clip_cfg.outdoor_cct_min;
|
|
commV20->wbGainClip.enable= awb_calib_v20->wbGainClipEn;
|
|
memcpy(commV20->wbGainClip.cct, awb_calib_v20->cct_clip_cfg.cct,sizeof(float)*commV20->wbGainClip.cct_len);
|
|
memcpy(commV20->wbGainClip.cri_bound_low, awb_calib_v20->cct_clip_cfg.cri_bound_low,sizeof(float)*commV20->wbGainClip.cri_bound_low_len);
|
|
memcpy(commV20->wbGainClip.cri_bound_up, awb_calib_v20->cct_clip_cfg.cri_bound_up,sizeof(float)*commV20->wbGainClip.cri_bound_up_len);
|
|
commV20->division.lumaValThLow= awb_adjust->LV_THL;
|
|
commV20->division.lumaValThLow2= awb_adjust->LV_THL2;
|
|
commV20->division.lumaValThHigh= awb_adjust->LV_THH;
|
|
commV20->division.lumaValThHigh2= awb_adjust->LV_THH2;
|
|
commV20->division.wpNumTh.lumaValue_len = awb_adjust->WP_TH.num;
|
|
memcpy(commV20->division.wpNumTh.lumaValue, awb_adjust->WP_TH.lumaValue,sizeof(float)*commV20->division.wpNumTh.lumaValue_len);
|
|
commV20->division.wpNumTh.high_len = awb_adjust->WP_TH.num;
|
|
memcpy(commV20->division.wpNumTh.high, awb_adjust->WP_TH.WP_THH,sizeof(float)*commV20->division.wpNumTh.lumaValue_len);
|
|
commV20->division.wpNumTh.low_len = awb_adjust->WP_TH.num;
|
|
memcpy(commV20->division.wpNumTh.low, awb_adjust->WP_TH.WP_THL,sizeof(float)*commV20->division.wpNumTh.lumaValue_len);
|
|
memcpy(commV20->defaultNightGain,awb_calib_v20->temporalDefaultGain, sizeof(commV20->defaultNightGain));
|
|
memcpy(commV20->lumaValueMatrix,awb_adjust->LVMatrix, sizeof(commV20->lumaValueMatrix));
|
|
memcpy(commV20->defaultNightGainWeight,awb_adjust->tempWeight, sizeof(commV20->defaultNightGainWeight));
|
|
commV20->probCalcDis.proDis_THH = awb_adjust->proDis_THH;
|
|
commV20->probCalcDis.proDis_THL = awb_adjust->proDis_THL;
|
|
commV20->probCalcLv.outdoorLumaValThHigh = awb_adjust->proLV_Outdoor_THH;
|
|
commV20->probCalcLv.outdoorLumaValThLow = awb_adjust->proLV_Outdoor_THL;
|
|
commV20->probCalcWp.wpNumPercTh= awb_adjust->wpNumPercTh;
|
|
commV20->probCalcWp.wpNumPercTh2= 0.2;
|
|
commV20->converged.varThforDamp = awb_adjust->convergedVarTh;
|
|
commV20->converged.varThforUnDamp= awb_adjust->convergedVarTh;
|
|
commV20->xyRegionStableSelection.enable = true;
|
|
commV20->xyRegionStableSelection.wpNumTh.lumaValue_len= awb_adjust->wpNumTh.num;
|
|
memcpy(commV20->xyRegionStableSelection.wpNumTh.lumaValue,awb_adjust->wpNumTh.lumaValue,sizeof(float)*awb_adjust->wpNumTh.num);
|
|
commV20->xyRegionStableSelection.wpNumTh.forBigType_len= awb_adjust->wpNumTh.num;
|
|
memcpy(commV20->xyRegionStableSelection.wpNumTh.forBigType,awb_adjust->wpNumTh.wpNumThForBigType,sizeof(float)*awb_adjust->wpNumTh.num);
|
|
commV20->xyRegionStableSelection.wpNumTh.forExtraType_len= awb_adjust->wpNumTh.num;
|
|
memcpy(commV20->xyRegionStableSelection.wpNumTh.forExtraType,awb_adjust->wpNumTh.wpNumThForExtraType,sizeof(float)*awb_adjust->wpNumTh.num);
|
|
commV20->xyRegionStableSelection.xyTypeListSize = awb_adjust->xyTypeListSize;
|
|
commV20->xyRegionStableSelection.varianceLumaTh = awb_adjust->varianceLumaTh;
|
|
memcpy(commV20->weightForNightGainCalc, awb_adjust->temporalGainSetWeight, commV20->weightForNightGainCalc_len*sizeof(unsigned char));
|
|
commV20->singleColorProces.enable = true;
|
|
for(int i=0; i<commV20->singleColorProces.colorBlock_len; i++){
|
|
commV20->singleColorProces.colorBlock[i].index = awb_calib_v20->sIndSelColor[i];
|
|
commV20->singleColorProces.colorBlock[i].meanC= awb_calib_v20->sMeanCh[0][i];
|
|
commV20->singleColorProces.colorBlock[i].meanH= awb_calib_v20->sMeanCh[1][i];
|
|
}
|
|
for(int i=0; i<commV20->singleColorProces.lsUsedForEstimation_len; i++){
|
|
strcpy(commV20->singleColorProces.lsUsedForEstimation[i].name, awb_calib_v20->sNameIllEst[i]);
|
|
commV20->singleColorProces.lsUsedForEstimation[i].RGain= awb_calib_v20->srGain[i];
|
|
commV20->singleColorProces.lsUsedForEstimation[i].BGain= awb_calib_v20->sbGain[i];
|
|
}
|
|
commV20->singleColorProces.alpha= awb_calib_v20->sAlpha;
|
|
memcpy(commV20->lineRgBg,awb_calib_v20->lineRgBg,sizeof(commV20->lineRgBg));
|
|
memcpy(commV20->lineRgProjCCT,awb_calib_v20->lineRgProjCCT,sizeof(commV20->lineRgProjCCT));
|
|
commV20->chrAdpttAdj.enable = awb_adjust->ca_enable;
|
|
commV20->chrAdpttAdj.laCalcFactor = awb_adjust->ca_LACalcFactor;
|
|
memcpy(commV20->chrAdpttAdj.targetGain, awb_calib_v20->ca_targetGain, sizeof(commV20->chrAdpttAdj.targetGain));
|
|
commV20->remosaicCfg.enable = awb_adjust->remosaic_cfg.enable;
|
|
commV20->remosaicCfg.applyInvWbGainEnable= false;
|
|
memcpy(commV20->remosaicCfg.sensorWbGain, awb_adjust->remosaic_cfg.sensor_awb_gain, sizeof(commV20->remosaicCfg.sensorWbGain));
|
|
memcpy(&commV20->wbGainOffset, &awb_adjust->wbGainOffset, sizeof(commV20->wbGainOffset));
|
|
|
|
}
|
|
void convertCalib2calibV2(const CamCalibDbContext_t *calib,CamCalibDbV2Context_t *calibV2)
|
|
{
|
|
|
|
convertCalib2calibV20(calib, calibV2);
|
|
convertCalib2calibV21(calib, calibV2);
|
|
|
|
}
|
|
|
|
|
|
|