/* * 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. * */ #include "rk_aiq_user_api2_custom_awb.h" #include "RkAiqCalibDbV2Helper.h" #ifdef RK_SIMULATOR_HW #define CHECK_USER_API_ENABLE #endif RKAIQ_BEGIN_DECLARE #define RKISP_ALGO_AWB_DEMO_VERSION "v0.0.1" #define RKISP_ALGO_AWB_DEMO_VENDOR "Rockchip" #define RKISP_ALGO_AWB_DEMO_DESCRIPTION "Rockchip Custom Awb" /* awb config of AIQ framework */ typedef struct rk_aiq_rkAwb_config_s { int Working_mode;//values look up in rk_aiq_working_mode_t definiton int RawWidth; int RawHeight; rk_aiq_isp_awb_meas_cfg_v3x_t awbHwConfig; } rk_aiq_rkAwb_config_t; /* instance was created by AIQ framework when rk_aiq_uapi_sysctl_regLib called */ typedef struct _RkAiqAwbAlgoContext { rk_aiq_customeAwb_cbs_t cbs; // set by register union { rk_aiq_sys_ctx_t* aiq_ctx; // set by register rk_aiq_camgroup_ctx_t* group_ctx; // set by register }; rk_aiq_rkAwb_config_t rkCfg; // awb config of AIQ framework rk_aiq_customeAwb_results_t customRes; // result of pfn_awb_run bool cutomAwbInit; bool updateCalib; uint8_t log_level; uint8_t log_sub_modules; int camIdArray[6]; int camIdArrayLen; bool isGroupMode; } RkAiqAwbAlgoContext; static void WriteMeasureResult(rk_aiq_awb_stat_res_v201_t &awb_measure_result, int log_level ,int camera_id = 0); static void WriteDataForThirdParty(const rk_aiq_isp_awb_meas_cfg_v3x_t &wpDetectPara,int log_level,int camera_id = 0); static XCamReturn AwbDemoCreateCtx(RkAiqAlgoContext **context, const AlgoCtxInstanceCfg* cfg) { LOGD_AWB_SUBM(0xff, "%s ENTER", __func__); RESULT ret = RK_AIQ_RET_SUCCESS; RkAiqAwbAlgoContext *ctx = new RkAiqAwbAlgoContext(); if (ctx == NULL) { printf( "%s: create awb context fail!\n", __FUNCTION__); return XCAM_RETURN_ERROR_MEM; } memset(ctx, 0, sizeof(*ctx)); xcam_get_awb_log_level(&ctx->log_level, &ctx->log_sub_modules); if (cfg->isGroupMode) { AlgoCtxInstanceCfgCamGroup* grpCfg = (AlgoCtxInstanceCfgCamGroup*)cfg; memcpy(ctx->camIdArray, grpCfg->camIdArray, sizeof(ctx->camIdArray)); ctx->camIdArrayLen = grpCfg->camIdArrayLen; ctx->isGroupMode = true; } else { ctx->camIdArrayLen = 0; ctx->isGroupMode = false; } *context = (RkAiqAlgoContext *)ctx; LOGD_AWB_SUBM(0xff, "%s EXIT", __func__); return XCAM_RETURN_NO_ERROR; } static XCamReturn AwbDemoDestroyCtx(RkAiqAlgoContext *context) { LOGD_AWB_SUBM(0xff, "%s ENTER", __func__); RkAiqAwbAlgoContext* context2 = (RkAiqAwbAlgoContext*)context; if(context2 == NULL) return XCAM_RETURN_NO_ERROR; if (context2->cbs.pfn_awb_exit) { context2->cbs.pfn_awb_exit(context2->aiq_ctx); context2->cutomAwbInit = false; } delete context2; context2 = NULL; LOGD_AWB_SUBM(0xff, "%s EXIT", __func__); return XCAM_RETURN_NO_ERROR; } static XCamReturn initCustomAwbHwConfigGw(rk_aiq_customAwb_hw_cfg_t *awbHwConfig) { LOG1_AWB_SUBM(0xff, "%s ENTER", __func__); XCamReturn ret = XCAM_RETURN_NO_ERROR; memset(awbHwConfig,0,sizeof(rk_aiq_customAwb_hw_cfg_t)); awbHwConfig->awbEnable = 1; awbHwConfig->xyDetectionEnable = 0; awbHwConfig->uvDetectionEnable = 0; awbHwConfig->threeDyuvEnable = 0; awbHwConfig->blkWeightEnable = 0; awbHwConfig->lscBypEnable = 0; awbHwConfig->blkMeasureMode = RK_AIQ_AWB_BLK_STAT_MODE_REALWP_V201; awbHwConfig->xyRangeTypeForBlkStatistics = (rk_aiq_awb_xy_type_v201_t)0; awbHwConfig->illIdxForBlkStatistics = (rk_aiq_awb_blk_stat_realwp_ill_e)7; awbHwConfig->wpDiffWeiEnable = 0; awbHwConfig->xyRangeTypeForWpHist = (rk_aiq_awb_xy_type_v201_t)0; awbHwConfig->lightNum = 7; awbHwConfig->windowSet[0] = 0; awbHwConfig->windowSet[1] = 0; awbHwConfig->windowSet[2] = 3840; awbHwConfig->windowSet[3] = 2160; awbHwConfig->maxR = 230; awbHwConfig->maxG = 230; awbHwConfig->maxB = 230; awbHwConfig->maxY = 230; awbHwConfig->minR = 3; awbHwConfig->minG = 3; awbHwConfig->minB = 3; awbHwConfig->minY = 3; awbHwConfig->multiwindow_en = 0; LOG1_AWB_SUBM(0xff, "%s EXIT", __func__); return ret; } static XCamReturn initCustomAwbHwConfigWp(rk_aiq_customAwb_hw_cfg_t *awbHwConfig) { LOG1_AWB_SUBM(0xff, "%s ENTER", __func__); XCamReturn ret = XCAM_RETURN_NO_ERROR; memset(awbHwConfig,0,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t)); awbHwConfig->awbEnable = 1;//rawawb enable awbHwConfig->xyDetectionEnable = 1;//xy detect enable for all light awbHwConfig->uvDetectionEnable = 1;//uv detect enable for all light awbHwConfig->threeDyuvEnable = 1;//uv detect enable for all light awbHwConfig->blkWeightEnable = 0; awbHwConfig->lscBypEnable = 0; awbHwConfig->blkMeasureMode = RK_AIQ_AWB_BLK_STAT_MODE_REALWP_V201; awbHwConfig->xyRangeTypeForBlkStatistics = (rk_aiq_awb_xy_type_v201_t)0; awbHwConfig->illIdxForBlkStatistics = (rk_aiq_awb_blk_stat_realwp_ill_e)7; awbHwConfig->wpDiffWeiEnable = 0; awbHwConfig->xyRangeTypeForWpHist = (rk_aiq_awb_xy_type_v201_t)0; awbHwConfig->threeDyuvIllu[0] = 7; awbHwConfig->threeDyuvIllu[1] = 7; awbHwConfig->threeDyuvIllu[2] = 7; awbHwConfig->threeDyuvIllu[3] = 7; awbHwConfig->lightNum = 7; //measurment light num ,0~7 awbHwConfig->windowSet[0] = 0;//crop h_offs mod 2 == 0 awbHwConfig->windowSet[1] = 0;//crop v_offs mod 2 == 0 awbHwConfig->windowSet[2] = 3840;//crop h_size,8x8:mod 8==0,4x4:mod 4==0 awbHwConfig->windowSet[3] = 2160;//crop v_size,8x8:mod 8==0,4x4:mod 4==0 awbHwConfig->maxR = 230; awbHwConfig->maxG = 230; awbHwConfig->maxB = 230; awbHwConfig->maxY = 230; awbHwConfig->minR = 3; awbHwConfig->minG = 3; awbHwConfig->minB = 3; awbHwConfig->minY = 3; awbHwConfig->uvRange_param[0].pu_region[0] = 247; awbHwConfig->uvRange_param[0].pv_region[0] = 252; awbHwConfig->uvRange_param[0].pu_region[1] = 114; awbHwConfig->uvRange_param[0].pv_region[1] = 206; awbHwConfig->uvRange_param[0].pu_region[2] = 105; awbHwConfig->uvRange_param[0].pv_region[2] = 243; awbHwConfig->uvRange_param[0].pu_region[3] = 246; awbHwConfig->uvRange_param[0].pv_region[3] = 254; awbHwConfig->uvRange_param[0].slope_inv[0] = 2961; awbHwConfig->uvRange_param[0].slope_inv[1] = -249; awbHwConfig->uvRange_param[0].slope_inv[2] = 13126; awbHwConfig->uvRange_param[0].slope_inv[3] = -512; awbHwConfig->uvRange_param[1].pu_region[0] = 251; awbHwConfig->uvRange_param[1].pv_region[0] = 249; awbHwConfig->uvRange_param[1].pu_region[1] = 159; awbHwConfig->uvRange_param[1].pv_region[1] = 160; awbHwConfig->uvRange_param[1].pu_region[2] = 141; awbHwConfig->uvRange_param[1].pv_region[2] = 173; awbHwConfig->uvRange_param[1].pu_region[3] = 249; awbHwConfig->uvRange_param[1].pv_region[3] = 250; awbHwConfig->uvRange_param[1].slope_inv[0] = 1059; awbHwConfig->uvRange_param[1].slope_inv[1] = -1418; awbHwConfig->uvRange_param[1].slope_inv[2] = 1436; awbHwConfig->uvRange_param[1].slope_inv[3] = -2048; awbHwConfig->uvRange_param[2].pu_region[0] = 252; awbHwConfig->uvRange_param[2].pv_region[0] = 249; awbHwConfig->uvRange_param[2].pu_region[1] = 180; awbHwConfig->uvRange_param[2].pv_region[1] = 148; awbHwConfig->uvRange_param[2].pu_region[2] = 158; awbHwConfig->uvRange_param[2].pv_region[2] = 160; awbHwConfig->uvRange_param[2].pu_region[3] = 250; awbHwConfig->uvRange_param[2].pv_region[3] = 249; awbHwConfig->uvRange_param[2].slope_inv[0] = 730; awbHwConfig->uvRange_param[2].slope_inv[1] = -1877; awbHwConfig->uvRange_param[2].slope_inv[2] = 1059; awbHwConfig->uvRange_param[2].slope_inv[3] = 262143; awbHwConfig->uvRange_param[3].pu_region[0] = 254; awbHwConfig->uvRange_param[3].pv_region[0] = 247; awbHwConfig->uvRange_param[3].pu_region[1] = 204; awbHwConfig->uvRange_param[3].pv_region[1] = 134; awbHwConfig->uvRange_param[3].pu_region[2] = 180; awbHwConfig->uvRange_param[3].pv_region[2] = 148; awbHwConfig->uvRange_param[3].pu_region[3] = 252; awbHwConfig->uvRange_param[3].pv_region[3] = 249; awbHwConfig->uvRange_param[3].slope_inv[0] = 453; awbHwConfig->uvRange_param[3].slope_inv[1] = -1755; awbHwConfig->uvRange_param[3].slope_inv[2] = 730; awbHwConfig->uvRange_param[3].slope_inv[3] = -1024; awbHwConfig->uvRange_param[4].pu_region[0] = 255; awbHwConfig->uvRange_param[4].pv_region[0] = 247; awbHwConfig->uvRange_param[4].pu_region[1] = 225; awbHwConfig->uvRange_param[4].pv_region[1] = 129; awbHwConfig->uvRange_param[4].pu_region[2] = 201; awbHwConfig->uvRange_param[4].pv_region[2] = 134; awbHwConfig->uvRange_param[4].pu_region[3] = 254; awbHwConfig->uvRange_param[4].pv_region[3] = 247; awbHwConfig->uvRange_param[4].slope_inv[0] = 260; awbHwConfig->uvRange_param[4].slope_inv[1] = -4915; awbHwConfig->uvRange_param[4].slope_inv[2] = 480; awbHwConfig->uvRange_param[4].slope_inv[3] = 262143; awbHwConfig->uvRange_param[5].pu_region[0] = 246; awbHwConfig->uvRange_param[5].pv_region[0] = 257; awbHwConfig->uvRange_param[5].pu_region[1] = 101; awbHwConfig->uvRange_param[5].pv_region[1] = 278; awbHwConfig->uvRange_param[5].pu_region[2] = 104; awbHwConfig->uvRange_param[5].pv_region[2] = 243; awbHwConfig->uvRange_param[5].pu_region[3] = 246; awbHwConfig->uvRange_param[5].pv_region[3] = 254; awbHwConfig->uvRange_param[5].slope_inv[0] = -7070; awbHwConfig->uvRange_param[5].slope_inv[1] = -88; awbHwConfig->uvRange_param[5].slope_inv[2] = 13219; awbHwConfig->uvRange_param[5].slope_inv[3] = 0; awbHwConfig->uvRange_param[6].pu_region[0] = 250; awbHwConfig->uvRange_param[6].pv_region[0] = 250; awbHwConfig->uvRange_param[6].pu_region[1] = 144; awbHwConfig->uvRange_param[6].pv_region[1] = 171; awbHwConfig->uvRange_param[6].pu_region[2] = 114; awbHwConfig->uvRange_param[6].pv_region[2] = 207; awbHwConfig->uvRange_param[6].pu_region[3] = 247; awbHwConfig->uvRange_param[6].pv_region[3] = 252; awbHwConfig->uvRange_param[6].slope_inv[0] = 1374; awbHwConfig->uvRange_param[6].slope_inv[1] = -853; awbHwConfig->uvRange_param[6].slope_inv[2] = 3026; awbHwConfig->uvRange_param[6].slope_inv[3] = -1536; awbHwConfig->icrgb2RYuv_matrix[0] = 12; awbHwConfig->icrgb2RYuv_matrix[1] = 69; awbHwConfig->icrgb2RYuv_matrix[2] = 7; awbHwConfig->icrgb2RYuv_matrix[3] = 665; awbHwConfig->icrgb2RYuv_matrix[4] = -44; awbHwConfig->icrgb2RYuv_matrix[5] = -2; awbHwConfig->icrgb2RYuv_matrix[6] = 32; awbHwConfig->icrgb2RYuv_matrix[7] = 2268; awbHwConfig->icrgb2RYuv_matrix[8] = 23; awbHwConfig->icrgb2RYuv_matrix[9] = -24; awbHwConfig->icrgb2RYuv_matrix[10] = 27; awbHwConfig->icrgb2RYuv_matrix[11] = 1690; awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[0] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[1] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[2] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[3] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[4] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[5] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[0] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[1] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[2] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[3] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[4] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[5] = 0; awbHwConfig->ic3Dyuv2Range_param[0].lineP1[0] = 0; awbHwConfig->ic3Dyuv2Range_param[0].lineP1[1] = 0; awbHwConfig->ic3Dyuv2Range_param[0].lineP1[2] = 0; awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[0] = 0; awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[1] = 0; awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[2] = 0; awbHwConfig->ic3Dyuv2Range_param[0].disP1P2 = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[0] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[1] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[2] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[3] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[4] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[5] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[0] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[1] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[2] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[3] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[4] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[5] = 0; awbHwConfig->ic3Dyuv2Range_param[1].lineP1[0] = 0; awbHwConfig->ic3Dyuv2Range_param[1].lineP1[1] = 0; awbHwConfig->ic3Dyuv2Range_param[1].lineP1[2] = 0; awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[0] = 0; awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[1] = 0; awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[2] = 0; awbHwConfig->ic3Dyuv2Range_param[1].disP1P2 = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[0] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[1] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[2] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[3] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[4] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[5] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[0] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[1] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[2] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[3] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[4] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[5] = 0; awbHwConfig->ic3Dyuv2Range_param[2].lineP1[0] = 0; awbHwConfig->ic3Dyuv2Range_param[2].lineP1[1] = 0; awbHwConfig->ic3Dyuv2Range_param[2].lineP1[2] = 0; awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[0] = 0; awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[1] = 0; awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[2] = 0; awbHwConfig->ic3Dyuv2Range_param[2].disP1P2 = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[0] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[1] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[2] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[3] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[4] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[5] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[0] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[1] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[2] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[3] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[4] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[5] = 0; awbHwConfig->ic3Dyuv2Range_param[3].lineP1[0] = 0; awbHwConfig->ic3Dyuv2Range_param[3].lineP1[1] = 0; awbHwConfig->ic3Dyuv2Range_param[3].lineP1[2] = 0; awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[0] = 0; awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[1] = 0; awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[2] = 0; awbHwConfig->ic3Dyuv2Range_param[3].disP1P2 = 0; awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[0] = 1534; awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[1] = 1535; awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[2] = 1027; awbHwConfig->rgb2xy_param.rotationMat[0] = -2202; awbHwConfig->rgb2xy_param.rotationMat[1] = 3454; awbHwConfig->rgb2xy_param.rotationMat[2] = -535; awbHwConfig->rgb2xy_param.rotationMat[3] = 3454; awbHwConfig->rgb2xy_param.rotationMat[4] = 2202; awbHwConfig->rgb2xy_param.rotationMat[5] = 2826; awbHwConfig->xyRange_param[0].NorrangeX[0] = -1432; awbHwConfig->xyRange_param[0].NorrangeX[1] = -962; awbHwConfig->xyRange_param[0].NorrangeY[0] = 134; awbHwConfig->xyRange_param[0].NorrangeY[1] = -30; awbHwConfig->xyRange_param[0].SperangeX[0] = -1432; awbHwConfig->xyRange_param[0].SperangeX[1] = -962; awbHwConfig->xyRange_param[0].SperangeY[0] = 165; awbHwConfig->xyRange_param[0].SperangeY[1] = -60; awbHwConfig->xyRange_param[1].NorrangeX[0] = -959; awbHwConfig->xyRange_param[1].NorrangeX[1] = -507; awbHwConfig->xyRange_param[1].NorrangeY[0] = -46; awbHwConfig->xyRange_param[1].NorrangeY[1] = -159; awbHwConfig->xyRange_param[1].SperangeX[0] = -961; awbHwConfig->xyRange_param[1].SperangeX[1] = -507; awbHwConfig->xyRange_param[1].SperangeY[0] = -46; awbHwConfig->xyRange_param[1].SperangeY[1] = -179; awbHwConfig->xyRange_param[2].NorrangeX[0] = -507; awbHwConfig->xyRange_param[2].NorrangeX[1] = -160; awbHwConfig->xyRange_param[2].NorrangeY[0] = 181; awbHwConfig->xyRange_param[2].NorrangeY[1] = 10; awbHwConfig->xyRange_param[2].SperangeX[0] = -507; awbHwConfig->xyRange_param[2].SperangeX[1] = -160; awbHwConfig->xyRange_param[2].SperangeY[0] = 205; awbHwConfig->xyRange_param[2].SperangeY[1] = -20; awbHwConfig->xyRange_param[3].NorrangeX[0] = -160; awbHwConfig->xyRange_param[3].NorrangeX[1] = 74; awbHwConfig->xyRange_param[3].NorrangeY[0] = 79; awbHwConfig->xyRange_param[3].NorrangeY[1] = -85; awbHwConfig->xyRange_param[3].SperangeX[0] = -160; awbHwConfig->xyRange_param[3].SperangeX[1] = 74; awbHwConfig->xyRange_param[3].SperangeY[0] = 109; awbHwConfig->xyRange_param[3].SperangeY[1] = -103; awbHwConfig->xyRange_param[4].NorrangeX[0] = 74; awbHwConfig->xyRange_param[4].NorrangeX[1] = 227; awbHwConfig->xyRange_param[4].NorrangeY[0] = 102; awbHwConfig->xyRange_param[4].NorrangeY[1] = -66; awbHwConfig->xyRange_param[4].SperangeX[0] = 74; awbHwConfig->xyRange_param[4].SperangeX[1] = 227; awbHwConfig->xyRange_param[4].SperangeY[0] = 133; awbHwConfig->xyRange_param[4].SperangeY[1] = -86; awbHwConfig->xyRange_param[5].NorrangeX[0] = -1742; awbHwConfig->xyRange_param[5].NorrangeX[1] = -1432; awbHwConfig->xyRange_param[5].NorrangeY[0] = 90; awbHwConfig->xyRange_param[5].NorrangeY[1] = -80; awbHwConfig->xyRange_param[5].SperangeX[0] = -1742; awbHwConfig->xyRange_param[5].SperangeX[1] = -1432; awbHwConfig->xyRange_param[5].SperangeY[0] = 121; awbHwConfig->xyRange_param[5].SperangeY[1] = -111; awbHwConfig->xyRange_param[6].NorrangeX[0] = -962; awbHwConfig->xyRange_param[6].NorrangeX[1] = -509; awbHwConfig->xyRange_param[6].NorrangeY[0] = 114; awbHwConfig->xyRange_param[6].NorrangeY[1] = -43; awbHwConfig->xyRange_param[6].SperangeX[0] = -962; awbHwConfig->xyRange_param[6].SperangeX[1] = -509; awbHwConfig->xyRange_param[6].SperangeY[0] = 134; awbHwConfig->xyRange_param[6].SperangeY[1] = -45; awbHwConfig->multiwindow_en = 0; awbHwConfig->multiwindow[0][0] = 0; awbHwConfig->multiwindow[0][1] = 0; awbHwConfig->multiwindow[0][2] = 0; awbHwConfig->multiwindow[0][3] = 0; awbHwConfig->multiwindow[1][0] = 0; awbHwConfig->multiwindow[1][1] = 0; awbHwConfig->multiwindow[1][2] = 0; awbHwConfig->multiwindow[1][3] = 0; awbHwConfig->multiwindow[2][0] = 0; awbHwConfig->multiwindow[2][1] = 0; awbHwConfig->multiwindow[2][2] = 0; awbHwConfig->multiwindow[2][3] = 0; awbHwConfig->multiwindow[3][0] = 0; awbHwConfig->multiwindow[3][1] = 0; awbHwConfig->multiwindow[3][2] = 0; awbHwConfig->multiwindow[3][3] = 0; awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[0].measureEnable = 0; awbHwConfig->excludeWpRange[0].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[0].xu[0] = 0; awbHwConfig->excludeWpRange[0].xu[1] = 0; awbHwConfig->excludeWpRange[0].yv[0] = 0; awbHwConfig->excludeWpRange[0].yv[1] = 0; awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[1].measureEnable = 0; awbHwConfig->excludeWpRange[1].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[1].xu[0] = 0; awbHwConfig->excludeWpRange[1].xu[1] = 0; awbHwConfig->excludeWpRange[1].yv[0] = 0; awbHwConfig->excludeWpRange[1].yv[1] = 0; awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[2].measureEnable = 0; awbHwConfig->excludeWpRange[2].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[2].xu[0] = 0; awbHwConfig->excludeWpRange[2].xu[1] = 0; awbHwConfig->excludeWpRange[2].yv[0] = 0; awbHwConfig->excludeWpRange[2].yv[1] = 0; awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[3].measureEnable = 0; awbHwConfig->excludeWpRange[3].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[3].xu[0] = 0; awbHwConfig->excludeWpRange[3].xu[1] = 0; awbHwConfig->excludeWpRange[3].yv[0] = 0; awbHwConfig->excludeWpRange[3].yv[1] = 0; awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[4].measureEnable = 0; awbHwConfig->excludeWpRange[4].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[4].xu[0] = 0; awbHwConfig->excludeWpRange[4].xu[1] = 0; awbHwConfig->excludeWpRange[4].yv[0] = 0; awbHwConfig->excludeWpRange[4].yv[1] = 0; awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[5].measureEnable = 0; awbHwConfig->excludeWpRange[5].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[5].xu[0] = 0; awbHwConfig->excludeWpRange[5].xu[1] = 0; awbHwConfig->excludeWpRange[5].yv[0] = 0; awbHwConfig->excludeWpRange[5].yv[1] = 0; awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[6].measureEnable = 0; awbHwConfig->excludeWpRange[6].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[6].xu[0] = 0; awbHwConfig->excludeWpRange[6].xu[1] = 0; awbHwConfig->excludeWpRange[6].yv[0] = 0; awbHwConfig->excludeWpRange[6].yv[1] = 0; awbHwConfig->wpDiffwei_y[0] =0; awbHwConfig->wpDiffwei_y[1] =16; awbHwConfig->wpDiffwei_y[2] =32; awbHwConfig->wpDiffwei_y[3] =64; awbHwConfig->wpDiffwei_y[4] =96; awbHwConfig->wpDiffwei_y[5] =128; awbHwConfig->wpDiffwei_y[6] =192; awbHwConfig->wpDiffwei_y[7] =224; awbHwConfig->wpDiffwei_y[8] =240; awbHwConfig->wpDiffwei_w[0] =31; awbHwConfig->wpDiffwei_w[1] =31; awbHwConfig->wpDiffwei_w[2] =31; awbHwConfig->wpDiffwei_w[3] =31; awbHwConfig->wpDiffwei_w[4] =31; awbHwConfig->wpDiffwei_w[5] =31; awbHwConfig->wpDiffwei_w[6] =31; awbHwConfig->wpDiffwei_w[7] =31; awbHwConfig->wpDiffwei_w[8] =31; awbHwConfig->blkWeight[0] =6; awbHwConfig->blkWeight[1] =6; awbHwConfig->blkWeight[2] =6; awbHwConfig->blkWeight[3] =8; awbHwConfig->blkWeight[4] =8; awbHwConfig->blkWeight[5] =8; awbHwConfig->blkWeight[6] =8; awbHwConfig->blkWeight[7] =10; awbHwConfig->blkWeight[8] =8; awbHwConfig->blkWeight[9] =8; awbHwConfig->blkWeight[10] =8; awbHwConfig->blkWeight[11] =8; awbHwConfig->blkWeight[12] =6; awbHwConfig->blkWeight[13] =6; awbHwConfig->blkWeight[14] =6; awbHwConfig->blkWeight[15] =6; awbHwConfig->blkWeight[16] =6; awbHwConfig->blkWeight[17] =8; awbHwConfig->blkWeight[18] =8; awbHwConfig->blkWeight[19] =10; awbHwConfig->blkWeight[20] =10; awbHwConfig->blkWeight[21] =12; awbHwConfig->blkWeight[22] =12; awbHwConfig->blkWeight[23] =12; awbHwConfig->blkWeight[24] =10; awbHwConfig->blkWeight[25] =10; awbHwConfig->blkWeight[26] =8; awbHwConfig->blkWeight[27] =8; awbHwConfig->blkWeight[28] =6; awbHwConfig->blkWeight[29] =6; awbHwConfig->blkWeight[30] =6; awbHwConfig->blkWeight[31] =8; awbHwConfig->blkWeight[32] =10; awbHwConfig->blkWeight[33] =12; awbHwConfig->blkWeight[34] =14; awbHwConfig->blkWeight[35] =16; awbHwConfig->blkWeight[36] =18; awbHwConfig->blkWeight[37] =20; awbHwConfig->blkWeight[38] =18; awbHwConfig->blkWeight[39] =16; awbHwConfig->blkWeight[40] =14; awbHwConfig->blkWeight[41] =12; awbHwConfig->blkWeight[42] =10; awbHwConfig->blkWeight[43] =8; awbHwConfig->blkWeight[44] =6; awbHwConfig->blkWeight[45] =8; awbHwConfig->blkWeight[46] =8; awbHwConfig->blkWeight[47] =12; awbHwConfig->blkWeight[48] =16; awbHwConfig->blkWeight[49] =22; awbHwConfig->blkWeight[50] =26; awbHwConfig->blkWeight[51] =30; awbHwConfig->blkWeight[52] =32; awbHwConfig->blkWeight[53] =30; awbHwConfig->blkWeight[54] =26; awbHwConfig->blkWeight[55] =22; awbHwConfig->blkWeight[56] =16; awbHwConfig->blkWeight[57] =12; awbHwConfig->blkWeight[58] =8; awbHwConfig->blkWeight[59] =8; awbHwConfig->blkWeight[60] =8; awbHwConfig->blkWeight[61] =10; awbHwConfig->blkWeight[62] =14; awbHwConfig->blkWeight[63] =22; awbHwConfig->blkWeight[64] =28; awbHwConfig->blkWeight[65] =36; awbHwConfig->blkWeight[66] =42; awbHwConfig->blkWeight[67] =46; awbHwConfig->blkWeight[68] =42; awbHwConfig->blkWeight[69] =36; awbHwConfig->blkWeight[70] =28; awbHwConfig->blkWeight[71] =22; awbHwConfig->blkWeight[72] =14; awbHwConfig->blkWeight[73] =10; awbHwConfig->blkWeight[74] =8; awbHwConfig->blkWeight[75] =8; awbHwConfig->blkWeight[76] =10; awbHwConfig->blkWeight[77] =16; awbHwConfig->blkWeight[78] =26; awbHwConfig->blkWeight[79] =36; awbHwConfig->blkWeight[80] =46; awbHwConfig->blkWeight[81] =54; awbHwConfig->blkWeight[82] =58; awbHwConfig->blkWeight[83] =54; awbHwConfig->blkWeight[84] =46; awbHwConfig->blkWeight[85] =36; awbHwConfig->blkWeight[86] =26; awbHwConfig->blkWeight[87] =16; awbHwConfig->blkWeight[88] =10; awbHwConfig->blkWeight[89] =8; awbHwConfig->blkWeight[90] =8; awbHwConfig->blkWeight[91] =12; awbHwConfig->blkWeight[92] =18; awbHwConfig->blkWeight[93] =30; awbHwConfig->blkWeight[94] =42; awbHwConfig->blkWeight[95] =54; awbHwConfig->blkWeight[96] =63; awbHwConfig->blkWeight[97] =63; awbHwConfig->blkWeight[98] =63; awbHwConfig->blkWeight[99] =54; awbHwConfig->blkWeight[100] =42; awbHwConfig->blkWeight[101] =30; awbHwConfig->blkWeight[102] =18; awbHwConfig->blkWeight[103] =12; awbHwConfig->blkWeight[104] =8; awbHwConfig->blkWeight[105] =10; awbHwConfig->blkWeight[106] =12; awbHwConfig->blkWeight[107] =20; awbHwConfig->blkWeight[108] =32; awbHwConfig->blkWeight[109] =46; awbHwConfig->blkWeight[110] =58; awbHwConfig->blkWeight[111] =63; awbHwConfig->blkWeight[112] =63; awbHwConfig->blkWeight[113] =63; awbHwConfig->blkWeight[114] =58; awbHwConfig->blkWeight[115] =46; awbHwConfig->blkWeight[116] =32; awbHwConfig->blkWeight[117] =20; awbHwConfig->blkWeight[118] =12; awbHwConfig->blkWeight[119] =10; awbHwConfig->blkWeight[120] =8; awbHwConfig->blkWeight[121] =12; awbHwConfig->blkWeight[122] =18; awbHwConfig->blkWeight[123] =30; awbHwConfig->blkWeight[124] =42; awbHwConfig->blkWeight[125] =54; awbHwConfig->blkWeight[126] =63; awbHwConfig->blkWeight[127] =63; awbHwConfig->blkWeight[128] =63; awbHwConfig->blkWeight[129] =54; awbHwConfig->blkWeight[130] =42; awbHwConfig->blkWeight[131] =30; awbHwConfig->blkWeight[132] =18; awbHwConfig->blkWeight[133] =12; awbHwConfig->blkWeight[134] =8; awbHwConfig->blkWeight[135] =8; awbHwConfig->blkWeight[136] =10; awbHwConfig->blkWeight[137] =16; awbHwConfig->blkWeight[138] =26; awbHwConfig->blkWeight[139] =36; awbHwConfig->blkWeight[140] =46; awbHwConfig->blkWeight[141] =54; awbHwConfig->blkWeight[142] =58; awbHwConfig->blkWeight[143] =54; awbHwConfig->blkWeight[144] =46; awbHwConfig->blkWeight[145] =36; awbHwConfig->blkWeight[146] =26; awbHwConfig->blkWeight[147] =16; awbHwConfig->blkWeight[148] =10; awbHwConfig->blkWeight[149] =8; awbHwConfig->blkWeight[150] =8; awbHwConfig->blkWeight[151] =10; awbHwConfig->blkWeight[152] =14; awbHwConfig->blkWeight[153] =22; awbHwConfig->blkWeight[154] =28; awbHwConfig->blkWeight[155] =36; awbHwConfig->blkWeight[156] =42; awbHwConfig->blkWeight[157] =46; awbHwConfig->blkWeight[158] =42; awbHwConfig->blkWeight[159] =36; awbHwConfig->blkWeight[160] =28; awbHwConfig->blkWeight[161] =22; awbHwConfig->blkWeight[162] =14; awbHwConfig->blkWeight[163] =10; awbHwConfig->blkWeight[164] =8; awbHwConfig->blkWeight[165] =8; awbHwConfig->blkWeight[166] =8; awbHwConfig->blkWeight[167] =12; awbHwConfig->blkWeight[168] =16; awbHwConfig->blkWeight[169] =22; awbHwConfig->blkWeight[170] =26; awbHwConfig->blkWeight[171] =30; awbHwConfig->blkWeight[172] =32; awbHwConfig->blkWeight[173] =30; awbHwConfig->blkWeight[174] =26; awbHwConfig->blkWeight[175] =22; awbHwConfig->blkWeight[176] =16; awbHwConfig->blkWeight[177] =12; awbHwConfig->blkWeight[178] =8; awbHwConfig->blkWeight[179] =8; awbHwConfig->blkWeight[180] =6; awbHwConfig->blkWeight[181] =8; awbHwConfig->blkWeight[182] =10; awbHwConfig->blkWeight[183] =12; awbHwConfig->blkWeight[184] =14; awbHwConfig->blkWeight[185] =16; awbHwConfig->blkWeight[186] =18; awbHwConfig->blkWeight[187] =20; awbHwConfig->blkWeight[188] =18; awbHwConfig->blkWeight[189] =16; awbHwConfig->blkWeight[190] =14; awbHwConfig->blkWeight[191] =12; awbHwConfig->blkWeight[192] =10; awbHwConfig->blkWeight[193] =8; awbHwConfig->blkWeight[194] =6; awbHwConfig->blkWeight[195] =6; awbHwConfig->blkWeight[196] =6; awbHwConfig->blkWeight[197] =8; awbHwConfig->blkWeight[198] =8; awbHwConfig->blkWeight[199] =10; awbHwConfig->blkWeight[200] =10; awbHwConfig->blkWeight[201] =12; awbHwConfig->blkWeight[202] =12; awbHwConfig->blkWeight[203] =12; awbHwConfig->blkWeight[204] =10; awbHwConfig->blkWeight[205] =10; awbHwConfig->blkWeight[206] =8; awbHwConfig->blkWeight[207] =8; awbHwConfig->blkWeight[208] =6; awbHwConfig->blkWeight[209] =6; awbHwConfig->blkWeight[210] =6; awbHwConfig->blkWeight[211] =6; awbHwConfig->blkWeight[212] =6; awbHwConfig->blkWeight[213] =8; awbHwConfig->blkWeight[214] =8; awbHwConfig->blkWeight[215] =8; awbHwConfig->blkWeight[216] =8; awbHwConfig->blkWeight[217] =10; awbHwConfig->blkWeight[218] =8; awbHwConfig->blkWeight[219] =8; awbHwConfig->blkWeight[220] =8; awbHwConfig->blkWeight[221] =8; awbHwConfig->blkWeight[222] =6; awbHwConfig->blkWeight[223] =6; awbHwConfig->blkWeight[224] =6; LOG1_AWB_SUBM(0xff, "%s EXIT", __func__); return ret; } static XCamReturn initAwbHwFullConfigGw(rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfig) { LOG1_AWB_SUBM(0xff, "%s ENTER", __func__); XCamReturn ret = XCAM_RETURN_NO_ERROR; memset(awbHwConfig,0,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t)); awbHwConfig->awbEnable = 1; awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0; awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0; awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0; awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0; awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0; awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0; awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0; awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0; awbHwConfig->lscBypEnable = 0; awbHwConfig->blkStatisticsEnable = 1; awbHwConfig->blkMeasureMode = (rk_aiq_awb_blk_stat_mode_v201_t)0; awbHwConfig->xyRangeTypeForBlkStatistics = (rk_aiq_awb_xy_type_v201_t)0; awbHwConfig->illIdxForBlkStatistics = (rk_aiq_awb_blk_stat_realwp_ill_e)7; awbHwConfig->blkStatisticsWithLumaWeightEn = 0; awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0; awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0; awbHwConfig->xyRangeTypeForWpHist = (rk_aiq_awb_xy_type_v201_t)0; awbHwConfig->lightNum = 7; awbHwConfig->windowSet[0] = 0; awbHwConfig->windowSet[1] = 0; awbHwConfig->windowSet[2] = 3840; awbHwConfig->windowSet[3] = 2160; awbHwConfig->dsMode = (rk_aiq_down_scale_mode_t)1; awbHwConfig->maxR = 230; awbHwConfig->maxG = 230; awbHwConfig->maxB = 230; awbHwConfig->maxY = 230; awbHwConfig->minR = 3; awbHwConfig->minG = 3; awbHwConfig->minB = 3; awbHwConfig->minY = 3; awbHwConfig->pre_wbgain_inv_r = 256; awbHwConfig->pre_wbgain_inv_g = 256; awbHwConfig->pre_wbgain_inv_b = 256; #ifdef ISP_HW_V30 awbHwConfig->multiwindow_en = 0; #endif awbHwConfig->blk_rtdw_measure_en = 0; LOG1_AWB_SUBM(0xff, "%s EXIT", __func__); return ret; } static XCamReturn initAwbHwFullConfigWp(rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfig) { LOG1_AWB_SUBM(0xff, "%s ENTER", __func__); XCamReturn ret = XCAM_RETURN_NO_ERROR; memset(awbHwConfig,0,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t)); awbHwConfig->awbEnable = 1;//rawawb enable awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;//xy detect enable for all light awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;//uv detect enable for all light awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;//uv detect enable for all light awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;//xy detect enable for all light awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;//uv detect enable for all light awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;//uv detect enable for all light awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0; awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0; awbHwConfig->lscBypEnable = 0; awbHwConfig->blkStatisticsEnable = 1; awbHwConfig->blkMeasureMode = (rk_aiq_awb_blk_stat_mode_v201_t)0; awbHwConfig->xyRangeTypeForBlkStatistics = (rk_aiq_awb_xy_type_v201_t)0; awbHwConfig->illIdxForBlkStatistics = (rk_aiq_awb_blk_stat_realwp_ill_e)7; awbHwConfig->blkStatisticsWithLumaWeightEn = 0; awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0; awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0; awbHwConfig->xyRangeTypeForWpHist = (rk_aiq_awb_xy_type_v201_t)0; awbHwConfig->threeDyuvIllu[0] = 7; awbHwConfig->threeDyuvIllu[1] = 7; awbHwConfig->threeDyuvIllu[2] = 7; awbHwConfig->threeDyuvIllu[3] = 7; awbHwConfig->lightNum = 7; //measurment light num ,0~7 awbHwConfig->windowSet[0] = 0;//crop h_offs mod 2 == 0 awbHwConfig->windowSet[1] = 0;//crop v_offs mod 2 == 0 awbHwConfig->windowSet[2] = 3840;//crop h_size,8x8:mod 8==0,4x4:mod 4==0 awbHwConfig->windowSet[3] = 2160;//crop v_size,8x8:mod 8==0,4x4:mod 4==0 awbHwConfig->dsMode = (rk_aiq_down_scale_mode_t)1;//downscale,1:8x8,0:4x4 awbHwConfig->maxR = 230; awbHwConfig->maxG = 230; awbHwConfig->maxB = 230; awbHwConfig->maxY = 230; awbHwConfig->minR = 3; awbHwConfig->minG = 3; awbHwConfig->minB = 3; awbHwConfig->minY = 3; awbHwConfig->uvRange_param[0].pu_region[0] = 247; awbHwConfig->uvRange_param[0].pv_region[0] = 252; awbHwConfig->uvRange_param[0].pu_region[1] = 114; awbHwConfig->uvRange_param[0].pv_region[1] = 206; awbHwConfig->uvRange_param[0].pu_region[2] = 105; awbHwConfig->uvRange_param[0].pv_region[2] = 243; awbHwConfig->uvRange_param[0].pu_region[3] = 246; awbHwConfig->uvRange_param[0].pv_region[3] = 254; awbHwConfig->uvRange_param[0].slope_inv[0] = 2961; awbHwConfig->uvRange_param[0].slope_inv[1] = -249; awbHwConfig->uvRange_param[0].slope_inv[2] = 13126; awbHwConfig->uvRange_param[0].slope_inv[3] = -512; awbHwConfig->uvRange_param[1].pu_region[0] = 251; awbHwConfig->uvRange_param[1].pv_region[0] = 249; awbHwConfig->uvRange_param[1].pu_region[1] = 159; awbHwConfig->uvRange_param[1].pv_region[1] = 160; awbHwConfig->uvRange_param[1].pu_region[2] = 141; awbHwConfig->uvRange_param[1].pv_region[2] = 173; awbHwConfig->uvRange_param[1].pu_region[3] = 249; awbHwConfig->uvRange_param[1].pv_region[3] = 250; awbHwConfig->uvRange_param[1].slope_inv[0] = 1059; awbHwConfig->uvRange_param[1].slope_inv[1] = -1418; awbHwConfig->uvRange_param[1].slope_inv[2] = 1436; awbHwConfig->uvRange_param[1].slope_inv[3] = -2048; awbHwConfig->uvRange_param[2].pu_region[0] = 252; awbHwConfig->uvRange_param[2].pv_region[0] = 249; awbHwConfig->uvRange_param[2].pu_region[1] = 180; awbHwConfig->uvRange_param[2].pv_region[1] = 148; awbHwConfig->uvRange_param[2].pu_region[2] = 158; awbHwConfig->uvRange_param[2].pv_region[2] = 160; awbHwConfig->uvRange_param[2].pu_region[3] = 250; awbHwConfig->uvRange_param[2].pv_region[3] = 249; awbHwConfig->uvRange_param[2].slope_inv[0] = 730; awbHwConfig->uvRange_param[2].slope_inv[1] = -1877; awbHwConfig->uvRange_param[2].slope_inv[2] = 1059; awbHwConfig->uvRange_param[2].slope_inv[3] = 262143; awbHwConfig->uvRange_param[3].pu_region[0] = 254; awbHwConfig->uvRange_param[3].pv_region[0] = 247; awbHwConfig->uvRange_param[3].pu_region[1] = 204; awbHwConfig->uvRange_param[3].pv_region[1] = 134; awbHwConfig->uvRange_param[3].pu_region[2] = 180; awbHwConfig->uvRange_param[3].pv_region[2] = 148; awbHwConfig->uvRange_param[3].pu_region[3] = 252; awbHwConfig->uvRange_param[3].pv_region[3] = 249; awbHwConfig->uvRange_param[3].slope_inv[0] = 453; awbHwConfig->uvRange_param[3].slope_inv[1] = -1755; awbHwConfig->uvRange_param[3].slope_inv[2] = 730; awbHwConfig->uvRange_param[3].slope_inv[3] = -1024; awbHwConfig->uvRange_param[4].pu_region[0] = 255; awbHwConfig->uvRange_param[4].pv_region[0] = 247; awbHwConfig->uvRange_param[4].pu_region[1] = 225; awbHwConfig->uvRange_param[4].pv_region[1] = 129; awbHwConfig->uvRange_param[4].pu_region[2] = 201; awbHwConfig->uvRange_param[4].pv_region[2] = 134; awbHwConfig->uvRange_param[4].pu_region[3] = 254; awbHwConfig->uvRange_param[4].pv_region[3] = 247; awbHwConfig->uvRange_param[4].slope_inv[0] = 260; awbHwConfig->uvRange_param[4].slope_inv[1] = -4915; awbHwConfig->uvRange_param[4].slope_inv[2] = 480; awbHwConfig->uvRange_param[4].slope_inv[3] = 262143; awbHwConfig->uvRange_param[5].pu_region[0] = 246; awbHwConfig->uvRange_param[5].pv_region[0] = 257; awbHwConfig->uvRange_param[5].pu_region[1] = 101; awbHwConfig->uvRange_param[5].pv_region[1] = 278; awbHwConfig->uvRange_param[5].pu_region[2] = 104; awbHwConfig->uvRange_param[5].pv_region[2] = 243; awbHwConfig->uvRange_param[5].pu_region[3] = 246; awbHwConfig->uvRange_param[5].pv_region[3] = 254; awbHwConfig->uvRange_param[5].slope_inv[0] = -7070; awbHwConfig->uvRange_param[5].slope_inv[1] = -88; awbHwConfig->uvRange_param[5].slope_inv[2] = 13219; awbHwConfig->uvRange_param[5].slope_inv[3] = 0; awbHwConfig->uvRange_param[6].pu_region[0] = 250; awbHwConfig->uvRange_param[6].pv_region[0] = 250; awbHwConfig->uvRange_param[6].pu_region[1] = 144; awbHwConfig->uvRange_param[6].pv_region[1] = 171; awbHwConfig->uvRange_param[6].pu_region[2] = 114; awbHwConfig->uvRange_param[6].pv_region[2] = 207; awbHwConfig->uvRange_param[6].pu_region[3] = 247; awbHwConfig->uvRange_param[6].pv_region[3] = 252; awbHwConfig->uvRange_param[6].slope_inv[0] = 1374; awbHwConfig->uvRange_param[6].slope_inv[1] = -853; awbHwConfig->uvRange_param[6].slope_inv[2] = 3026; awbHwConfig->uvRange_param[6].slope_inv[3] = -1536; awbHwConfig->icrgb2RYuv_matrix[0] = 12; awbHwConfig->icrgb2RYuv_matrix[1] = 69; awbHwConfig->icrgb2RYuv_matrix[2] = 7; awbHwConfig->icrgb2RYuv_matrix[3] = 665; awbHwConfig->icrgb2RYuv_matrix[4] = -44; awbHwConfig->icrgb2RYuv_matrix[5] = -2; awbHwConfig->icrgb2RYuv_matrix[6] = 32; awbHwConfig->icrgb2RYuv_matrix[7] = 2268; awbHwConfig->icrgb2RYuv_matrix[8] = 23; awbHwConfig->icrgb2RYuv_matrix[9] = -24; awbHwConfig->icrgb2RYuv_matrix[10] = 27; awbHwConfig->icrgb2RYuv_matrix[11] = 1690; awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[0] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[1] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[2] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[3] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[4] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[5] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[0] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[1] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[2] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[3] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[4] = 0; awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[5] = 0; awbHwConfig->ic3Dyuv2Range_param[0].lineP1[0] = 0; awbHwConfig->ic3Dyuv2Range_param[0].lineP1[1] = 0; awbHwConfig->ic3Dyuv2Range_param[0].lineP1[2] = 0; awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[0] = 0; awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[1] = 0; awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[2] = 0; awbHwConfig->ic3Dyuv2Range_param[0].disP1P2 = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[0] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[1] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[2] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[3] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[4] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[5] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[0] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[1] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[2] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[3] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[4] = 0; awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[5] = 0; awbHwConfig->ic3Dyuv2Range_param[1].lineP1[0] = 0; awbHwConfig->ic3Dyuv2Range_param[1].lineP1[1] = 0; awbHwConfig->ic3Dyuv2Range_param[1].lineP1[2] = 0; awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[0] = 0; awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[1] = 0; awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[2] = 0; awbHwConfig->ic3Dyuv2Range_param[1].disP1P2 = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[0] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[1] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[2] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[3] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[4] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[5] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[0] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[1] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[2] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[3] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[4] = 0; awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[5] = 0; awbHwConfig->ic3Dyuv2Range_param[2].lineP1[0] = 0; awbHwConfig->ic3Dyuv2Range_param[2].lineP1[1] = 0; awbHwConfig->ic3Dyuv2Range_param[2].lineP1[2] = 0; awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[0] = 0; awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[1] = 0; awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[2] = 0; awbHwConfig->ic3Dyuv2Range_param[2].disP1P2 = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[0] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[1] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[2] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[3] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[4] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[5] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[0] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[1] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[2] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[3] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[4] = 0; awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[5] = 0; awbHwConfig->ic3Dyuv2Range_param[3].lineP1[0] = 0; awbHwConfig->ic3Dyuv2Range_param[3].lineP1[1] = 0; awbHwConfig->ic3Dyuv2Range_param[3].lineP1[2] = 0; awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[0] = 0; awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[1] = 0; awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[2] = 0; awbHwConfig->ic3Dyuv2Range_param[3].disP1P2 = 0; awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[0] = 1534; awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[1] = 1535; awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[2] = 1027; awbHwConfig->rgb2xy_param.rotationMat[0] = -2202; awbHwConfig->rgb2xy_param.rotationMat[1] = 3454; awbHwConfig->rgb2xy_param.rotationMat[2] = -535; awbHwConfig->rgb2xy_param.rotationMat[3] = 3454; awbHwConfig->rgb2xy_param.rotationMat[4] = 2202; awbHwConfig->rgb2xy_param.rotationMat[5] = 2826; awbHwConfig->xyRange_param[0].NorrangeX[0] = -1432; awbHwConfig->xyRange_param[0].NorrangeX[1] = -962; awbHwConfig->xyRange_param[0].NorrangeY[0] = 134; awbHwConfig->xyRange_param[0].NorrangeY[1] = -30; awbHwConfig->xyRange_param[0].SperangeX[0] = -1432; awbHwConfig->xyRange_param[0].SperangeX[1] = -962; awbHwConfig->xyRange_param[0].SperangeY[0] = 165; awbHwConfig->xyRange_param[0].SperangeY[1] = -60; awbHwConfig->xyRange_param[1].NorrangeX[0] = -959; awbHwConfig->xyRange_param[1].NorrangeX[1] = -507; awbHwConfig->xyRange_param[1].NorrangeY[0] = -46; awbHwConfig->xyRange_param[1].NorrangeY[1] = -159; awbHwConfig->xyRange_param[1].SperangeX[0] = -961; awbHwConfig->xyRange_param[1].SperangeX[1] = -507; awbHwConfig->xyRange_param[1].SperangeY[0] = -46; awbHwConfig->xyRange_param[1].SperangeY[1] = -179; awbHwConfig->xyRange_param[2].NorrangeX[0] = -507; awbHwConfig->xyRange_param[2].NorrangeX[1] = -160; awbHwConfig->xyRange_param[2].NorrangeY[0] = 181; awbHwConfig->xyRange_param[2].NorrangeY[1] = 10; awbHwConfig->xyRange_param[2].SperangeX[0] = -507; awbHwConfig->xyRange_param[2].SperangeX[1] = -160; awbHwConfig->xyRange_param[2].SperangeY[0] = 205; awbHwConfig->xyRange_param[2].SperangeY[1] = -20; awbHwConfig->xyRange_param[3].NorrangeX[0] = -160; awbHwConfig->xyRange_param[3].NorrangeX[1] = 74; awbHwConfig->xyRange_param[3].NorrangeY[0] = 79; awbHwConfig->xyRange_param[3].NorrangeY[1] = -85; awbHwConfig->xyRange_param[3].SperangeX[0] = -160; awbHwConfig->xyRange_param[3].SperangeX[1] = 74; awbHwConfig->xyRange_param[3].SperangeY[0] = 109; awbHwConfig->xyRange_param[3].SperangeY[1] = -103; awbHwConfig->xyRange_param[4].NorrangeX[0] = 74; awbHwConfig->xyRange_param[4].NorrangeX[1] = 227; awbHwConfig->xyRange_param[4].NorrangeY[0] = 102; awbHwConfig->xyRange_param[4].NorrangeY[1] = -66; awbHwConfig->xyRange_param[4].SperangeX[0] = 74; awbHwConfig->xyRange_param[4].SperangeX[1] = 227; awbHwConfig->xyRange_param[4].SperangeY[0] = 133; awbHwConfig->xyRange_param[4].SperangeY[1] = -86; awbHwConfig->xyRange_param[5].NorrangeX[0] = -1742; awbHwConfig->xyRange_param[5].NorrangeX[1] = -1432; awbHwConfig->xyRange_param[5].NorrangeY[0] = 90; awbHwConfig->xyRange_param[5].NorrangeY[1] = -80; awbHwConfig->xyRange_param[5].SperangeX[0] = -1742; awbHwConfig->xyRange_param[5].SperangeX[1] = -1432; awbHwConfig->xyRange_param[5].SperangeY[0] = 121; awbHwConfig->xyRange_param[5].SperangeY[1] = -111; awbHwConfig->xyRange_param[6].NorrangeX[0] = -962; awbHwConfig->xyRange_param[6].NorrangeX[1] = -509; awbHwConfig->xyRange_param[6].NorrangeY[0] = 114; awbHwConfig->xyRange_param[6].NorrangeY[1] = -43; awbHwConfig->xyRange_param[6].SperangeX[0] = -962; awbHwConfig->xyRange_param[6].SperangeX[1] = -509; awbHwConfig->xyRange_param[6].SperangeY[0] = 134; awbHwConfig->xyRange_param[6].SperangeY[1] = -45; awbHwConfig->pre_wbgain_inv_r = 256; awbHwConfig->pre_wbgain_inv_g = 256; awbHwConfig->pre_wbgain_inv_b = 256; #ifdef ISP_HW_V30 awbHwConfig->multiwindow_en = 0; awbHwConfig->multiwindow[0][0] = 0; awbHwConfig->multiwindow[0][1] = 0; awbHwConfig->multiwindow[0][2] = 0; awbHwConfig->multiwindow[0][3] = 0; awbHwConfig->multiwindow[1][0] = 0; awbHwConfig->multiwindow[1][1] = 0; awbHwConfig->multiwindow[1][2] = 0; awbHwConfig->multiwindow[1][3] = 0; awbHwConfig->multiwindow[2][0] = 0; awbHwConfig->multiwindow[2][1] = 0; awbHwConfig->multiwindow[2][2] = 0; awbHwConfig->multiwindow[2][3] = 0; awbHwConfig->multiwindow[3][0] = 0; awbHwConfig->multiwindow[3][1] = 0; awbHwConfig->multiwindow[3][2] = 0; awbHwConfig->multiwindow[3][3] = 0; #endif awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[0].measureEnable = 0; awbHwConfig->excludeWpRange[0].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[0].xu[0] = 0; awbHwConfig->excludeWpRange[0].xu[1] = 0; awbHwConfig->excludeWpRange[0].yv[0] = 0; awbHwConfig->excludeWpRange[0].yv[1] = 0; awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[1].measureEnable = 0; awbHwConfig->excludeWpRange[1].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[1].xu[0] = 0; awbHwConfig->excludeWpRange[1].xu[1] = 0; awbHwConfig->excludeWpRange[1].yv[0] = 0; awbHwConfig->excludeWpRange[1].yv[1] = 0; awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[2].measureEnable = 0; awbHwConfig->excludeWpRange[2].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[2].xu[0] = 0; awbHwConfig->excludeWpRange[2].xu[1] = 0; awbHwConfig->excludeWpRange[2].yv[0] = 0; awbHwConfig->excludeWpRange[2].yv[1] = 0; awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[3].measureEnable = 0; awbHwConfig->excludeWpRange[3].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[3].xu[0] = 0; awbHwConfig->excludeWpRange[3].xu[1] = 0; awbHwConfig->excludeWpRange[3].yv[0] = 0; awbHwConfig->excludeWpRange[3].yv[1] = 0; awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[4].measureEnable = 0; awbHwConfig->excludeWpRange[4].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[4].xu[0] = 0; awbHwConfig->excludeWpRange[4].xu[1] = 0; awbHwConfig->excludeWpRange[4].yv[0] = 0; awbHwConfig->excludeWpRange[4].yv[1] = 0; awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[5].measureEnable = 0; awbHwConfig->excludeWpRange[5].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[5].xu[0] = 0; awbHwConfig->excludeWpRange[5].xu[1] = 0; awbHwConfig->excludeWpRange[5].yv[0] = 0; awbHwConfig->excludeWpRange[5].yv[1] = 0; awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1; awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1; awbHwConfig->excludeWpRange[6].measureEnable = 0; awbHwConfig->excludeWpRange[6].domain = (rk_aiq_awb_exc_range_domain_t)0; awbHwConfig->excludeWpRange[6].xu[0] = 0; awbHwConfig->excludeWpRange[6].xu[1] = 0; awbHwConfig->excludeWpRange[6].yv[0] = 0; awbHwConfig->excludeWpRange[6].yv[1] = 0; awbHwConfig->wpDiffwei_y[0] =0; awbHwConfig->wpDiffwei_y[1] =16; awbHwConfig->wpDiffwei_y[2] =32; awbHwConfig->wpDiffwei_y[3] =64; awbHwConfig->wpDiffwei_y[4] =96; awbHwConfig->wpDiffwei_y[5] =128; awbHwConfig->wpDiffwei_y[6] =192; awbHwConfig->wpDiffwei_y[7] =224; awbHwConfig->wpDiffwei_y[8] =240; awbHwConfig->wpDiffwei_w[0] =31; awbHwConfig->wpDiffwei_w[1] =31; awbHwConfig->wpDiffwei_w[2] =31; awbHwConfig->wpDiffwei_w[3] =31; awbHwConfig->wpDiffwei_w[4] =31; awbHwConfig->wpDiffwei_w[5] =31; awbHwConfig->wpDiffwei_w[6] =31; awbHwConfig->wpDiffwei_w[7] =31; awbHwConfig->wpDiffwei_w[8] =31; awbHwConfig->blkWeight[0] =6; awbHwConfig->blkWeight[1] =6; awbHwConfig->blkWeight[2] =6; awbHwConfig->blkWeight[3] =8; awbHwConfig->blkWeight[4] =8; awbHwConfig->blkWeight[5] =8; awbHwConfig->blkWeight[6] =8; awbHwConfig->blkWeight[7] =10; awbHwConfig->blkWeight[8] =8; awbHwConfig->blkWeight[9] =8; awbHwConfig->blkWeight[10] =8; awbHwConfig->blkWeight[11] =8; awbHwConfig->blkWeight[12] =6; awbHwConfig->blkWeight[13] =6; awbHwConfig->blkWeight[14] =6; awbHwConfig->blkWeight[15] =6; awbHwConfig->blkWeight[16] =6; awbHwConfig->blkWeight[17] =8; awbHwConfig->blkWeight[18] =8; awbHwConfig->blkWeight[19] =10; awbHwConfig->blkWeight[20] =10; awbHwConfig->blkWeight[21] =12; awbHwConfig->blkWeight[22] =12; awbHwConfig->blkWeight[23] =12; awbHwConfig->blkWeight[24] =10; awbHwConfig->blkWeight[25] =10; awbHwConfig->blkWeight[26] =8; awbHwConfig->blkWeight[27] =8; awbHwConfig->blkWeight[28] =6; awbHwConfig->blkWeight[29] =6; awbHwConfig->blkWeight[30] =6; awbHwConfig->blkWeight[31] =8; awbHwConfig->blkWeight[32] =10; awbHwConfig->blkWeight[33] =12; awbHwConfig->blkWeight[34] =14; awbHwConfig->blkWeight[35] =16; awbHwConfig->blkWeight[36] =18; awbHwConfig->blkWeight[37] =20; awbHwConfig->blkWeight[38] =18; awbHwConfig->blkWeight[39] =16; awbHwConfig->blkWeight[40] =14; awbHwConfig->blkWeight[41] =12; awbHwConfig->blkWeight[42] =10; awbHwConfig->blkWeight[43] =8; awbHwConfig->blkWeight[44] =6; awbHwConfig->blkWeight[45] =8; awbHwConfig->blkWeight[46] =8; awbHwConfig->blkWeight[47] =12; awbHwConfig->blkWeight[48] =16; awbHwConfig->blkWeight[49] =22; awbHwConfig->blkWeight[50] =26; awbHwConfig->blkWeight[51] =30; awbHwConfig->blkWeight[52] =32; awbHwConfig->blkWeight[53] =30; awbHwConfig->blkWeight[54] =26; awbHwConfig->blkWeight[55] =22; awbHwConfig->blkWeight[56] =16; awbHwConfig->blkWeight[57] =12; awbHwConfig->blkWeight[58] =8; awbHwConfig->blkWeight[59] =8; awbHwConfig->blkWeight[60] =8; awbHwConfig->blkWeight[61] =10; awbHwConfig->blkWeight[62] =14; awbHwConfig->blkWeight[63] =22; awbHwConfig->blkWeight[64] =28; awbHwConfig->blkWeight[65] =36; awbHwConfig->blkWeight[66] =42; awbHwConfig->blkWeight[67] =46; awbHwConfig->blkWeight[68] =42; awbHwConfig->blkWeight[69] =36; awbHwConfig->blkWeight[70] =28; awbHwConfig->blkWeight[71] =22; awbHwConfig->blkWeight[72] =14; awbHwConfig->blkWeight[73] =10; awbHwConfig->blkWeight[74] =8; awbHwConfig->blkWeight[75] =8; awbHwConfig->blkWeight[76] =10; awbHwConfig->blkWeight[77] =16; awbHwConfig->blkWeight[78] =26; awbHwConfig->blkWeight[79] =36; awbHwConfig->blkWeight[80] =46; awbHwConfig->blkWeight[81] =54; awbHwConfig->blkWeight[82] =58; awbHwConfig->blkWeight[83] =54; awbHwConfig->blkWeight[84] =46; awbHwConfig->blkWeight[85] =36; awbHwConfig->blkWeight[86] =26; awbHwConfig->blkWeight[87] =16; awbHwConfig->blkWeight[88] =10; awbHwConfig->blkWeight[89] =8; awbHwConfig->blkWeight[90] =8; awbHwConfig->blkWeight[91] =12; awbHwConfig->blkWeight[92] =18; awbHwConfig->blkWeight[93] =30; awbHwConfig->blkWeight[94] =42; awbHwConfig->blkWeight[95] =54; awbHwConfig->blkWeight[96] =63; awbHwConfig->blkWeight[97] =63; awbHwConfig->blkWeight[98] =63; awbHwConfig->blkWeight[99] =54; awbHwConfig->blkWeight[100] =42; awbHwConfig->blkWeight[101] =30; awbHwConfig->blkWeight[102] =18; awbHwConfig->blkWeight[103] =12; awbHwConfig->blkWeight[104] =8; awbHwConfig->blkWeight[105] =10; awbHwConfig->blkWeight[106] =12; awbHwConfig->blkWeight[107] =20; awbHwConfig->blkWeight[108] =32; awbHwConfig->blkWeight[109] =46; awbHwConfig->blkWeight[110] =58; awbHwConfig->blkWeight[111] =63; awbHwConfig->blkWeight[112] =63; awbHwConfig->blkWeight[113] =63; awbHwConfig->blkWeight[114] =58; awbHwConfig->blkWeight[115] =46; awbHwConfig->blkWeight[116] =32; awbHwConfig->blkWeight[117] =20; awbHwConfig->blkWeight[118] =12; awbHwConfig->blkWeight[119] =10; awbHwConfig->blkWeight[120] =8; awbHwConfig->blkWeight[121] =12; awbHwConfig->blkWeight[122] =18; awbHwConfig->blkWeight[123] =30; awbHwConfig->blkWeight[124] =42; awbHwConfig->blkWeight[125] =54; awbHwConfig->blkWeight[126] =63; awbHwConfig->blkWeight[127] =63; awbHwConfig->blkWeight[128] =63; awbHwConfig->blkWeight[129] =54; awbHwConfig->blkWeight[130] =42; awbHwConfig->blkWeight[131] =30; awbHwConfig->blkWeight[132] =18; awbHwConfig->blkWeight[133] =12; awbHwConfig->blkWeight[134] =8; awbHwConfig->blkWeight[135] =8; awbHwConfig->blkWeight[136] =10; awbHwConfig->blkWeight[137] =16; awbHwConfig->blkWeight[138] =26; awbHwConfig->blkWeight[139] =36; awbHwConfig->blkWeight[140] =46; awbHwConfig->blkWeight[141] =54; awbHwConfig->blkWeight[142] =58; awbHwConfig->blkWeight[143] =54; awbHwConfig->blkWeight[144] =46; awbHwConfig->blkWeight[145] =36; awbHwConfig->blkWeight[146] =26; awbHwConfig->blkWeight[147] =16; awbHwConfig->blkWeight[148] =10; awbHwConfig->blkWeight[149] =8; awbHwConfig->blkWeight[150] =8; awbHwConfig->blkWeight[151] =10; awbHwConfig->blkWeight[152] =14; awbHwConfig->blkWeight[153] =22; awbHwConfig->blkWeight[154] =28; awbHwConfig->blkWeight[155] =36; awbHwConfig->blkWeight[156] =42; awbHwConfig->blkWeight[157] =46; awbHwConfig->blkWeight[158] =42; awbHwConfig->blkWeight[159] =36; awbHwConfig->blkWeight[160] =28; awbHwConfig->blkWeight[161] =22; awbHwConfig->blkWeight[162] =14; awbHwConfig->blkWeight[163] =10; awbHwConfig->blkWeight[164] =8; awbHwConfig->blkWeight[165] =8; awbHwConfig->blkWeight[166] =8; awbHwConfig->blkWeight[167] =12; awbHwConfig->blkWeight[168] =16; awbHwConfig->blkWeight[169] =22; awbHwConfig->blkWeight[170] =26; awbHwConfig->blkWeight[171] =30; awbHwConfig->blkWeight[172] =32; awbHwConfig->blkWeight[173] =30; awbHwConfig->blkWeight[174] =26; awbHwConfig->blkWeight[175] =22; awbHwConfig->blkWeight[176] =16; awbHwConfig->blkWeight[177] =12; awbHwConfig->blkWeight[178] =8; awbHwConfig->blkWeight[179] =8; awbHwConfig->blkWeight[180] =6; awbHwConfig->blkWeight[181] =8; awbHwConfig->blkWeight[182] =10; awbHwConfig->blkWeight[183] =12; awbHwConfig->blkWeight[184] =14; awbHwConfig->blkWeight[185] =16; awbHwConfig->blkWeight[186] =18; awbHwConfig->blkWeight[187] =20; awbHwConfig->blkWeight[188] =18; awbHwConfig->blkWeight[189] =16; awbHwConfig->blkWeight[190] =14; awbHwConfig->blkWeight[191] =12; awbHwConfig->blkWeight[192] =10; awbHwConfig->blkWeight[193] =8; awbHwConfig->blkWeight[194] =6; awbHwConfig->blkWeight[195] =6; awbHwConfig->blkWeight[196] =6; awbHwConfig->blkWeight[197] =8; awbHwConfig->blkWeight[198] =8; awbHwConfig->blkWeight[199] =10; awbHwConfig->blkWeight[200] =10; awbHwConfig->blkWeight[201] =12; awbHwConfig->blkWeight[202] =12; awbHwConfig->blkWeight[203] =12; awbHwConfig->blkWeight[204] =10; awbHwConfig->blkWeight[205] =10; awbHwConfig->blkWeight[206] =8; awbHwConfig->blkWeight[207] =8; awbHwConfig->blkWeight[208] =6; awbHwConfig->blkWeight[209] =6; awbHwConfig->blkWeight[210] =6; awbHwConfig->blkWeight[211] =6; awbHwConfig->blkWeight[212] =6; awbHwConfig->blkWeight[213] =8; awbHwConfig->blkWeight[214] =8; awbHwConfig->blkWeight[215] =8; awbHwConfig->blkWeight[216] =8; awbHwConfig->blkWeight[217] =10; awbHwConfig->blkWeight[218] =8; awbHwConfig->blkWeight[219] =8; awbHwConfig->blkWeight[220] =8; awbHwConfig->blkWeight[221] =8; awbHwConfig->blkWeight[222] =6; awbHwConfig->blkWeight[223] =6; awbHwConfig->blkWeight[224] =6; awbHwConfig->blk_rtdw_measure_en = 0; LOG1_AWB_SUBM(0xff, "%s EXIT", __func__); return ret; } static void initCustomAwbRes(rk_aiq_customeAwb_results_t* customAwb, rk_aiq_rkAwb_config_t* pConfig) { customAwb->IsConverged = false; customAwb->awb_gain_algo.rgain =1.0; customAwb->awb_gain_algo.bgain =1.0; customAwb->awb_gain_algo.grgain =1.0; customAwb->awb_gain_algo.gbgain =1.0; customAwb->awb_smooth_factor = 0.5; rk_aiq_customAwb_hw_cfg_t *awbHwConfig = &customAwb->awbHwConfig; const rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfigFull = &pConfig->awbHwConfig; awbHwConfig->awbEnable = awbHwConfigFull->awbEnable; awbHwConfig->lscBypEnable = awbHwConfigFull->lscBypEnable; awbHwConfig->uvDetectionEnable = awbHwConfigFull->uvDetectionEnable[0]; awbHwConfig->xyDetectionEnable = awbHwConfigFull->xyDetectionEnable[0]; awbHwConfig->threeDyuvEnable = awbHwConfigFull->threeDyuvEnable[0]; memcpy(awbHwConfig->threeDyuvIllu,awbHwConfigFull->threeDyuvIllu, sizeof(awbHwConfigFull->threeDyuvIllu)); awbHwConfig->wpDiffWeiEnable = awbHwConfigFull->wpDiffWeiEnable[0]; awbHwConfig->blkWeightEnable = awbHwConfigFull->blkWeightEnable[0]; awbHwConfig->blkMeasureMode = awbHwConfigFull->blkMeasureMode; #ifdef ISP_HW_V30 awbHwConfig->multiwindow_en = awbHwConfigFull->multiwindow_en; memcpy(awbHwConfig->multiwindow, awbHwConfigFull->multiwindow,sizeof(awbHwConfigFull->multiwindow)); #endif awbHwConfig->frameChoose = awbHwConfigFull->frameChoose; memcpy(awbHwConfig->windowSet,awbHwConfigFull->windowSet,sizeof(awbHwConfigFull->windowSet)); awbHwConfig->lightNum = awbHwConfigFull->lightNum; awbHwConfig->maxR = awbHwConfigFull->maxR; awbHwConfig->minR = awbHwConfigFull->minR; awbHwConfig->maxG = awbHwConfigFull->maxG; awbHwConfig->minG = awbHwConfigFull->minG; awbHwConfig->maxB = awbHwConfigFull->maxB; awbHwConfig->minB = awbHwConfigFull->minB; awbHwConfig->maxY = awbHwConfigFull->maxY; awbHwConfig->minY = awbHwConfigFull->minY; memcpy(awbHwConfig->icrgb2RYuv_matrix,awbHwConfigFull->icrgb2RYuv_matrix,sizeof(awbHwConfigFull->icrgb2RYuv_matrix)); memcpy(awbHwConfig->ic3Dyuv2Range_param,awbHwConfigFull->ic3Dyuv2Range_param,sizeof(RK_AIQ_AWB_YUV_LS_PARA_NUM)); memcpy(awbHwConfig->uvRange_param,awbHwConfigFull->uvRange_param,sizeof(awbHwConfigFull->uvRange_param)); awbHwConfig->rgb2xy_param = awbHwConfigFull->rgb2xy_param; memcpy(awbHwConfig->xyRange_param,awbHwConfigFull->xyRange_param,sizeof(awbHwConfigFull->xyRange_param)); memcpy(awbHwConfig->excludeWpRange,awbHwConfigFull->excludeWpRange,sizeof(awbHwConfig->excludeWpRange)); memcpy(awbHwConfig->wpDiffwei_y, awbHwConfigFull->wpDiffwei_y,sizeof(awbHwConfigFull->wpDiffwei_y)); memcpy(awbHwConfig->wpDiffwei_w, awbHwConfigFull->wpDiffwei_w,sizeof(awbHwConfigFull->wpDiffwei_w)); awbHwConfig->xyRangeTypeForWpHist = awbHwConfigFull->xyRangeTypeForWpHist; memcpy(awbHwConfig->blkWeight, awbHwConfigFull->blkWeight,sizeof(awbHwConfigFull->blkWeight)); awbHwConfig->xyRangeTypeForBlkStatistics = awbHwConfigFull->xyRangeTypeForBlkStatistics; awbHwConfig->illIdxForBlkStatistics = awbHwConfigFull->illIdxForBlkStatistics; } int32_t awb_window_init(void* ctx, rk_aiq_rkAwb_config_t *rkCfg) { rkCfg->awbHwConfig.windowSet[0]=0; rkCfg->awbHwConfig.windowSet[1]=0; rkCfg->awbHwConfig.windowSet[2]=rkCfg->RawWidth; rkCfg->awbHwConfig.windowSet[3]=rkCfg->RawHeight; return 0; } int32_t frame_choose_init(void* ctx, rk_aiq_rkAwb_config_t *rkCfg) { if((rk_aiq_working_mode_t)rkCfg->Working_mode == RK_AIQ_WORKING_MODE_NORMAL) { rkCfg->awbHwConfig.frameChoose = 0; } else{ rkCfg->awbHwConfig.frameChoose = 1;//Middle frame } return 0; } int32_t awb_window_check(const rk_aiq_rkAwb_config_t *rkCfg, unsigned short *windowSet) { if(windowSet[0] > rkCfg->RawWidth || windowSet[0] + windowSet[2] > rkCfg->RawWidth || windowSet[1] > rkCfg->RawHeight || windowSet[1] + windowSet[3] > rkCfg->RawHeight ) { LOGW_AWB("windowSet[%d,%d,%d,%d]is invaild!!! Reset to full window\n", windowSet[0], windowSet[1], windowSet[2], windowSet[3]); windowSet[0]=0; windowSet[1]=0; windowSet[2]=rkCfg->RawWidth; windowSet[3]=rkCfg->RawHeight; } return 0; } static XCamReturn AwbDemoPrepare(RkAiqAlgoCom* params) { LOGD_AWB_SUBM(0xff, "%s ENTER", __func__); XCamReturn ret = XCAM_RETURN_NO_ERROR; RkAiqAwbAlgoContext* algo_ctx = (RkAiqAwbAlgoContext*)params->ctx; if(1/*params->u.prepare.conf_type & RK_AIQ_ALGO_CONFTYPE_CHANGEMODE*/){ algo_ctx->rkCfg.Working_mode = params->u.prepare.working_mode; } if (!algo_ctx->cutomAwbInit) { initAwbHwFullConfigWp(&algo_ctx->rkCfg.awbHwConfig); algo_ctx->rkCfg.RawWidth = params->u.prepare.sns_op_width; algo_ctx->rkCfg.RawHeight = params->u.prepare.sns_op_height; awb_window_init(algo_ctx->aiq_ctx,&algo_ctx->rkCfg); frame_choose_init(algo_ctx->aiq_ctx,&algo_ctx->rkCfg); initCustomAwbRes(&algo_ctx->customRes, &algo_ctx->rkCfg); algo_ctx->cbs.pfn_awb_init(algo_ctx->aiq_ctx); algo_ctx->cutomAwbInit = true; } if(params->u.prepare.conf_type & RK_AIQ_ALGO_CONFTYPE_CHANGERES){ algo_ctx->rkCfg.RawWidth = params->u.prepare.sns_op_width; algo_ctx->rkCfg.RawHeight = params->u.prepare.sns_op_height; //awb_window_init(algo_ctx->aiq_ctx,&algo_ctx->rkCfg); } if(0/*params->u.prepare.conf_type & RK_AIQ_ALGO_CONFTYPE_CHANGERES || params->u.prepare.conf_type & RK_AIQ_ALGO_CONFTYPE_CHANGEMODE */){ uint32_t cmdctrl=0; int pValue=0; if (algo_ctx->cbs.pfn_awb_ctrl){ algo_ctx->cbs.pfn_awb_ctrl(algo_ctx->aiq_ctx, cmdctrl, (void*)(&pValue)); } } LOGD_AWB_SUBM(0xff, "%s EXIT", __func__); return ret; } static void _rkAwbStats2CustomAwbStats(rk_aiq_customAwb_stats_t* customAwb, rk_aiq_awb_stat_res_v201_t* rkAwb) { LOG1_AWB_SUBM(0xff, "%s ENTER", __func__); memcpy(customAwb->light,rkAwb->light,sizeof(customAwb->light)); #ifdef ISP_HW_V30 memcpy(customAwb->WpNo2,rkAwb->WpNo2,sizeof(customAwb->WpNo2)); #endif memcpy(customAwb->blockResult,rkAwb->blockResult,sizeof(customAwb->blockResult)); #ifdef ISP_HW_V30 memcpy(customAwb->multiwindowLightResult,rkAwb->multiwindowLightResult,sizeof(customAwb->multiwindowLightResult)); memcpy(customAwb->excWpRangeResult,rkAwb->excWpRangeResult,sizeof(customAwb->excWpRangeResult)); #endif memcpy(customAwb->WpNoHist,rkAwb->WpNoHist,sizeof(customAwb->WpNoHist)); LOG1_AWB_SUBM(0xff, "%s EXIT", __func__); } static void _customAwbHw2rkAwbHwCfg( const rk_aiq_customeAwb_results_t* customAwbProcRes, rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfigFull) { const rk_aiq_customAwb_hw_cfg_t *awbHwConfig = &customAwbProcRes->awbHwConfig; awbHwConfigFull->awbEnable = awbHwConfig->awbEnable; awbHwConfigFull->lscBypEnable = awbHwConfig->lscBypEnable; for(int i=0;iuvDetectionEnable[i] = awbHwConfig->uvDetectionEnable; awbHwConfigFull->xyDetectionEnable[i] = awbHwConfig->xyDetectionEnable; awbHwConfigFull->threeDyuvEnable[i] = awbHwConfig->threeDyuvEnable; awbHwConfigFull->wpDiffWeiEnable[i] = awbHwConfig->wpDiffWeiEnable; awbHwConfigFull->blkWeightEnable[i] = awbHwConfig->blkWeightEnable; } memcpy(awbHwConfigFull->threeDyuvIllu,awbHwConfig->threeDyuvIllu, sizeof(awbHwConfig->threeDyuvIllu)); awbHwConfigFull->blkMeasureMode = awbHwConfig->blkMeasureMode; #ifdef ISP_HW_V30 awbHwConfigFull->multiwindow_en = awbHwConfig->multiwindow_en; memcpy(awbHwConfigFull->multiwindow, awbHwConfig->multiwindow,sizeof(awbHwConfig->multiwindow)); #endif awbHwConfigFull->frameChoose = awbHwConfig->frameChoose; memcpy(awbHwConfigFull->windowSet,awbHwConfig->windowSet,sizeof(awbHwConfig->windowSet)); awbHwConfigFull->lightNum = awbHwConfig->lightNum; awbHwConfigFull->maxR = awbHwConfig->maxR; awbHwConfigFull->minR = awbHwConfig->minR; awbHwConfigFull->maxG = awbHwConfig->maxG; awbHwConfigFull->minG = awbHwConfig->minG; awbHwConfigFull->maxB = awbHwConfig->maxB; awbHwConfigFull->minB = awbHwConfig->minB; awbHwConfigFull->maxY = awbHwConfig->maxY; awbHwConfigFull->minY = awbHwConfig->minY; memcpy(awbHwConfigFull->icrgb2RYuv_matrix,awbHwConfig->icrgb2RYuv_matrix,sizeof(awbHwConfig->icrgb2RYuv_matrix)); memcpy(awbHwConfigFull->ic3Dyuv2Range_param,awbHwConfig->ic3Dyuv2Range_param,sizeof(RK_AIQ_AWB_YUV_LS_PARA_NUM)); memcpy(awbHwConfigFull->uvRange_param,awbHwConfig->uvRange_param,sizeof(awbHwConfig->uvRange_param)); awbHwConfigFull->rgb2xy_param = awbHwConfig->rgb2xy_param; memcpy(awbHwConfigFull->xyRange_param,awbHwConfig->xyRange_param,sizeof(awbHwConfig->xyRange_param)); memcpy(awbHwConfigFull->excludeWpRange,awbHwConfig->excludeWpRange,sizeof(awbHwConfigFull->excludeWpRange)); memcpy(awbHwConfigFull->wpDiffwei_y, awbHwConfig->wpDiffwei_y,sizeof(awbHwConfig->wpDiffwei_y)); memcpy(awbHwConfigFull->wpDiffwei_w, awbHwConfig->wpDiffwei_w,sizeof(awbHwConfig->wpDiffwei_w)); awbHwConfigFull->xyRangeTypeForWpHist = awbHwConfig->xyRangeTypeForWpHist; memcpy(awbHwConfigFull->blkWeight, awbHwConfig->blkWeight,sizeof(awbHwConfig->blkWeight)); awbHwConfigFull->xyRangeTypeForBlkStatistics = awbHwConfig->xyRangeTypeForBlkStatistics; awbHwConfigFull->illIdxForBlkStatistics = awbHwConfig->illIdxForBlkStatistics; } static void _customAwbRes2rkAwbRes( RkAiqAlgoProcResAwb* rkAwbProcRes, rk_aiq_customeAwb_results_t* customAwbProcRes, const rk_aiq_isp_awb_meas_cfg_v3x_t &awbHwConfig) { rkAwbProcRes->awbConverged = customAwbProcRes->IsConverged; rkAwbProcRes->awb_gain_algo= customAwbProcRes->awb_gain_algo; rkAwbProcRes->awb_smooth_factor = customAwbProcRes->awb_smooth_factor; rkAwbProcRes->awb_hw1_para= awbHwConfig; } static XCamReturn AwbDemoPreProcess(const RkAiqAlgoCom* inparams, RkAiqAlgoResCom* outparams) { XCamReturn ret = XCAM_RETURN_NO_ERROR; LOG1_AWB_SUBM(0xff, "%s ENTER", __func__); LOG1_AWB_SUBM(0xff, "%s EXIT", __func__); return ret; } static XCamReturn AwbDemoProcessing(const RkAiqAlgoCom* inparams, RkAiqAlgoResCom* outparams) { LOG1_AWB_SUBM(0xff, "%s ENTER", __func__); XCamReturn ret = XCAM_RETURN_NO_ERROR; RkAiqAlgoProcAwb* AwbProcParams = (RkAiqAlgoProcAwb*)inparams; RkAiqAlgoProcResAwb* AwbProcResParams = (RkAiqAlgoProcResAwb*)outparams; RkAiqAwbAlgoContext* algo_ctx = (RkAiqAwbAlgoContext*)inparams->ctx; if (algo_ctx->isGroupMode) { LOGE_AWB("wrong awb mode"); return ret; } if(!inparams->u.proc.init) { // init=ture, stats=null rk_aiq_customAwb_stats_t customStats; if (!AwbProcParams->awbStatsBuf) { LOGE_AWB("awb stats is null"); return(XCAM_RETURN_BYPASS); } RkAiqAwbStats *xAwbStats = (RkAiqAwbStats*)AwbProcParams->awbStatsBuf->map(AwbProcParams->awbStatsBuf); if (!xAwbStats) { LOGE_AWB("awb stats is null"); return(XCAM_RETURN_BYPASS); } _rkAwbStats2CustomAwbStats(&customStats, &xAwbStats->awb_stats_v3x); WriteMeasureResult(xAwbStats->awb_stats_v3x,algo_ctx->log_level); if (algo_ctx->cbs.pfn_awb_run) algo_ctx->cbs.pfn_awb_run(algo_ctx->aiq_ctx, &customStats, &algo_ctx->customRes ); }else{ if (algo_ctx->cbs.pfn_awb_run) algo_ctx->cbs.pfn_awb_run(algo_ctx->aiq_ctx, nullptr, &algo_ctx->customRes ); } //check para awb_window_check(&algo_ctx->rkCfg,algo_ctx->customRes.awbHwConfig.windowSet); _customAwbHw2rkAwbHwCfg(&algo_ctx->customRes, &algo_ctx->rkCfg.awbHwConfig); // gen part of proc result which is from customRes _customAwbRes2rkAwbRes(AwbProcResParams, &algo_ctx->customRes,algo_ctx->rkCfg.awbHwConfig); WriteDataForThirdParty(AwbProcResParams->awb_hw1_para,algo_ctx->log_level); LOG1_AWB_SUBM(0xff, "%s EXIT", __func__); return XCAM_RETURN_NO_ERROR; } static XCamReturn _rkAwbStats2CustomGroupAwbStats( rk_aiq_singlecam_3a_result_t ** rk_aiq_singlecam_3a_result , int camera_num,rk_aiq_customAwb_stats_t *customStats) { LOG1_AWB_SUBM(0xff, "%s ENTER", __func__); XCamReturn ret = XCAM_RETURN_NO_ERROR; XCamVideoBuffer* awbStatsBuf = nullptr; RkAiqAwbStats* xAwbStats = nullptr; rk_aiq_customAwb_stats_t *awbStat = customStats; rk_aiq_customAwb_stats_t *awbStat2 = customStats; for(int i=0;iawb._awbStats; if (awbStatsBuf) { xAwbStats = (RkAiqAwbStats*)awbStatsBuf->map(awbStatsBuf); if (!xAwbStats) { LOGE_AWBGROUP("awb stats is null for %dth camera",i); return(XCAM_RETURN_ERROR_FAILED); } } else { LOGE_AWBGROUP("awb stats is null for %dth camera",i); return(XCAM_RETURN_ERROR_FAILED); } if(i>0){ if(awbStat->next ==nullptr){ awbStat2 = (rk_aiq_customAwb_stats_t*)malloc(sizeof(rk_aiq_customAwb_stats_t)); memset(awbStat2,0,sizeof(rk_aiq_customAwb_stats_t)); awbStat->next = awbStat2; // LOGE_AWB_SUBM(0xff, "%s %dth camera:,malloc awbStat:%p", __func__,i,awbStat2); }else{ awbStat2 = awbStat->next; } awbStat = awbStat->next; } _rkAwbStats2CustomAwbStats(awbStat2, &xAwbStats->awb_stats_v3x); //WriteMeasureResult(xAwbStats->awb_stats_v3x,XCORE_LOG_LEVEL_LOW1+1,i); } LOG1_AWB_SUBM(0xff, "%s EXIT", __func__); return(ret); } static XCamReturn customAwbStatsRelease( rk_aiq_customAwb_stats_t *customStats) { LOG1_AWB_SUBM(0xff, "%s ENTER", __func__); XCamReturn ret = XCAM_RETURN_NO_ERROR; rk_aiq_customAwb_stats_t *awbStat = customStats->next; rk_aiq_customAwb_stats_t *awbStat2; while(awbStat!=nullptr){ awbStat2 = awbStat->next; //LOGE_AWB_SUBM(0xff, "%s free awbStat %p ", __func__,awbStat); free(awbStat); awbStat = awbStat2; } LOG1_AWB_SUBM(0xff, "%s EXIT", __func__); return(ret); } static void _customGruopAwbHw2rkAwbHwCfg( const rk_aiq_customeAwb_single_results_t* customAwbSingelRes, rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfigFull, const rk_aiq_wb_gain_t** awb_gain_algo) { const rk_aiq_customAwb_single_hw_cfg_t *awbHwConfig = &customAwbSingelRes->awbHwConfig; for(int i=0;iblkWeightEnable[i] = awbHwConfig->blkWeightEnable; } #ifdef ISP_HW_V30 awbHwConfigFull->multiwindow_en = awbHwConfig->multiwindow_en; memcpy(awbHwConfigFull->multiwindow, awbHwConfig->multiwindow,sizeof(awbHwConfig->multiwindow)); #endif memcpy(awbHwConfigFull->windowSet,awbHwConfig->windowSet,sizeof(awbHwConfig->windowSet)); memcpy(awbHwConfigFull->blkWeight, awbHwConfig->blkWeight,sizeof(awbHwConfig->blkWeight)); *awb_gain_algo = &customAwbSingelRes->awb_gain_algo; } static XCamReturn _customGruopAwbRes2rkAwbRes(rk_aiq_singlecam_3a_result_t ** rk_aiq_singlecam_3a_result , int camera_num, rk_aiq_rkAwb_config_t *rkCfg, rk_aiq_customeAwb_results_t* customAwbProcRes) { LOG1_AWB_SUBM(0xff, "%s ENTER", __func__); XCamReturn ret = XCAM_RETURN_NO_ERROR; rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfigFull = &rkCfg->awbHwConfig; const rk_aiq_wb_gain_t* _awbGainParams = &customAwbProcRes->awb_gain_algo;//update by first camera //awb_window_check(rkCfg,customAwbProcRes->awbHwConfig.windowSet); _customAwbHw2rkAwbHwCfg(customAwbProcRes,awbHwConfigFull);//update by first camera awb_window_check(rkCfg,awbHwConfigFull->windowSet); XCamVideoBuffer* xCamAwbProcRes; RkAiqAlgoProcResAwb* procResPara; rk_aiq_customeAwb_single_results_t* customAwbProcRes2 = customAwbProcRes->next; for(int i=0; iawb._awbProcRes; procResPara = nullptr; if (xCamAwbProcRes) { procResPara = (RkAiqAlgoProcResAwb*)xCamAwbProcRes->map(xCamAwbProcRes); if(procResPara==nullptr){ LOGE_AWBGROUP("_awbProcRes is null for %dth camera",i); return(XCAM_RETURN_ERROR_FAILED); } }else { LOGE_AWBGROUP("_awbProcRes is null for %dth camera",i); return(XCAM_RETURN_ERROR_FAILED); } if(i>0 && customAwbProcRes2 != nullptr){ _customGruopAwbHw2rkAwbHwCfg(customAwbProcRes2,awbHwConfigFull,&_awbGainParams);//update by each camera customAwbProcRes2 = customAwbProcRes2->next; awb_window_check(rkCfg,awbHwConfigFull->windowSet); } memcpy(rk_aiq_singlecam_3a_result[i]->awb._awbCfgV3x,awbHwConfigFull,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t)); memcpy(&procResPara->awb_hw1_para,awbHwConfigFull,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t)); memcpy(rk_aiq_singlecam_3a_result[i]->awb._awbGainParams,_awbGainParams,sizeof(rk_aiq_wb_gain_t)); memcpy(&procResPara->awb_gain_algo, _awbGainParams, sizeof(rk_aiq_wb_gain_t)); procResPara->awb_smooth_factor = customAwbProcRes->awb_smooth_factor; procResPara->awbConverged = customAwbProcRes->IsConverged; //WriteDataForThirdParty(*rk_aiq_singlecam_3a_result[i]->awb._awbCfgV3x,XCORE_LOG_LEVEL_LOW1+1,i); } LOG1_AWB_SUBM(0xff, "%s EXIT", __func__); return(ret); } static XCamReturn AwbDemoGroupProcessing(const RkAiqAlgoCom* inparams, RkAiqAlgoResCom* outparams) { LOGD_AWB_SUBM(0xff, "%s ENTER --------------------frame%d ---------------------", __func__,inparams->frame_id); XCamReturn ret = XCAM_RETURN_NO_ERROR; RkAiqAlgoCamGroupProcIn* AwbProcParams = (RkAiqAlgoCamGroupProcIn*)inparams; RkAiqAlgoCamGroupProcOut* AwbProcResParams = (RkAiqAlgoCamGroupProcOut*)outparams; RkAiqAwbAlgoContext* algo_ctx = (RkAiqAwbAlgoContext*)inparams->ctx; if (!algo_ctx->isGroupMode) { LOGE_AWB("wrong awb mode for group"); return ret; } if(!inparams->u.proc.init) { // init=ture, stats=null rk_aiq_customAwb_stats_t customStats; memset(&customStats,0,sizeof(customStats)); ret = _rkAwbStats2CustomGroupAwbStats(AwbProcParams->camgroupParmasArray,AwbProcParams->arraySize, &customStats); RETURN_RESULT_IF_DIFFERENT(ret, XCAM_RETURN_NO_ERROR); if (algo_ctx->cbs.pfn_awb_run) algo_ctx->cbs.pfn_awb_run(algo_ctx->aiq_ctx, &customStats, &algo_ctx->customRes ); customAwbStatsRelease(&customStats); }else{ if (algo_ctx->cbs.pfn_awb_run) algo_ctx->cbs.pfn_awb_run(algo_ctx->aiq_ctx, nullptr, &algo_ctx->customRes ); } // gen part of proc result which is from customRes _customGruopAwbRes2rkAwbRes(AwbProcResParams->camgroupParmasArray ,AwbProcResParams->arraySize,&algo_ctx->rkCfg, &algo_ctx->customRes); RETURN_RESULT_IF_DIFFERENT(ret, XCAM_RETURN_NO_ERROR); LOG1_AWB_SUBM(0xff, "%s EXIT", __func__); return XCAM_RETURN_NO_ERROR; } static XCamReturn AwbDemoPostProcess(const RkAiqAlgoCom* inparams, RkAiqAlgoResCom* outparams) { RESULT ret = RK_AIQ_RET_SUCCESS; RkAiqAwbAlgoContext* algo_ctx = (RkAiqAwbAlgoContext*)inparams->ctx; return XCAM_RETURN_NO_ERROR; } static std::map g_customAwb_desc_map; XCamReturn rk_aiq_uapi2_customAWB_register(const rk_aiq_sys_ctx_t* ctx, rk_aiq_customeAwb_cbs_t* cbs) { LOGD_AWB_SUBM(0xff, "%s ENTER", __func__); XCamReturn ret = XCAM_RETURN_NO_ERROR; if (!cbs) return XCAM_RETURN_ERROR_PARAM; const rk_aiq_camgroup_ctx_t* group_ctx = NULL; if (ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) { LOGI_AWB_SUBM(0xff, "group awb"); group_ctx = (const rk_aiq_camgroup_ctx_t*)ctx; } else { LOGI_AWB_SUBM(0xff, "single awb"); } RkAiqAlgoDescription* desc = NULL; rk_aiq_sys_ctx_t* cast_ctx = const_cast(ctx); std::map::iterator it = g_customAwb_desc_map.find(cast_ctx); if (it == g_customAwb_desc_map.end()) { desc = new RkAiqAlgoDescription(); g_customAwb_desc_map[cast_ctx] = desc; } else { desc = it->second; } desc->common.version = RKISP_ALGO_AWB_DEMO_VERSION; desc->common.vendor = RKISP_ALGO_AWB_DEMO_VENDOR; desc->common.description = RKISP_ALGO_AWB_DEMO_DESCRIPTION; desc->common.type = RK_AIQ_ALGO_TYPE_AWB; desc->common.id = 0; desc->common.create_context = AwbDemoCreateCtx; desc->common.destroy_context = AwbDemoDestroyCtx; desc->prepare = AwbDemoPrepare; desc->pre_process = AwbDemoPreProcess; if (!group_ctx) desc->processing = AwbDemoProcessing; else desc->processing = AwbDemoGroupProcessing; desc->post_process = AwbDemoPostProcess; ret = rk_aiq_uapi_sysctl_regLib(ctx, &desc->common); if (ret != XCAM_RETURN_NO_ERROR) { LOGE_AWB_SUBM(0xff, "register %d failed !", desc->common.id); return ret; } RkAiqAwbAlgoContext* algoCtx = (RkAiqAwbAlgoContext*) rk_aiq_uapi_sysctl_getAxlibCtx(ctx, desc->common.type, desc->common.id); if (algoCtx == NULL) { LOGE_AWB_SUBM(0xff, "can't get custom awb algo %d ctx!", desc->common.id); return XCAM_RETURN_ERROR_FAILED; } algoCtx->cbs = *cbs; algoCtx->aiq_ctx = const_cast(ctx); LOGD_AWB_SUBM(0xff, "register custom awb algo sucess for sys_ctx %p, lib_id %d !", ctx, desc->common.id); LOGD_AWB_SUBM(0xff, "%s EXIT", __func__); return ret; } XCamReturn rk_aiq_uapi2_customAWB_enable(const rk_aiq_sys_ctx_t* ctx, bool enable) { LOGD_AWB_SUBM(0xff, "%s ENTER", __func__); XCamReturn ret = XCAM_RETURN_NO_ERROR; RkAiqAlgoDescription* desc = NULL; rk_aiq_sys_ctx_t* cast_ctx = const_cast(ctx); std::map::iterator it = g_customAwb_desc_map.find(cast_ctx); if (it == g_customAwb_desc_map.end()) { LOGE_AWB_SUBM(0xff, "can't find custom awb algo for sys_ctx %p !", ctx); return XCAM_RETURN_ERROR_FAILED; } else { desc = it->second; } ret = rk_aiq_uapi_sysctl_enableAxlib(ctx, desc->common.type, desc->common.id, enable); if (ret != XCAM_RETURN_NO_ERROR) { LOGE_AWB_SUBM(0xff, "enable custom awb lib id %d failed !"); return ret; } // now rk and custom awb are running concurrently, // because other algos will depend on results of rk awb #if 0 //only run custom awb if (enable) ret = rk_aiq_uapi_sysctl_enableAxlib(ctx, desc->common.type, 0, !enable); #endif LOGD_AWB_SUBM(0xff, "enable custom awb algo sucess for sys_ctx %p, lib_id %d !", ctx, desc->common.id); LOGD_AWB_SUBM(0xff, "%s EXIT", __func__); return XCAM_RETURN_NO_ERROR; } XCamReturn rk_aiq_uapi2_customAWB_unRegister(const rk_aiq_sys_ctx_t* ctx) { LOGD_AWB_SUBM(0xff, "%s ENTER", __func__); RkAiqAlgoDescription* desc = NULL; rk_aiq_sys_ctx_t* cast_ctx = const_cast(ctx); std::map::iterator it = g_customAwb_desc_map.find(cast_ctx); if (it == g_customAwb_desc_map.end()) { LOGE_AWB_SUBM(0xff, "can't find custom awb algo for sys_ctx %p !", ctx); return XCAM_RETURN_ERROR_FAILED; } else { desc = it->second; } rk_aiq_uapi_sysctl_unRegLib(ctx, desc->common.type, desc->common.id); LOGD_AWB_SUBM(0xff, "unregister custom awb algo sucess for sys_ctx %p, lib_id %d !", ctx, desc->common.id); delete it->second; g_customAwb_desc_map.erase(it); LOGD_AWB_SUBM(0xff, "%s EXIT", __func__); return XCAM_RETURN_NO_ERROR; } static void WriteMeasureResult(rk_aiq_awb_stat_res_v201_t &awb_measure_result, int log_level ,int camera_id) { if(log_level awbEnable = %d;//rawawb enable\n", wpDetectPara.awbEnable); fprintf(fp, "awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;//xy detect enable for all light\n", wpDetectPara.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); fprintf(fp, "awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;//uv detect enable for all light\n", wpDetectPara.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); fprintf(fp, "awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;//uv detect enable for all light\n", wpDetectPara.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); fprintf(fp, "awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;//xy detect enable for all light\n", wpDetectPara.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); fprintf(fp, "awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;//uv detect enable for all light\n", wpDetectPara.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); fprintf(fp, "awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;//uv detect enable for all light\n", wpDetectPara.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); fprintf(fp, "awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); fprintf(fp, "awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); fprintf(fp, "awbHwConfig->lscBypEnable = %d;\n", wpDetectPara.lscBypEnable); fprintf(fp, "awbHwConfig->blkStatisticsEnable = %d;\n", wpDetectPara.blkStatisticsEnable); fprintf(fp, "awbHwConfig->blkMeasureMode = (rk_aiq_awb_blk_stat_mode_v201_t)%d;\n", wpDetectPara.blkMeasureMode); fprintf(fp, "awbHwConfig->xyRangeTypeForBlkStatistics = (rk_aiq_awb_xy_type_v201_t)%d;\n", wpDetectPara.xyRangeTypeForBlkStatistics); fprintf(fp, "awbHwConfig->illIdxForBlkStatistics = (rk_aiq_awb_blk_stat_realwp_ill_e)%d;\n", wpDetectPara.illIdxForBlkStatistics); fprintf(fp, "awbHwConfig->blkStatisticsWithLumaWeightEn = %d;\n", wpDetectPara.blkStatisticsWithLumaWeightEn); fprintf(fp, "awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); fprintf(fp, "awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); fprintf(fp, "awbHwConfig->xyRangeTypeForWpHist = (rk_aiq_awb_xy_type_v201_t)%d;\n", wpDetectPara.xyRangeTypeForWpHist); fprintf(fp, "awbHwConfig->threeDyuvIllu[0] = %d;\n", wpDetectPara.threeDyuvIllu[0]); fprintf(fp, "awbHwConfig->threeDyuvIllu[1] = %d;\n", wpDetectPara.threeDyuvIllu[1]); fprintf(fp, "awbHwConfig->threeDyuvIllu[2] = %d;\n", wpDetectPara.threeDyuvIllu[2]); fprintf(fp, "awbHwConfig->threeDyuvIllu[3] = %d;\n", wpDetectPara.threeDyuvIllu[3]); fprintf(fp, "awbHwConfig->lightNum = %d; //measurment light num ,0~7\n", wpDetectPara.lightNum ); fprintf(fp, "awbHwConfig->windowSet[0] = %d;//crop h_offs mod 2 == 0\n", wpDetectPara.windowSet[0] ); fprintf(fp, "awbHwConfig->windowSet[1] = %d;//crop v_offs mod 2 == 0\n", wpDetectPara.windowSet[1] ); fprintf(fp, "awbHwConfig->windowSet[2] = %d;//crop h_size,8x8:mod 8==0,4x4:mod 4==0\n", wpDetectPara.windowSet[2] ); fprintf(fp, "awbHwConfig->windowSet[3] = %d;//crop v_size,8x8:mod 8==0,4x4:mod 4==0\n", wpDetectPara.windowSet[3] ); /*if (wpDetectPara.windowSet[2]>2560||wpDetectPara.windowSet[3]>2560) Ds_rate = 8;*/ int tmp; switch (wpDetectPara.dsMode) { case RK_AIQ_AWB_DS_4X4: tmp = 0; break; default: tmp = 1; } fprintf(fp, "awbHwConfig->dsMode = (rk_aiq_down_scale_mode_t)%d;//downscale,1:8x8,0:4x4\n", tmp ); fprintf(fp, "awbHwConfig->maxR = %d;\n", wpDetectPara.maxR ); fprintf(fp, "awbHwConfig->maxG = %d;\n", wpDetectPara.maxG ); fprintf(fp, "awbHwConfig->maxB = %d;\n", wpDetectPara.maxB ); fprintf(fp, "awbHwConfig->maxY = %d;\n", wpDetectPara.maxY ); fprintf(fp, "awbHwConfig->minR = %d;\n", wpDetectPara.minR ); fprintf(fp, "awbHwConfig->minG = %d;\n", wpDetectPara.minG ); fprintf(fp, "awbHwConfig->minB = %d;\n", wpDetectPara.minB ); fprintf(fp, "awbHwConfig->minY = %d;\n", wpDetectPara.minY ); fprintf(fp, "awbHwConfig->uvRange_param[0].pu_region[0] = %d;//uv detect white point region vertex and inverse slope\n", wpDetectPara.uvRange_param[0].pu_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[0].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[0].pv_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[0].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[0].pu_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[0].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[0].pv_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[0].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[0].pu_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[0].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[0].pv_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[0].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[0].pu_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[0].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[0].pv_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[0].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[0].slope_inv[0]); fprintf(fp, "awbHwConfig->uvRange_param[0].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[0].slope_inv[1]); fprintf(fp, "awbHwConfig->uvRange_param[0].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[0].slope_inv[2]); fprintf(fp, "awbHwConfig->uvRange_param[0].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[0].slope_inv[3]); fprintf(fp, "awbHwConfig->uvRange_param[1].pu_region[0] = %d;\n", wpDetectPara.uvRange_param[1].pu_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[1].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[1].pv_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[1].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[1].pu_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[1].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[1].pv_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[1].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[1].pu_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[1].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[1].pv_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[1].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[1].pu_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[1].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[1].pv_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[1].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[1].slope_inv[0]); fprintf(fp, "awbHwConfig->uvRange_param[1].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[1].slope_inv[1]); fprintf(fp, "awbHwConfig->uvRange_param[1].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[1].slope_inv[2]); fprintf(fp, "awbHwConfig->uvRange_param[1].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[1].slope_inv[3]); fprintf(fp, "awbHwConfig->uvRange_param[2].pu_region[0] = %d;\n", wpDetectPara.uvRange_param[2].pu_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[2].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[2].pv_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[2].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[2].pu_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[2].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[2].pv_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[2].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[2].pu_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[2].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[2].pv_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[2].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[2].pu_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[2].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[2].pv_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[2].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[2].slope_inv[0]); fprintf(fp, "awbHwConfig->uvRange_param[2].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[2].slope_inv[1]); fprintf(fp, "awbHwConfig->uvRange_param[2].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[2].slope_inv[2]); fprintf(fp, "awbHwConfig->uvRange_param[2].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[2].slope_inv[3]); fprintf(fp, "awbHwConfig->uvRange_param[3].pu_region[0] = %d;\n", wpDetectPara.uvRange_param[3].pu_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[3].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[3].pv_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[3].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[3].pu_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[3].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[3].pv_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[3].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[3].pu_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[3].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[3].pv_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[3].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[3].pu_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[3].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[3].pv_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[3].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[3].slope_inv[0]); fprintf(fp, "awbHwConfig->uvRange_param[3].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[3].slope_inv[1]); fprintf(fp, "awbHwConfig->uvRange_param[3].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[3].slope_inv[2]); fprintf(fp, "awbHwConfig->uvRange_param[3].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[3].slope_inv[3]); fprintf(fp, "awbHwConfig->uvRange_param[4].pu_region[0] = %d;\n", wpDetectPara.uvRange_param[4].pu_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[4].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[4].pv_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[4].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[4].pu_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[4].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[4].pv_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[4].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[4].pu_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[4].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[4].pv_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[4].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[4].pu_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[4].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[4].pv_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[4].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[4].slope_inv[0]); fprintf(fp, "awbHwConfig->uvRange_param[4].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[4].slope_inv[1]); fprintf(fp, "awbHwConfig->uvRange_param[4].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[4].slope_inv[2]); fprintf(fp, "awbHwConfig->uvRange_param[4].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[4].slope_inv[3]); fprintf(fp, "awbHwConfig->uvRange_param[5].pu_region[0] = %d;\n", wpDetectPara.uvRange_param[5].pu_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[5].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[5].pv_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[5].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[5].pu_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[5].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[5].pv_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[5].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[5].pu_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[5].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[5].pv_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[5].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[5].pu_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[5].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[5].pv_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[5].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[5].slope_inv[0]); fprintf(fp, "awbHwConfig->uvRange_param[5].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[5].slope_inv[1]); fprintf(fp, "awbHwConfig->uvRange_param[5].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[5].slope_inv[2]); fprintf(fp, "awbHwConfig->uvRange_param[5].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[5].slope_inv[3]); fprintf(fp, "awbHwConfig->uvRange_param[6].pu_region[0] = %d;\n", wpDetectPara.uvRange_param[6].pu_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[6].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[6].pv_region[0]); fprintf(fp, "awbHwConfig->uvRange_param[6].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[6].pu_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[6].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[6].pv_region[1]); fprintf(fp, "awbHwConfig->uvRange_param[6].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[6].pu_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[6].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[6].pv_region[2]); fprintf(fp, "awbHwConfig->uvRange_param[6].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[6].pu_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[6].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[6].pv_region[3]); fprintf(fp, "awbHwConfig->uvRange_param[6].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[6].slope_inv[0]); fprintf(fp, "awbHwConfig->uvRange_param[6].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[6].slope_inv[1]); fprintf(fp, "awbHwConfig->uvRange_param[6].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[6].slope_inv[2]); fprintf(fp, "awbHwConfig->uvRange_param[6].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[6].slope_inv[3]); fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[0] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[0]); fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[1] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[1]); fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[2] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[2]); fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[3] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[3]); fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[4] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[4]); fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[5] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[5]); fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[6] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[6]); fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[7] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[7]); fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[8] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[8]); fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[9] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[9]); fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[10] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[10]); fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[11] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[11]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[3]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[4]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[5]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[3]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[4]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[5]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].lineP1[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].lineP1[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].lineP1[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].lineP1[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].lineP1[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].lineP1[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].vP1P2[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].vP1P2[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].vP1P2[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].disP1P2 = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].disP1P2); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[3]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[4]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[5]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[3]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[4]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[5]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].lineP1[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].lineP1[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].lineP1[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].lineP1[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].lineP1[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].lineP1[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].vP1P2[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].vP1P2[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].vP1P2[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].disP1P2 = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].disP1P2); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[3]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[4]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[5]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[3]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[4]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[5]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].lineP1[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].lineP1[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].lineP1[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].lineP1[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].lineP1[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].lineP1[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].vP1P2[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].vP1P2[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].vP1P2[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].disP1P2 = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].disP1P2); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[3]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[4]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[5]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[3]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[4]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[5]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].lineP1[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].lineP1[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].lineP1[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].lineP1[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].lineP1[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].lineP1[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].vP1P2[0]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].vP1P2[1]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].vP1P2[2]); fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].disP1P2 = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].disP1P2); fprintf(fp, "awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[0] = %d;\n", wpDetectPara.rgb2xy_param.pseudoLuminanceWeight[0] ); //rgb2xy parpmeter fprintf(fp, "awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[1] = %d;\n", wpDetectPara.rgb2xy_param.pseudoLuminanceWeight[1] ); //rgb2xy parpmeter fprintf(fp, "awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[2] = %d;\n", wpDetectPara.rgb2xy_param.pseudoLuminanceWeight[2] ); //rgb2xy parpmeter fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[0] = %d;\n", wpDetectPara.rgb2xy_param.rotationMat[0] ); //rgb2xy parpmeter fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[1] = %d;\n", wpDetectPara.rgb2xy_param.rotationMat[1] ); //rgb2xy parpmeter fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[2] = %d;\n", wpDetectPara.rgb2xy_param.rotationMat[2] ); //rgb2xy parpmeter fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[3] = %d;\n", wpDetectPara.rgb2xy_param.rotationMat[3] ); //rgb2xy parpmeter fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[4] = %d;\n", wpDetectPara.rgb2xy_param.rotationMat[4] ); //rgb2xy parpmeter fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[5] = %d;\n", wpDetectPara.rgb2xy_param.rotationMat[5] ); //rgb2xy parpmeter fprintf(fp, "awbHwConfig->xyRange_param[0].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[0].NorrangeX[0] ); //xy detect xy region fprintf(fp, "awbHwConfig->xyRange_param[0].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[0].NorrangeX[1] ); //xy detect xy region fprintf(fp, "awbHwConfig->xyRange_param[0].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[0].NorrangeY[0] ); //xy detect xy region fprintf(fp, "awbHwConfig->xyRange_param[0].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[0].NorrangeY[1] ); //xy detect xy region fprintf(fp, "awbHwConfig->xyRange_param[0].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[0].SperangeX[0] ); //xy detect xy region fprintf(fp, "awbHwConfig->xyRange_param[0].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[0].SperangeX[1] ); //xy detect xy region fprintf(fp, "awbHwConfig->xyRange_param[0].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[0].SperangeY[0] ); //xy detect xy region fprintf(fp, "awbHwConfig->xyRange_param[0].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[0].SperangeY[1] ); //xy detect xy region fprintf(fp, "awbHwConfig->xyRange_param[1].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[1].NorrangeX[0] ); fprintf(fp, "awbHwConfig->xyRange_param[1].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[1].NorrangeX[1] ); fprintf(fp, "awbHwConfig->xyRange_param[1].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[1].NorrangeY[0] ); fprintf(fp, "awbHwConfig->xyRange_param[1].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[1].NorrangeY[1] ); fprintf(fp, "awbHwConfig->xyRange_param[1].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[1].SperangeX[0] ); fprintf(fp, "awbHwConfig->xyRange_param[1].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[1].SperangeX[1] ); fprintf(fp, "awbHwConfig->xyRange_param[1].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[1].SperangeY[0] ); fprintf(fp, "awbHwConfig->xyRange_param[1].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[1].SperangeY[1] ); fprintf(fp, "awbHwConfig->xyRange_param[2].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[2].NorrangeX[0] ); fprintf(fp, "awbHwConfig->xyRange_param[2].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[2].NorrangeX[1] ); fprintf(fp, "awbHwConfig->xyRange_param[2].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[2].NorrangeY[0] ); fprintf(fp, "awbHwConfig->xyRange_param[2].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[2].NorrangeY[1] ); fprintf(fp, "awbHwConfig->xyRange_param[2].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[2].SperangeX[0] ); fprintf(fp, "awbHwConfig->xyRange_param[2].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[2].SperangeX[1] ); fprintf(fp, "awbHwConfig->xyRange_param[2].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[2].SperangeY[0] ); fprintf(fp, "awbHwConfig->xyRange_param[2].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[2].SperangeY[1] ); fprintf(fp, "awbHwConfig->xyRange_param[3].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[3].NorrangeX[0] ); fprintf(fp, "awbHwConfig->xyRange_param[3].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[3].NorrangeX[1] ); fprintf(fp, "awbHwConfig->xyRange_param[3].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[3].NorrangeY[0] ); fprintf(fp, "awbHwConfig->xyRange_param[3].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[3].NorrangeY[1] ); fprintf(fp, "awbHwConfig->xyRange_param[3].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[3].SperangeX[0] ); fprintf(fp, "awbHwConfig->xyRange_param[3].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[3].SperangeX[1] ); fprintf(fp, "awbHwConfig->xyRange_param[3].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[3].SperangeY[0] ); fprintf(fp, "awbHwConfig->xyRange_param[3].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[3].SperangeY[1] ); fprintf(fp, "awbHwConfig->xyRange_param[4].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[4].NorrangeX[0] ); fprintf(fp, "awbHwConfig->xyRange_param[4].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[4].NorrangeX[1] ); fprintf(fp, "awbHwConfig->xyRange_param[4].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[4].NorrangeY[0] ); fprintf(fp, "awbHwConfig->xyRange_param[4].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[4].NorrangeY[1] ); fprintf(fp, "awbHwConfig->xyRange_param[4].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[4].SperangeX[0] ); fprintf(fp, "awbHwConfig->xyRange_param[4].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[4].SperangeX[1] ); fprintf(fp, "awbHwConfig->xyRange_param[4].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[4].SperangeY[0] ); fprintf(fp, "awbHwConfig->xyRange_param[4].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[4].SperangeY[1] ); fprintf(fp, "awbHwConfig->xyRange_param[5].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[5].NorrangeX[0] ); fprintf(fp, "awbHwConfig->xyRange_param[5].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[5].NorrangeX[1] ); fprintf(fp, "awbHwConfig->xyRange_param[5].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[5].NorrangeY[0] ); fprintf(fp, "awbHwConfig->xyRange_param[5].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[5].NorrangeY[1] ); fprintf(fp, "awbHwConfig->xyRange_param[5].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[5].SperangeX[0] ); fprintf(fp, "awbHwConfig->xyRange_param[5].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[5].SperangeX[1] ); fprintf(fp, "awbHwConfig->xyRange_param[5].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[5].SperangeY[0] ); fprintf(fp, "awbHwConfig->xyRange_param[5].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[5].SperangeY[1] ); fprintf(fp, "awbHwConfig->xyRange_param[6].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[6].NorrangeX[0] ); fprintf(fp, "awbHwConfig->xyRange_param[6].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[6].NorrangeX[1] ); fprintf(fp, "awbHwConfig->xyRange_param[6].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[6].NorrangeY[0] ); fprintf(fp, "awbHwConfig->xyRange_param[6].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[6].NorrangeY[1] ); fprintf(fp, "awbHwConfig->xyRange_param[6].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[6].SperangeX[0] ); fprintf(fp, "awbHwConfig->xyRange_param[6].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[6].SperangeX[1] ); fprintf(fp, "awbHwConfig->xyRange_param[6].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[6].SperangeY[0] ); fprintf(fp, "awbHwConfig->xyRange_param[6].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[6].SperangeY[1] ); fprintf(fp, "awbHwConfig->pre_wbgain_inv_r = %d;\n", wpDetectPara.pre_wbgain_inv_r); fprintf(fp, "awbHwConfig->pre_wbgain_inv_g = %d;\n", wpDetectPara.pre_wbgain_inv_g); fprintf(fp, "awbHwConfig->pre_wbgain_inv_b = %d;\n", wpDetectPara.pre_wbgain_inv_b); //add new #if defined(ISP_HW_V30) fprintf(fp, "awbHwConfig->multiwindow_en = %d;\n", wpDetectPara.multiwindow_en); // multiwindow auto white balance measure enable fprintf(fp, "awbHwConfig->multiwindow[0][0] = %d;\n", wpDetectPara.multiwindow[0][0]); // multiwindow0 row start fprintf(fp, "awbHwConfig->multiwindow[0][1] = %d;\n", wpDetectPara.multiwindow[0][1]); // multiwindow0 column start fprintf(fp, "awbHwConfig->multiwindow[0][2] = %d;\n", wpDetectPara.multiwindow[0][2]); // multiwindow0 row size fprintf(fp, "awbHwConfig->multiwindow[0][3] = %d;\n", wpDetectPara.multiwindow[0][3]); // multiwindow0 column size fprintf(fp, "awbHwConfig->multiwindow[1][0] = %d;\n", wpDetectPara.multiwindow[1][0]); // multiwindow1 row start fprintf(fp, "awbHwConfig->multiwindow[1][1] = %d;\n", wpDetectPara.multiwindow[1][1]); // multiwindow1 column start fprintf(fp, "awbHwConfig->multiwindow[1][2] = %d;\n", wpDetectPara.multiwindow[1][2]); // multiwindow1 row size fprintf(fp, "awbHwConfig->multiwindow[1][3] = %d;\n", wpDetectPara.multiwindow[1][3]); // multiwindow1 column size fprintf(fp, "awbHwConfig->multiwindow[2][0] = %d;\n", wpDetectPara.multiwindow[2][0]); // multiwindow2 row start fprintf(fp, "awbHwConfig->multiwindow[2][1] = %d;\n", wpDetectPara.multiwindow[2][1]); // multiwindow2 column start fprintf(fp, "awbHwConfig->multiwindow[2][2] = %d;\n", wpDetectPara.multiwindow[2][2]); // multiwindow2 row size fprintf(fp, "awbHwConfig->multiwindow[2][3] = %d;\n", wpDetectPara.multiwindow[2][3]); // multiwindow2 column size fprintf(fp, "awbHwConfig->multiwindow[3][0] = %d;\n", wpDetectPara.multiwindow[3][0]); // multiwindow3 row start fprintf(fp, "awbHwConfig->multiwindow[3][1] = %d;\n", wpDetectPara.multiwindow[3][1]); // multiwindow3 column start fprintf(fp, "awbHwConfig->multiwindow[3][2] = %d;\n", wpDetectPara.multiwindow[3][2]); // multiwindow3 row size fprintf(fp, "awbHwConfig->multiwindow[3][3] = %d;\n", wpDetectPara.multiwindow[3][3]); // multiwindow3 column size #endif fprintf(fp, "awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[0].measureEnable = %d;\n", wpDetectPara.excludeWpRange[0].measureEnable); //white points region0 measure enable fprintf(fp, "awbHwConfig->excludeWpRange[0].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[0].domain ); //white points region0 exclusion in domain,1 uv domain,2 xy domain. fprintf(fp, "awbHwConfig->excludeWpRange[0].xu[0] = %d;\n", wpDetectPara.excludeWpRange[0].xu[0] ); //left x/u boundary of white points exclusion region0 fprintf(fp, "awbHwConfig->excludeWpRange[0].xu[1] = %d;\n", wpDetectPara.excludeWpRange[0].xu[1] ); //right x/u boundary of white points exclusion region0 fprintf(fp, "awbHwConfig->excludeWpRange[0].yv[0] = %d;\n", wpDetectPara.excludeWpRange[0].yv[0] ); //up y/v boundary of white points exclusion region0 fprintf(fp, "awbHwConfig->excludeWpRange[0].yv[1] = %d;\n", wpDetectPara.excludeWpRange[0].yv[1] ); //down y/v boundary of white points exclusion region0 fprintf(fp, "awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[1].measureEnable = %d;\n", wpDetectPara.excludeWpRange[1].measureEnable); //white points region1 measure enable fprintf(fp, "awbHwConfig->excludeWpRange[1].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[1].domain ); //white points region1 exclusion in domain,1 uv domain,2 xy domain. fprintf(fp, "awbHwConfig->excludeWpRange[1].xu[0] = %d;\n", wpDetectPara.excludeWpRange[1].xu[0] ); //left x/u boundary of white points exclusion region1 fprintf(fp, "awbHwConfig->excludeWpRange[1].xu[1] = %d;\n", wpDetectPara.excludeWpRange[1].xu[1] ); //right x/u boundary of white points exclusion region1 fprintf(fp, "awbHwConfig->excludeWpRange[1].yv[0] = %d;\n", wpDetectPara.excludeWpRange[1].yv[0] ); //up y/v boundary of white points exclusion region1 fprintf(fp, "awbHwConfig->excludeWpRange[1].yv[1] = %d;\n", wpDetectPara.excludeWpRange[1].yv[1] ); //down y/v boundary of white points exclusion region1 fprintf(fp, "awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[2].measureEnable = %d;\n", wpDetectPara.excludeWpRange[2].measureEnable); //white points region2 measure enable fprintf(fp, "awbHwConfig->excludeWpRange[2].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[2].domain ); //white points region2 exclusion in domain,1 uv domain,2 xy domain. fprintf(fp, "awbHwConfig->excludeWpRange[2].xu[0] = %d;\n", wpDetectPara.excludeWpRange[2].xu[0] ); //left x/u boundary of white points exclusion region2 fprintf(fp, "awbHwConfig->excludeWpRange[2].xu[1] = %d;\n", wpDetectPara.excludeWpRange[2].xu[1] ); //right x/u boundary of white points exclusion region2 fprintf(fp, "awbHwConfig->excludeWpRange[2].yv[0] = %d;\n", wpDetectPara.excludeWpRange[2].yv[0] ); //up y/v boundary of white points exclusion region2 fprintf(fp, "awbHwConfig->excludeWpRange[2].yv[1] = %d;\n", wpDetectPara.excludeWpRange[2].yv[1] ); //down y/v boundary of white points exclusion region2 fprintf(fp, "awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[3].measureEnable = %d;\n", wpDetectPara.excludeWpRange[3].measureEnable); //white points region3 measure enable fprintf(fp, "awbHwConfig->excludeWpRange[3].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[3].domain ); //white points region3 exclusion in domain,1 uv domain,2 xy domain. fprintf(fp, "awbHwConfig->excludeWpRange[3].xu[0] = %d;\n", wpDetectPara.excludeWpRange[3].xu[0] ); //left x/u boundary of white points exclusion region3 fprintf(fp, "awbHwConfig->excludeWpRange[3].xu[1] = %d;\n", wpDetectPara.excludeWpRange[3].xu[1] ); //right x/u boundary of white points exclusion region3 fprintf(fp, "awbHwConfig->excludeWpRange[3].yv[0] = %d;\n", wpDetectPara.excludeWpRange[3].yv[0] ); //up y/v boundary of white points exclusion region3 fprintf(fp, "awbHwConfig->excludeWpRange[3].yv[1] = %d;\n", wpDetectPara.excludeWpRange[3].yv[1] ); //down y/v boundary of white points exclusion region3 fprintf(fp, "awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[4].measureEnable = %d;\n", wpDetectPara.excludeWpRange[4].measureEnable); //white points region4 measure enable fprintf(fp, "awbHwConfig->excludeWpRange[4].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[4].domain ); //white points region4 exclusion in domain,1 uv domain,2 xy domain. fprintf(fp, "awbHwConfig->excludeWpRange[4].xu[0] = %d;\n", wpDetectPara.excludeWpRange[4].xu[0] ); //left x/u boundary of white points exclusion region4 fprintf(fp, "awbHwConfig->excludeWpRange[4].xu[1] = %d;\n", wpDetectPara.excludeWpRange[4].xu[1] ); //right x/u boundary of white points exclusion region4 fprintf(fp, "awbHwConfig->excludeWpRange[4].yv[0] = %d;\n", wpDetectPara.excludeWpRange[4].yv[0] ); //up y/v boundary of white points exclusion region4 fprintf(fp, "awbHwConfig->excludeWpRange[4].yv[1] = %d;\n", wpDetectPara.excludeWpRange[4].yv[1] ); //down y/v boundary of white points exclusion region4 fprintf(fp, "awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[5].measureEnable = %d;\n", wpDetectPara.excludeWpRange[5].measureEnable); //white points region5 measure enable fprintf(fp, "awbHwConfig->excludeWpRange[5].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[5].domain ); //white points region5 exclusion in domain,1 uv domain,2 xy domain. fprintf(fp, "awbHwConfig->excludeWpRange[5].xu[0] = %d;\n", wpDetectPara.excludeWpRange[5].xu[0] ); //left x/u boundary of white points exclusion region5 fprintf(fp, "awbHwConfig->excludeWpRange[5].xu[1] = %d;\n", wpDetectPara.excludeWpRange[5].xu[1] ); //right x/u boundary of white points exclusion region5 fprintf(fp, "awbHwConfig->excludeWpRange[5].yv[0] = %d;\n", wpDetectPara.excludeWpRange[5].yv[0] ); //up y/v boundary of white points exclusion region5 fprintf(fp, "awbHwConfig->excludeWpRange[5].yv[1] = %d;\n", wpDetectPara.excludeWpRange[5].yv[1] ); //down y/v boundary of white points exclusion region5 fprintf(fp, "awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable fprintf(fp, "awbHwConfig->excludeWpRange[6].measureEnable = %d;\n", wpDetectPara.excludeWpRange[6].measureEnable); //white points region6 measure enable fprintf(fp, "awbHwConfig->excludeWpRange[6].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[6].domain ); //white points region6 exclusion in domain,1 uv domain,2 xy domain. fprintf(fp, "awbHwConfig->excludeWpRange[6].xu[0] = %d;\n", wpDetectPara.excludeWpRange[6].xu[0] ); //left x/u boundary of white points exclusion region6 fprintf(fp, "awbHwConfig->excludeWpRange[6].xu[1] = %d;\n", wpDetectPara.excludeWpRange[6].xu[1] ); //right x/u boundary of white points exclusion region6 fprintf(fp, "awbHwConfig->excludeWpRange[6].yv[0] = %d;\n", wpDetectPara.excludeWpRange[6].yv[0] ); //up y/v boundary of white points exclusion region6 fprintf(fp, "awbHwConfig->excludeWpRange[6].yv[1] = %d;\n", wpDetectPara.excludeWpRange[6].yv[1] ); //down y/v boundary of white points exclusion region6 for (int i = 0; i < RK_AIQ_AWBWP_WEIGHT_CURVE_DOT_NUM; i++) { fprintf(fp, "awbHwConfig->wpDiffwei_y[%d] =%d;\n", i, wpDetectPara.wpDiffwei_y[i]); } for (int i = 0; i < RK_AIQ_AWBWP_WEIGHT_CURVE_DOT_NUM; i++) { fprintf(fp, "awbHwConfig->wpDiffwei_w[%d] =%d;\n", i, wpDetectPara.wpDiffwei_w[i]); } for (int i = 0; i < RK_AIQ_AWB_GRID_NUM_TOTAL; i++) { fprintf(fp, "awbHwConfig->blkWeight[%d] =%d;\n", i, wpDetectPara.blkWeight[i]); } fprintf(fp, "awbHwConfig->blk_rtdw_measure_en = %d;\n", wpDetectPara.blk_rtdw_measure_en ); fclose(fp); } } RKAIQ_END_DECLARE