You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3000 lines
168 KiB

/*
* Copyright (c) 2024 Rockchip Eletronics Co., Ltd.
*
* 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 "Isp39Params.h"
#include "rk_aiq_isp39_modules.h"
namespace RkCam {
#define ISP2X_WBGAIN_FIXSCALE_BIT 8
#define ISP3X_WBGAIN_INTSCALE_BIT 8
void Isp39Params::convertAiqAwbGainToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
const rk_aiq_wb_gain_v32_t& awb_gain, bool awb_gain_update)
{
#if RKAIQ_HAVE_AWB_V32
if(awb_gain_update) {
isp_cfg.module_ens |= 1LL << RK_ISP2X_AWB_GAIN_ID;
isp_cfg.module_cfg_update |= 1LL << RK_ISP2X_AWB_GAIN_ID;
isp_cfg.module_en_update |= 1LL << RK_ISP2X_AWB_GAIN_ID;
} else {
return;
}
struct isp32_awb_gain_cfg * cfg = &isp_cfg.others.awb_gain_cfg;
uint16_t max_wb_gain = (1 << (ISP2X_WBGAIN_FIXSCALE_BIT + 3)) - 1;
rk_aiq_wb_gain_v32_t awb_gain1 = awb_gain;
#if 0 //to do
if(blc != nullptr && blc->v0.enable) {
awb_gain1.bgain *= (float)((1 << ISP2X_BLC_BIT_MAX) - 1) / ((1 << ISP2X_BLC_BIT_MAX) - 1 - blc->v0.blc_b);
awb_gain1.gbgain *= (float)((1 << ISP2X_BLC_BIT_MAX) - 1) / ((1 << ISP2X_BLC_BIT_MAX) - 1 - blc->v0.blc_gb);
awb_gain1.rgain *= (float)((1 << ISP2X_BLC_BIT_MAX) - 1) / ((1 << ISP2X_BLC_BIT_MAX) - 1 - blc->v0.blc_r);
awb_gain1.grgain *= (float)((1 << ISP2X_BLC_BIT_MAX) - 1) / ((1 << ISP2X_BLC_BIT_MAX) - 1 - blc->v0.blc_gr);
}
#endif
uint16_t R = (uint16_t)(0.5 + awb_gain1.rgain * (1 << ISP2X_WBGAIN_FIXSCALE_BIT));
uint16_t B = (uint16_t)(0.5 + awb_gain1.bgain * (1 << ISP2X_WBGAIN_FIXSCALE_BIT));
uint16_t Gr = (uint16_t)(0.5 + awb_gain1.grgain * (1 << ISP2X_WBGAIN_FIXSCALE_BIT));
uint16_t Gb = (uint16_t)(0.5 + awb_gain1.gbgain * (1 << ISP2X_WBGAIN_FIXSCALE_BIT));
if(awb_gain.applyPosition == IN_AWBGAIN0) {
cfg->gain0_red = R > max_wb_gain ? max_wb_gain : R;
cfg->gain0_blue = B > max_wb_gain ? max_wb_gain : B;
cfg->gain0_green_r = Gr > max_wb_gain ? max_wb_gain : Gr ;
cfg->gain0_green_b = Gb > max_wb_gain ? max_wb_gain : Gb;
cfg->gain1_red = R > max_wb_gain ? max_wb_gain : R;
cfg->gain1_blue = B > max_wb_gain ? max_wb_gain : B;
cfg->gain1_green_r = Gr > max_wb_gain ? max_wb_gain : Gr ;
cfg->gain1_green_b = Gb > max_wb_gain ? max_wb_gain : Gb;
cfg->gain2_red = R > max_wb_gain ? max_wb_gain : R;
cfg->gain2_blue = B > max_wb_gain ? max_wb_gain : B;
cfg->gain2_green_r = Gr > max_wb_gain ? max_wb_gain : Gr ;
cfg->gain2_green_b = Gb > max_wb_gain ? max_wb_gain : Gb;
cfg->awb1_gain_r = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->awb1_gain_b = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->awb1_gain_gr = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->awb1_gain_gb = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
} else {
cfg->gain0_red = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->gain0_blue = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->gain0_green_r = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->gain0_green_b = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->gain1_red = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->gain1_blue = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->gain1_green_r = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->gain1_green_b = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->gain2_red = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->gain2_blue = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->gain2_green_r = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->gain2_green_b = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
cfg->awb1_gain_r = R > max_wb_gain ? max_wb_gain : R;
cfg->awb1_gain_b = B > max_wb_gain ? max_wb_gain : B;
cfg->awb1_gain_gr = Gr > max_wb_gain ? max_wb_gain : Gr;
cfg->awb1_gain_gb = Gb > max_wb_gain ? max_wb_gain : Gb;
}
#endif
#if RKAIQ_HAVE_AWB_V32
mLatestWbGainCfg = *cfg;
#endif
}
#if RKAIQ_HAVE_AWB_V32
static void WriteAwbReg(struct isp39_rawawb_meas_cfg* awb_cfg_v32)
{
#if 0
char fName[100];
sprintf(fName, "./tmp/awb_reg.txt");
LOGE_AWB( "%s", fName);
FILE* fp = fopen(fName, "wb");
if(fp == NULL) {
return;
}
//fprintf(fp, "\t\tsw_rawawb_en = 0x%0x (%d)\n", awb_cfg_v32->en ,awb_cfg_v32->en);
fprintf(fp, "\t\tsw_rawawb_uv_en0 = 0x%0x (%d)\n", awb_cfg_v32->uv_en0, awb_cfg_v32->uv_en0);
fprintf(fp, "\t\tsw_rawawb_xy_en0 = 0x%0x (%d)\n", awb_cfg_v32->xy_en0, awb_cfg_v32->xy_en0);
fprintf(fp, "\t\tsw_rawawb_yuv3d_en0 = 0x%0x (%d)\n", awb_cfg_v32->yuv3d_en0, awb_cfg_v32->yuv3d_en0);
fprintf(fp, "\t\tsw_rawawb_yuv3d_ls_idx0 = 0x%0x (%d)\n", awb_cfg_v32->yuv3d_ls_idx0, awb_cfg_v32->yuv3d_ls_idx0);
fprintf(fp, "\t\tsw_rawawb_yuv3d_ls_idx1 = 0x%0x (%d)\n", awb_cfg_v32->yuv3d_ls_idx1, awb_cfg_v32->yuv3d_ls_idx1);
fprintf(fp, "\t\tsw_rawawb_yuv3d_ls_idx2 = 0x%0x (%d)\n", awb_cfg_v32->yuv3d_ls_idx2, awb_cfg_v32->yuv3d_ls_idx2);
fprintf(fp, "\t\tsw_rawawb_yuv3d_ls_idx3 = 0x%0x (%d)\n", awb_cfg_v32->yuv3d_ls_idx3, awb_cfg_v32->yuv3d_ls_idx3);
fprintf(fp, "\t\tsw_rawawb_in_rshift_to_12bit_en = 0x%0x (%d)\n", awb_cfg_v32->in_rshift_to_12bit_en, awb_cfg_v32->in_rshift_to_12bit_en);
fprintf(fp, "\t\tsw_rawawb_in_overexposure_check_en = 0x%0x (%d)\n", awb_cfg_v32->in_overexposure_check_en, awb_cfg_v32->in_overexposure_check_en);
fprintf(fp, "\t\tsw_rawawb_wind_size = 0x%0x (%d)\n", awb_cfg_v32->wind_size, awb_cfg_v32->wind_size);
fprintf(fp, "\t\tsw_rawlsc_bypass_en = 0x%0x (%d)\n", awb_cfg_v32->rawlsc_bypass_en, awb_cfg_v32->rawlsc_bypass_en);
fprintf(fp, "\t\tsw_rawawb_light_num = 0x%0x (%d)\n", awb_cfg_v32->light_num, awb_cfg_v32->light_num);
//fprintf(fp, "\t\tsw_rawawb_2ddr_path_en = 0x%0x (%d)\n", awb_cfg_v32->2ddr_path_en ,awb_cfg_v32->2ddr_path_en);
fprintf(fp, "\t\tsw_rawawb_uv_en1 = 0x%0x (%d)\n", awb_cfg_v32->uv_en1, awb_cfg_v32->uv_en1);
fprintf(fp, "\t\tsw_rawawb_xy_en1 = 0x%0x (%d)\n", awb_cfg_v32->xy_en1, awb_cfg_v32->xy_en1);
fprintf(fp, "\t\tsw_rawawb_yuv3d_en1 = 0x%0x (%d)\n", awb_cfg_v32->yuv3d_en1, awb_cfg_v32->yuv3d_en1);
//fprintf(fp, "\t\tsw_rawawb_2ddr_path_sel = 0x%0x (%d)\n", awb_cfg_v32->2ddr_path_sel ,awb_cfg_v32->2ddr_path_sel);
fprintf(fp, "\t\tsw_rawawbin_low12bit_val = 0x%0x (%d)\n", awb_cfg_v32->low12bit_val, awb_cfg_v32->low12bit_val);
fprintf(fp, "\t\tsw_rawawb_blk_measure_en = 0x%0x (%d)\n", awb_cfg_v32->blk_measure_enable, awb_cfg_v32->blk_measure_enable);
fprintf(fp, "\t\tsw_rawawb_blk_measure_mode = 0x%0x (%d)\n", awb_cfg_v32->blk_measure_mode, awb_cfg_v32->blk_measure_mode);
fprintf(fp, "\t\tsw_rawawb_blk_measure_xytype = 0x%0x (%d)\n", awb_cfg_v32->blk_measure_xytype, awb_cfg_v32->blk_measure_xytype);
fprintf(fp, "\t\tsw_rawawb_blk_rtdw_measure_en = 0x%0x (%d)\n", awb_cfg_v32->blk_rtdw_measure_en, awb_cfg_v32->blk_rtdw_measure_en);
fprintf(fp, "\t\tsw_rawawb_blk_measure_illu_idx = 0x%0x (%d)\n", awb_cfg_v32->blk_measure_illu_idx, awb_cfg_v32->blk_measure_illu_idx);
fprintf(fp, "\t\tsw_rawawb_ds16x8_mode_en = 0x%0x (%d)\n", awb_cfg_v32->ds16x8_mode_en, awb_cfg_v32->ds16x8_mode_en);
fprintf(fp, "\t\tsw_rawawb_blk_with_luma_wei_en = 0x%0x (%d)\n", awb_cfg_v32->blk_with_luma_wei_en, awb_cfg_v32->blk_with_luma_wei_en);
fprintf(fp, "\t\tsw_rawawb_in_overexposure_threshold = 0x%0x (%d)\n", awb_cfg_v32->in_overexposure_threshold, awb_cfg_v32->in_overexposure_threshold);
fprintf(fp, "\t\tsw_rawawb_h_offs = 0x%0x (%d)\n", awb_cfg_v32->h_offs, awb_cfg_v32->h_offs);
fprintf(fp, "\t\tsw_rawawb_v_offs = 0x%0x (%d)\n", awb_cfg_v32->v_offs, awb_cfg_v32->v_offs);
fprintf(fp, "\t\tsw_rawawb_h_size = 0x%0x (%d)\n", awb_cfg_v32->h_size, awb_cfg_v32->h_size);
fprintf(fp, "\t\tsw_rawawb_v_size = 0x%0x (%d)\n", awb_cfg_v32->v_size, awb_cfg_v32->v_size);
fprintf(fp, "\t\tsw_rawawb_r_max = 0x%0x (%d)\n", awb_cfg_v32->r_max, awb_cfg_v32->r_max);
fprintf(fp, "\t\tsw_rawawb_g_max = 0x%0x (%d)\n", awb_cfg_v32->g_max, awb_cfg_v32->g_max);
fprintf(fp, "\t\tsw_rawawb_b_max = 0x%0x (%d)\n", awb_cfg_v32->b_max, awb_cfg_v32->b_max);
fprintf(fp, "\t\tsw_rawawb_y_max = 0x%0x (%d)\n", awb_cfg_v32->y_max, awb_cfg_v32->y_max);
fprintf(fp, "\t\tsw_rawawb_r_min = 0x%0x (%d)\n", awb_cfg_v32->r_min, awb_cfg_v32->r_min);
fprintf(fp, "\t\tsw_rawawb_g_min = 0x%0x (%d)\n", awb_cfg_v32->g_min, awb_cfg_v32->g_min);
fprintf(fp, "\t\tsw_rawawb_b_min = 0x%0x (%d)\n", awb_cfg_v32->b_min, awb_cfg_v32->b_min);
fprintf(fp, "\t\tsw_rawawb_y_min = 0x%0x (%d)\n", awb_cfg_v32->y_min, awb_cfg_v32->y_min);
fprintf(fp, "\t\tsw_rawawb_wp_luma_wei_en0 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_wei_en0, awb_cfg_v32->wp_luma_wei_en0);
fprintf(fp, "\t\tsw_rawawb_wp_luma_wei_en1 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_wei_en1, awb_cfg_v32->wp_luma_wei_en1);
fprintf(fp, "\t\tsw_rawawb_wp_blk_wei_en0 = 0x%0x (%d)\n", awb_cfg_v32->wp_blk_wei_en0, awb_cfg_v32->wp_blk_wei_en0);
fprintf(fp, "\t\tsw_rawawb_wp_blk_wei_en1 = 0x%0x (%d)\n", awb_cfg_v32->wp_blk_wei_en1, awb_cfg_v32->wp_blk_wei_en1);
fprintf(fp, "\t\tsw_rawawb_wp_hist_xytype = 0x%0x (%d)\n", awb_cfg_v32->wp_hist_xytype, awb_cfg_v32->wp_hist_xytype);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y0 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_y0, awb_cfg_v32->wp_luma_weicurve_y0);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y1 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_y1, awb_cfg_v32->wp_luma_weicurve_y1);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y2 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_y2, awb_cfg_v32->wp_luma_weicurve_y2);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y3 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_y3, awb_cfg_v32->wp_luma_weicurve_y3);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y4 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_y4, awb_cfg_v32->wp_luma_weicurve_y4);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y5 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_y5, awb_cfg_v32->wp_luma_weicurve_y5);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y6 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_y6, awb_cfg_v32->wp_luma_weicurve_y6);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y7 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_y7, awb_cfg_v32->wp_luma_weicurve_y7);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y8 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_y8, awb_cfg_v32->wp_luma_weicurve_y8);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w0 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_w0, awb_cfg_v32->wp_luma_weicurve_w0);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w1 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_w1, awb_cfg_v32->wp_luma_weicurve_w1);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w2 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_w2, awb_cfg_v32->wp_luma_weicurve_w2);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w3 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_w3, awb_cfg_v32->wp_luma_weicurve_w3);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w4 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_w4, awb_cfg_v32->wp_luma_weicurve_w4);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w5 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_w5, awb_cfg_v32->wp_luma_weicurve_w5);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w6 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_w6, awb_cfg_v32->wp_luma_weicurve_w6);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w7 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_w7, awb_cfg_v32->wp_luma_weicurve_w7);
fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w8 = 0x%0x (%d)\n", awb_cfg_v32->wp_luma_weicurve_w8, awb_cfg_v32->wp_luma_weicurve_w8);
fprintf(fp, "\t\tsw_rawawb_pre_wbgain_inv_r = 0x%0x (%d)\n", awb_cfg_v32->pre_wbgain_inv_r, awb_cfg_v32->pre_wbgain_inv_r);
fprintf(fp, "\t\tsw_rawawb_pre_wbgain_inv_g = 0x%0x (%d)\n", awb_cfg_v32->pre_wbgain_inv_g, awb_cfg_v32->pre_wbgain_inv_g);
fprintf(fp, "\t\tsw_rawawb_pre_wbgain_inv_b = 0x%0x (%d)\n", awb_cfg_v32->pre_wbgain_inv_b, awb_cfg_v32->pre_wbgain_inv_b);
fprintf(fp, "\t\tsw_rawawb_vertex0_u_0 = 0x%0x (%d)\n", awb_cfg_v32->vertex0_u_0, awb_cfg_v32->vertex0_u_0);
fprintf(fp, "\t\tsw_rawawb_vertex0_v_0 = 0x%0x (%d)\n", awb_cfg_v32->vertex0_v_0, awb_cfg_v32->vertex0_v_0);
fprintf(fp, "\t\tsw_rawawb_vertex1_u_0 = 0x%0x (%d)\n", awb_cfg_v32->vertex1_u_0, awb_cfg_v32->vertex1_u_0);
fprintf(fp, "\t\tsw_rawawb_vertex1_v_0 = 0x%0x (%d)\n", awb_cfg_v32->vertex1_v_0, awb_cfg_v32->vertex1_v_0);
fprintf(fp, "\t\tsw_rawawb_vertex2_u_0 = 0x%0x (%d)\n", awb_cfg_v32->vertex2_u_0, awb_cfg_v32->vertex2_u_0);
fprintf(fp, "\t\tsw_rawawb_vertex2_v_0 = 0x%0x (%d)\n", awb_cfg_v32->vertex2_v_0, awb_cfg_v32->vertex2_v_0);
fprintf(fp, "\t\tsw_rawawb_vertex3_u_0 = 0x%0x (%d)\n", awb_cfg_v32->vertex3_u_0, awb_cfg_v32->vertex3_u_0);
fprintf(fp, "\t\tsw_rawawb_vertex3_v_0 = 0x%0x (%d)\n", awb_cfg_v32->vertex3_v_0, awb_cfg_v32->vertex3_v_0);
fprintf(fp, "\t\tsw_rawawb_islope01_0 = 0x%0x (%d)\n", awb_cfg_v32->islope01_0, awb_cfg_v32->islope01_0);
fprintf(fp, "\t\tsw_rawawb_islope12_0 = 0x%0x (%d)\n", awb_cfg_v32->islope12_0, awb_cfg_v32->islope12_0);
fprintf(fp, "\t\tsw_rawawb_islope23_0 = 0x%0x (%d)\n", awb_cfg_v32->islope23_0, awb_cfg_v32->islope23_0);
fprintf(fp, "\t\tsw_rawawb_islope30_0 = 0x%0x (%d)\n", awb_cfg_v32->islope30_0, awb_cfg_v32->islope30_0);
fprintf(fp, "\t\tsw_rawawb_vertex0_u_1 = 0x%0x (%d)\n", awb_cfg_v32->vertex0_u_1, awb_cfg_v32->vertex0_u_1);
fprintf(fp, "\t\tsw_rawawb_vertex0_v_1 = 0x%0x (%d)\n", awb_cfg_v32->vertex0_v_1, awb_cfg_v32->vertex0_v_1);
fprintf(fp, "\t\tsw_rawawb_vertex1_u_1 = 0x%0x (%d)\n", awb_cfg_v32->vertex1_u_1, awb_cfg_v32->vertex1_u_1);
fprintf(fp, "\t\tsw_rawawb_vertex1_v_1 = 0x%0x (%d)\n", awb_cfg_v32->vertex1_v_1, awb_cfg_v32->vertex1_v_1);
fprintf(fp, "\t\tsw_rawawb_vertex2_u_1 = 0x%0x (%d)\n", awb_cfg_v32->vertex2_u_1, awb_cfg_v32->vertex2_u_1);
fprintf(fp, "\t\tsw_rawawb_vertex2_v_1 = 0x%0x (%d)\n", awb_cfg_v32->vertex2_v_1, awb_cfg_v32->vertex2_v_1);
fprintf(fp, "\t\tsw_rawawb_vertex3_u_1 = 0x%0x (%d)\n", awb_cfg_v32->vertex3_u_1, awb_cfg_v32->vertex3_u_1);
fprintf(fp, "\t\tsw_rawawb_vertex3_v_1 = 0x%0x (%d)\n", awb_cfg_v32->vertex3_v_1, awb_cfg_v32->vertex3_v_1);
fprintf(fp, "\t\tsw_rawawb_islope01_1 = 0x%0x (%d)\n", awb_cfg_v32->islope01_1, awb_cfg_v32->islope01_1);
fprintf(fp, "\t\tsw_rawawb_islope12_1 = 0x%0x (%d)\n", awb_cfg_v32->islope12_1, awb_cfg_v32->islope12_1);
fprintf(fp, "\t\tsw_rawawb_islope23_1 = 0x%0x (%d)\n", awb_cfg_v32->islope23_1, awb_cfg_v32->islope23_1);
fprintf(fp, "\t\tsw_rawawb_islope30_1 = 0x%0x (%d)\n", awb_cfg_v32->islope30_1, awb_cfg_v32->islope30_1);
fprintf(fp, "\t\tsw_rawawb_vertex0_u_2 = 0x%0x (%d)\n", awb_cfg_v32->vertex0_u_2, awb_cfg_v32->vertex0_u_2);
fprintf(fp, "\t\tsw_rawawb_vertex0_v_2 = 0x%0x (%d)\n", awb_cfg_v32->vertex0_v_2, awb_cfg_v32->vertex0_v_2);
fprintf(fp, "\t\tsw_rawawb_vertex1_u_2 = 0x%0x (%d)\n", awb_cfg_v32->vertex1_u_2, awb_cfg_v32->vertex1_u_2);
fprintf(fp, "\t\tsw_rawawb_vertex1_v_2 = 0x%0x (%d)\n", awb_cfg_v32->vertex1_v_2, awb_cfg_v32->vertex1_v_2);
fprintf(fp, "\t\tsw_rawawb_vertex2_u_2 = 0x%0x (%d)\n", awb_cfg_v32->vertex2_u_2, awb_cfg_v32->vertex2_u_2);
fprintf(fp, "\t\tsw_rawawb_vertex2_v_2 = 0x%0x (%d)\n", awb_cfg_v32->vertex2_v_2, awb_cfg_v32->vertex2_v_2);
fprintf(fp, "\t\tsw_rawawb_vertex3_u_2 = 0x%0x (%d)\n", awb_cfg_v32->vertex3_u_2, awb_cfg_v32->vertex3_u_2);
fprintf(fp, "\t\tsw_rawawb_vertex3_v_2 = 0x%0x (%d)\n", awb_cfg_v32->vertex3_v_2, awb_cfg_v32->vertex3_v_2);
fprintf(fp, "\t\tsw_rawawb_islope01_2 = 0x%0x (%d)\n", awb_cfg_v32->islope01_2, awb_cfg_v32->islope01_2);
fprintf(fp, "\t\tsw_rawawb_islope12_2 = 0x%0x (%d)\n", awb_cfg_v32->islope12_2, awb_cfg_v32->islope12_2);
fprintf(fp, "\t\tsw_rawawb_islope23_2 = 0x%0x (%d)\n", awb_cfg_v32->islope23_2, awb_cfg_v32->islope23_2);
fprintf(fp, "\t\tsw_rawawb_islope30_2 = 0x%0x (%d)\n", awb_cfg_v32->islope30_2, awb_cfg_v32->islope30_2);
fprintf(fp, "\t\tsw_rawawb_vertex0_u_3 = 0x%0x (%d)\n", awb_cfg_v32->vertex0_u_3, awb_cfg_v32->vertex0_u_3);
fprintf(fp, "\t\tsw_rawawb_vertex0_v_3 = 0x%0x (%d)\n", awb_cfg_v32->vertex0_v_3, awb_cfg_v32->vertex0_v_3);
fprintf(fp, "\t\tsw_rawawb_vertex1_u_3 = 0x%0x (%d)\n", awb_cfg_v32->vertex1_u_3, awb_cfg_v32->vertex1_u_3);
fprintf(fp, "\t\tsw_rawawb_vertex1_v_3 = 0x%0x (%d)\n", awb_cfg_v32->vertex1_v_3, awb_cfg_v32->vertex1_v_3);
fprintf(fp, "\t\tsw_rawawb_vertex2_u_3 = 0x%0x (%d)\n", awb_cfg_v32->vertex2_u_3, awb_cfg_v32->vertex2_u_3);
fprintf(fp, "\t\tsw_rawawb_vertex2_v_3 = 0x%0x (%d)\n", awb_cfg_v32->vertex2_v_3, awb_cfg_v32->vertex2_v_3);
fprintf(fp, "\t\tsw_rawawb_vertex3_u_3 = 0x%0x (%d)\n", awb_cfg_v32->vertex3_u_3, awb_cfg_v32->vertex3_u_3);
fprintf(fp, "\t\tsw_rawawb_vertex3_v_3 = 0x%0x (%d)\n", awb_cfg_v32->vertex3_v_3, awb_cfg_v32->vertex3_v_3);
fprintf(fp, "\t\tsw_rawawb_islope01_3 = 0x%0x (%d)\n", awb_cfg_v32->islope01_3, awb_cfg_v32->islope01_3);
fprintf(fp, "\t\tsw_rawawb_islope12_3 = 0x%0x (%d)\n", awb_cfg_v32->islope12_3, awb_cfg_v32->islope12_3);
fprintf(fp, "\t\tsw_rawawb_islope23_3 = 0x%0x (%d)\n", awb_cfg_v32->islope23_3, awb_cfg_v32->islope23_3);
fprintf(fp, "\t\tsw_rawawb_islope30_3 = 0x%0x (%d)\n", awb_cfg_v32->islope30_3, awb_cfg_v32->islope30_3);
fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat0_y = 0x%0x (%d)\n", awb_cfg_v32->rgb2ryuvmat0_y, awb_cfg_v32->rgb2ryuvmat0_y);
fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat1_y = 0x%0x (%d)\n", awb_cfg_v32->rgb2ryuvmat1_y, awb_cfg_v32->rgb2ryuvmat1_y);
fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat2_y = 0x%0x (%d)\n", awb_cfg_v32->rgb2ryuvmat2_y, awb_cfg_v32->rgb2ryuvmat2_y);
fprintf(fp, "\t\tsw_rawawb_rgb2ryuvofs_y = 0x%0x (%d)\n", awb_cfg_v32->rgb2ryuvofs_y, awb_cfg_v32->rgb2ryuvofs_y);
fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat0_u = 0x%0x (%d)\n", awb_cfg_v32->rgb2ryuvmat0_u, awb_cfg_v32->rgb2ryuvmat0_u);
fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat1_u = 0x%0x (%d)\n", awb_cfg_v32->rgb2ryuvmat1_u, awb_cfg_v32->rgb2ryuvmat1_u);
fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat2_u = 0x%0x (%d)\n", awb_cfg_v32->rgb2ryuvmat2_u, awb_cfg_v32->rgb2ryuvmat2_u);
fprintf(fp, "\t\tsw_rawawb_rgb2ryuvofs_u = 0x%0x (%d)\n", awb_cfg_v32->rgb2ryuvofs_u, awb_cfg_v32->rgb2ryuvofs_u);
fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat0_v = 0x%0x (%d)\n", awb_cfg_v32->rgb2ryuvmat0_v, awb_cfg_v32->rgb2ryuvmat0_v);
fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat1_v = 0x%0x (%d)\n", awb_cfg_v32->rgb2ryuvmat1_v, awb_cfg_v32->rgb2ryuvmat1_v);
fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat2_v = 0x%0x (%d)\n", awb_cfg_v32->rgb2ryuvmat2_v, awb_cfg_v32->rgb2ryuvmat2_v);
fprintf(fp, "\t\tsw_rawawb_rgb2ryuvofs_v = 0x%0x (%d)\n", awb_cfg_v32->rgb2ryuvofs_v, awb_cfg_v32->rgb2ryuvofs_v);
fprintf(fp, "\t\tsw_rawawb_coor_x1_ls0_y = 0x%0x (%d)\n", awb_cfg_v32->coor_x1_ls0_y, awb_cfg_v32->coor_x1_ls0_y);
fprintf(fp, "\t\tsw_rawawb_vec_x21_ls0_y = 0x%0x (%d)\n", awb_cfg_v32->vec_x21_ls0_y, awb_cfg_v32->vec_x21_ls0_y);
fprintf(fp, "\t\tsw_rawawb_coor_x1_ls0_u = 0x%0x (%d)\n", awb_cfg_v32->coor_x1_ls0_u, awb_cfg_v32->coor_x1_ls0_u);
fprintf(fp, "\t\tsw_rawawb_vec_x21_ls0_u = 0x%0x (%d)\n", awb_cfg_v32->vec_x21_ls0_u, awb_cfg_v32->vec_x21_ls0_u);
fprintf(fp, "\t\tsw_rawawb_coor_x1_ls0_v = 0x%0x (%d)\n", awb_cfg_v32->coor_x1_ls0_v, awb_cfg_v32->coor_x1_ls0_v);
fprintf(fp, "\t\tsw_rawawb_vec_x21_ls0_v = 0x%0x (%d)\n", awb_cfg_v32->vec_x21_ls0_v, awb_cfg_v32->vec_x21_ls0_v);
fprintf(fp, "\t\tsw_rawawb_dis_x1x2_ls0 = 0x%0x (%d)\n", awb_cfg_v32->dis_x1x2_ls0, awb_cfg_v32->dis_x1x2_ls0);
fprintf(fp, "\t\tsw_rawawb_rotu0_ls0 = 0x%0x (%d)\n", awb_cfg_v32->rotu0_ls0, awb_cfg_v32->rotu0_ls0);
fprintf(fp, "\t\tsw_rawawb_rotu1_ls0 = 0x%0x (%d)\n", awb_cfg_v32->rotu1_ls0, awb_cfg_v32->rotu1_ls0);
fprintf(fp, "\t\tsw_rawawb_rotu2_ls0 = 0x%0x (%d)\n", awb_cfg_v32->rotu2_ls0, awb_cfg_v32->rotu2_ls0);
fprintf(fp, "\t\tsw_rawawb_rotu3_ls0 = 0x%0x (%d)\n", awb_cfg_v32->rotu3_ls0, awb_cfg_v32->rotu3_ls0);
fprintf(fp, "\t\tsw_rawawb_rotu4_ls0 = 0x%0x (%d)\n", awb_cfg_v32->rotu4_ls0, awb_cfg_v32->rotu4_ls0);
fprintf(fp, "\t\tsw_rawawb_rotu5_ls0 = 0x%0x (%d)\n", awb_cfg_v32->rotu5_ls0, awb_cfg_v32->rotu5_ls0);
fprintf(fp, "\t\tsw_rawawb_th0_ls0 = 0x%0x (%d)\n", awb_cfg_v32->th0_ls0, awb_cfg_v32->th0_ls0);
fprintf(fp, "\t\tsw_rawawb_th1_ls0 = 0x%0x (%d)\n", awb_cfg_v32->th1_ls0, awb_cfg_v32->th1_ls0);
fprintf(fp, "\t\tsw_rawawb_th2_ls0 = 0x%0x (%d)\n", awb_cfg_v32->th2_ls0, awb_cfg_v32->th2_ls0);
fprintf(fp, "\t\tsw_rawawb_th3_ls0 = 0x%0x (%d)\n", awb_cfg_v32->th3_ls0, awb_cfg_v32->th3_ls0);
fprintf(fp, "\t\tsw_rawawb_th4_ls0 = 0x%0x (%d)\n", awb_cfg_v32->th4_ls0, awb_cfg_v32->th4_ls0);
fprintf(fp, "\t\tsw_rawawb_th5_ls0 = 0x%0x (%d)\n", awb_cfg_v32->th5_ls0, awb_cfg_v32->th5_ls0);
fprintf(fp, "\t\tsw_rawawb_coor_x1_ls1_y = 0x%0x (%d)\n", awb_cfg_v32->coor_x1_ls1_y, awb_cfg_v32->coor_x1_ls1_y);
fprintf(fp, "\t\tsw_rawawb_vec_x21_ls1_y = 0x%0x (%d)\n", awb_cfg_v32->vec_x21_ls1_y, awb_cfg_v32->vec_x21_ls1_y);
fprintf(fp, "\t\tsw_rawawb_coor_x1_ls1_u = 0x%0x (%d)\n", awb_cfg_v32->coor_x1_ls1_u, awb_cfg_v32->coor_x1_ls1_u);
fprintf(fp, "\t\tsw_rawawb_vec_x21_ls1_u = 0x%0x (%d)\n", awb_cfg_v32->vec_x21_ls1_u, awb_cfg_v32->vec_x21_ls1_u);
fprintf(fp, "\t\tsw_rawawb_coor_x1_ls1_v = 0x%0x (%d)\n", awb_cfg_v32->coor_x1_ls1_v, awb_cfg_v32->coor_x1_ls1_v);
fprintf(fp, "\t\tsw_rawawb_vec_x21_ls1_v = 0x%0x (%d)\n", awb_cfg_v32->vec_x21_ls1_v, awb_cfg_v32->vec_x21_ls1_v);
fprintf(fp, "\t\tsw_rawawb_dis_x1x2_ls1 = 0x%0x (%d)\n", awb_cfg_v32->dis_x1x2_ls1, awb_cfg_v32->dis_x1x2_ls1);
fprintf(fp, "\t\tsw_rawawb_rotu0_ls1 = 0x%0x (%d)\n", awb_cfg_v32->rotu0_ls1, awb_cfg_v32->rotu0_ls1);
fprintf(fp, "\t\tsw_rawawb_rotu1_ls1 = 0x%0x (%d)\n", awb_cfg_v32->rotu1_ls1, awb_cfg_v32->rotu1_ls1);
fprintf(fp, "\t\tsw_rawawb_rotu2_ls1 = 0x%0x (%d)\n", awb_cfg_v32->rotu2_ls1, awb_cfg_v32->rotu2_ls1);
fprintf(fp, "\t\tsw_rawawb_rotu3_ls1 = 0x%0x (%d)\n", awb_cfg_v32->rotu3_ls1, awb_cfg_v32->rotu3_ls1);
fprintf(fp, "\t\tsw_rawawb_rotu4_ls1 = 0x%0x (%d)\n", awb_cfg_v32->rotu4_ls1, awb_cfg_v32->rotu4_ls1);
fprintf(fp, "\t\tsw_rawawb_rotu5_ls1 = 0x%0x (%d)\n", awb_cfg_v32->rotu5_ls1, awb_cfg_v32->rotu5_ls1);
fprintf(fp, "\t\tsw_rawawb_th0_ls1 = 0x%0x (%d)\n", awb_cfg_v32->th0_ls1, awb_cfg_v32->th0_ls1);
fprintf(fp, "\t\tsw_rawawb_th1_ls1 = 0x%0x (%d)\n", awb_cfg_v32->th1_ls1, awb_cfg_v32->th1_ls1);
fprintf(fp, "\t\tsw_rawawb_th2_ls1 = 0x%0x (%d)\n", awb_cfg_v32->th2_ls1, awb_cfg_v32->th2_ls1);
fprintf(fp, "\t\tsw_rawawb_th3_ls1 = 0x%0x (%d)\n", awb_cfg_v32->th3_ls1, awb_cfg_v32->th3_ls1);
fprintf(fp, "\t\tsw_rawawb_th4_ls1 = 0x%0x (%d)\n", awb_cfg_v32->th4_ls1, awb_cfg_v32->th4_ls1);
fprintf(fp, "\t\tsw_rawawb_th5_ls1 = 0x%0x (%d)\n", awb_cfg_v32->th5_ls1, awb_cfg_v32->th5_ls1);
fprintf(fp, "\t\tsw_rawawb_coor_x1_ls2_y = 0x%0x (%d)\n", awb_cfg_v32->coor_x1_ls2_y, awb_cfg_v32->coor_x1_ls2_y);
fprintf(fp, "\t\tsw_rawawb_vec_x21_ls2_y = 0x%0x (%d)\n", awb_cfg_v32->vec_x21_ls2_y, awb_cfg_v32->vec_x21_ls2_y);
fprintf(fp, "\t\tsw_rawawb_coor_x1_ls2_u = 0x%0x (%d)\n", awb_cfg_v32->coor_x1_ls2_u, awb_cfg_v32->coor_x1_ls2_u);
fprintf(fp, "\t\tsw_rawawb_vec_x21_ls2_u = 0x%0x (%d)\n", awb_cfg_v32->vec_x21_ls2_u, awb_cfg_v32->vec_x21_ls2_u);
fprintf(fp, "\t\tsw_rawawb_coor_x1_ls2_v = 0x%0x (%d)\n", awb_cfg_v32->coor_x1_ls2_v, awb_cfg_v32->coor_x1_ls2_v);
fprintf(fp, "\t\tsw_rawawb_vec_x21_ls2_v = 0x%0x (%d)\n", awb_cfg_v32->vec_x21_ls2_v, awb_cfg_v32->vec_x21_ls2_v);
fprintf(fp, "\t\tsw_rawawb_dis_x1x2_ls2 = 0x%0x (%d)\n", awb_cfg_v32->dis_x1x2_ls2, awb_cfg_v32->dis_x1x2_ls2);
fprintf(fp, "\t\tsw_rawawb_rotu0_ls2 = 0x%0x (%d)\n", awb_cfg_v32->rotu0_ls2, awb_cfg_v32->rotu0_ls2);
fprintf(fp, "\t\tsw_rawawb_rotu1_ls2 = 0x%0x (%d)\n", awb_cfg_v32->rotu1_ls2, awb_cfg_v32->rotu1_ls2);
fprintf(fp, "\t\tsw_rawawb_rotu2_ls2 = 0x%0x (%d)\n", awb_cfg_v32->rotu2_ls2, awb_cfg_v32->rotu2_ls2);
fprintf(fp, "\t\tsw_rawawb_rotu3_ls2 = 0x%0x (%d)\n", awb_cfg_v32->rotu3_ls2, awb_cfg_v32->rotu3_ls2);
fprintf(fp, "\t\tsw_rawawb_rotu4_ls2 = 0x%0x (%d)\n", awb_cfg_v32->rotu4_ls2, awb_cfg_v32->rotu4_ls2);
fprintf(fp, "\t\tsw_rawawb_rotu5_ls2 = 0x%0x (%d)\n", awb_cfg_v32->rotu5_ls2, awb_cfg_v32->rotu5_ls2);
fprintf(fp, "\t\tsw_rawawb_th0_ls2 = 0x%0x (%d)\n", awb_cfg_v32->th0_ls2, awb_cfg_v32->th0_ls2);
fprintf(fp, "\t\tsw_rawawb_th1_ls2 = 0x%0x (%d)\n", awb_cfg_v32->th1_ls2, awb_cfg_v32->th1_ls2);
fprintf(fp, "\t\tsw_rawawb_th2_ls2 = 0x%0x (%d)\n", awb_cfg_v32->th2_ls2, awb_cfg_v32->th2_ls2);
fprintf(fp, "\t\tsw_rawawb_th3_ls2 = 0x%0x (%d)\n", awb_cfg_v32->th3_ls2, awb_cfg_v32->th3_ls2);
fprintf(fp, "\t\tsw_rawawb_th4_ls2 = 0x%0x (%d)\n", awb_cfg_v32->th4_ls2, awb_cfg_v32->th4_ls2);
fprintf(fp, "\t\tsw_rawawb_th5_ls2 = 0x%0x (%d)\n", awb_cfg_v32->th5_ls2, awb_cfg_v32->th5_ls2);
fprintf(fp, "\t\tsw_rawawb_coor_x1_ls3_y = 0x%0x (%d)\n", awb_cfg_v32->coor_x1_ls3_y, awb_cfg_v32->coor_x1_ls3_y);
fprintf(fp, "\t\tsw_rawawb_vec_x21_ls3_y = 0x%0x (%d)\n", awb_cfg_v32->vec_x21_ls3_y, awb_cfg_v32->vec_x21_ls3_y);
fprintf(fp, "\t\tsw_rawawb_coor_x1_ls3_u = 0x%0x (%d)\n", awb_cfg_v32->coor_x1_ls3_u, awb_cfg_v32->coor_x1_ls3_u);
fprintf(fp, "\t\tsw_rawawb_vec_x21_ls3_u = 0x%0x (%d)\n", awb_cfg_v32->vec_x21_ls3_u, awb_cfg_v32->vec_x21_ls3_u);
fprintf(fp, "\t\tsw_rawawb_coor_x1_ls3_v = 0x%0x (%d)\n", awb_cfg_v32->coor_x1_ls3_v, awb_cfg_v32->coor_x1_ls3_v);
fprintf(fp, "\t\tsw_rawawb_vec_x21_ls3_v = 0x%0x (%d)\n", awb_cfg_v32->vec_x21_ls3_v, awb_cfg_v32->vec_x21_ls3_v);
fprintf(fp, "\t\tsw_rawawb_dis_x1x2_ls3 = 0x%0x (%d)\n", awb_cfg_v32->dis_x1x2_ls3, awb_cfg_v32->dis_x1x2_ls3);
fprintf(fp, "\t\tsw_rawawb_rotu0_ls3 = 0x%0x (%d)\n", awb_cfg_v32->rotu0_ls3, awb_cfg_v32->rotu0_ls3);
fprintf(fp, "\t\tsw_rawawb_rotu1_ls3 = 0x%0x (%d)\n", awb_cfg_v32->rotu1_ls3, awb_cfg_v32->rotu1_ls3);
fprintf(fp, "\t\tsw_rawawb_rotu2_ls3 = 0x%0x (%d)\n", awb_cfg_v32->rotu2_ls3, awb_cfg_v32->rotu2_ls3);
fprintf(fp, "\t\tsw_rawawb_rotu3_ls3 = 0x%0x (%d)\n", awb_cfg_v32->rotu3_ls3, awb_cfg_v32->rotu3_ls3);
fprintf(fp, "\t\tsw_rawawb_rotu4_ls3 = 0x%0x (%d)\n", awb_cfg_v32->rotu4_ls3, awb_cfg_v32->rotu4_ls3);
fprintf(fp, "\t\tsw_rawawb_rotu5_ls3 = 0x%0x (%d)\n", awb_cfg_v32->rotu5_ls3, awb_cfg_v32->rotu5_ls3);
fprintf(fp, "\t\tsw_rawawb_th0_ls3 = 0x%0x (%d)\n", awb_cfg_v32->th0_ls3, awb_cfg_v32->th0_ls3);
fprintf(fp, "\t\tsw_rawawb_th1_ls3 = 0x%0x (%d)\n", awb_cfg_v32->th1_ls3, awb_cfg_v32->th1_ls3);
fprintf(fp, "\t\tsw_rawawb_th2_ls3 = 0x%0x (%d)\n", awb_cfg_v32->th2_ls3, awb_cfg_v32->th2_ls3);
fprintf(fp, "\t\tsw_rawawb_th3_ls3 = 0x%0x (%d)\n", awb_cfg_v32->th3_ls3, awb_cfg_v32->th3_ls3);
fprintf(fp, "\t\tsw_rawawb_th4_ls3 = 0x%0x (%d)\n", awb_cfg_v32->th4_ls3, awb_cfg_v32->th4_ls3);
fprintf(fp, "\t\tsw_rawawb_th5_ls3 = 0x%0x (%d)\n", awb_cfg_v32->th5_ls3, awb_cfg_v32->th5_ls3);
fprintf(fp, "\t\tsw_rawawb_wt0 = 0x%0x (%d)\n", awb_cfg_v32->wt0, awb_cfg_v32->wt0);
fprintf(fp, "\t\tsw_rawawb_wt1 = 0x%0x (%d)\n", awb_cfg_v32->wt1, awb_cfg_v32->wt1);
fprintf(fp, "\t\tsw_rawawb_wt2 = 0x%0x (%d)\n", awb_cfg_v32->wt2, awb_cfg_v32->wt2);
fprintf(fp, "\t\tsw_rawawb_mat0_x = 0x%0x (%d)\n", awb_cfg_v32->mat0_x, awb_cfg_v32->mat0_x);
fprintf(fp, "\t\tsw_rawawb_mat0_y = 0x%0x (%d)\n", awb_cfg_v32->mat0_y, awb_cfg_v32->mat0_y);
fprintf(fp, "\t\tsw_rawawb_mat1_x = 0x%0x (%d)\n", awb_cfg_v32->mat1_x, awb_cfg_v32->mat1_x);
fprintf(fp, "\t\tsw_rawawb_mat1_y = 0x%0x (%d)\n", awb_cfg_v32->mat1_y, awb_cfg_v32->mat1_y);
fprintf(fp, "\t\tsw_rawawb_mat2_x = 0x%0x (%d)\n", awb_cfg_v32->mat2_x, awb_cfg_v32->mat2_x);
fprintf(fp, "\t\tsw_rawawb_mat2_y = 0x%0x (%d)\n", awb_cfg_v32->mat2_y, awb_cfg_v32->mat2_y);
fprintf(fp, "\t\tsw_rawawb_nor_x0_0 = 0x%0x (%d)\n", awb_cfg_v32->nor_x0_0, awb_cfg_v32->nor_x0_0);
fprintf(fp, "\t\tsw_rawawb_nor_x1_0 = 0x%0x (%d)\n", awb_cfg_v32->nor_x1_0, awb_cfg_v32->nor_x1_0);
fprintf(fp, "\t\tsw_rawawb_nor_y0_0 = 0x%0x (%d)\n", awb_cfg_v32->nor_y0_0, awb_cfg_v32->nor_y0_0);
fprintf(fp, "\t\tsw_rawawb_nor_y1_0 = 0x%0x (%d)\n", awb_cfg_v32->nor_y1_0, awb_cfg_v32->nor_y1_0);
fprintf(fp, "\t\tsw_rawawb_big_x0_0 = 0x%0x (%d)\n", awb_cfg_v32->big_x0_0, awb_cfg_v32->big_x0_0);
fprintf(fp, "\t\tsw_rawawb_big_x1_0 = 0x%0x (%d)\n", awb_cfg_v32->big_x1_0, awb_cfg_v32->big_x1_0);
fprintf(fp, "\t\tsw_rawawb_big_y0_0 = 0x%0x (%d)\n", awb_cfg_v32->big_y0_0, awb_cfg_v32->big_y0_0);
fprintf(fp, "\t\tsw_rawawb_big_y1_0 = 0x%0x (%d)\n", awb_cfg_v32->big_y1_0, awb_cfg_v32->big_y1_0);
fprintf(fp, "\t\tsw_rawawb_nor_x0_1 = 0x%0x (%d)\n", awb_cfg_v32->nor_x0_1, awb_cfg_v32->nor_x0_1);
fprintf(fp, "\t\tsw_rawawb_nor_x1_1 = 0x%0x (%d)\n", awb_cfg_v32->nor_x1_1, awb_cfg_v32->nor_x1_1);
fprintf(fp, "\t\tsw_rawawb_nor_y0_1 = 0x%0x (%d)\n", awb_cfg_v32->nor_y0_1, awb_cfg_v32->nor_y0_1);
fprintf(fp, "\t\tsw_rawawb_nor_y1_1 = 0x%0x (%d)\n", awb_cfg_v32->nor_y1_1, awb_cfg_v32->nor_y1_1);
fprintf(fp, "\t\tsw_rawawb_big_x0_1 = 0x%0x (%d)\n", awb_cfg_v32->big_x0_1, awb_cfg_v32->big_x0_1);
fprintf(fp, "\t\tsw_rawawb_big_x1_1 = 0x%0x (%d)\n", awb_cfg_v32->big_x1_1, awb_cfg_v32->big_x1_1);
fprintf(fp, "\t\tsw_rawawb_big_y0_1 = 0x%0x (%d)\n", awb_cfg_v32->big_y0_1, awb_cfg_v32->big_y0_1);
fprintf(fp, "\t\tsw_rawawb_big_y1_1 = 0x%0x (%d)\n", awb_cfg_v32->big_y1_1, awb_cfg_v32->big_y1_1);
fprintf(fp, "\t\tsw_rawawb_nor_x0_2 = 0x%0x (%d)\n", awb_cfg_v32->nor_x0_2, awb_cfg_v32->nor_x0_2);
fprintf(fp, "\t\tsw_rawawb_nor_x1_2 = 0x%0x (%d)\n", awb_cfg_v32->nor_x1_2, awb_cfg_v32->nor_x1_2);
fprintf(fp, "\t\tsw_rawawb_nor_y0_2 = 0x%0x (%d)\n", awb_cfg_v32->nor_y0_2, awb_cfg_v32->nor_y0_2);
fprintf(fp, "\t\tsw_rawawb_nor_y1_2 = 0x%0x (%d)\n", awb_cfg_v32->nor_y1_2, awb_cfg_v32->nor_y1_2);
fprintf(fp, "\t\tsw_rawawb_big_x0_2 = 0x%0x (%d)\n", awb_cfg_v32->big_x0_2, awb_cfg_v32->big_x0_2);
fprintf(fp, "\t\tsw_rawawb_big_x1_2 = 0x%0x (%d)\n", awb_cfg_v32->big_x1_2, awb_cfg_v32->big_x1_2);
fprintf(fp, "\t\tsw_rawawb_big_y0_2 = 0x%0x (%d)\n", awb_cfg_v32->big_y0_2, awb_cfg_v32->big_y0_2);
fprintf(fp, "\t\tsw_rawawb_big_y1_2 = 0x%0x (%d)\n", awb_cfg_v32->big_y1_2, awb_cfg_v32->big_y1_2);
fprintf(fp, "\t\tsw_rawawb_nor_x0_3 = 0x%0x (%d)\n", awb_cfg_v32->nor_x0_3, awb_cfg_v32->nor_x0_3);
fprintf(fp, "\t\tsw_rawawb_nor_x1_3 = 0x%0x (%d)\n", awb_cfg_v32->nor_x1_3, awb_cfg_v32->nor_x1_3);
fprintf(fp, "\t\tsw_rawawb_nor_y0_3 = 0x%0x (%d)\n", awb_cfg_v32->nor_y0_3, awb_cfg_v32->nor_y0_3);
fprintf(fp, "\t\tsw_rawawb_nor_y1_3 = 0x%0x (%d)\n", awb_cfg_v32->nor_y1_3, awb_cfg_v32->nor_y1_3);
fprintf(fp, "\t\tsw_rawawb_big_x0_3 = 0x%0x (%d)\n", awb_cfg_v32->big_x0_3, awb_cfg_v32->big_x0_3);
fprintf(fp, "\t\tsw_rawawb_big_x1_3 = 0x%0x (%d)\n", awb_cfg_v32->big_x1_3, awb_cfg_v32->big_x1_3);
fprintf(fp, "\t\tsw_rawawb_big_y0_3 = 0x%0x (%d)\n", awb_cfg_v32->big_y0_3, awb_cfg_v32->big_y0_3);
fprintf(fp, "\t\tsw_rawawb_big_y1_3 = 0x%0x (%d)\n", awb_cfg_v32->big_y1_3, awb_cfg_v32->big_y1_3);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_excen = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region0_excen, awb_cfg_v32->exc_wp_region0_excen);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_measen = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region0_measen, awb_cfg_v32->exc_wp_region0_measen);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_domain = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region0_domain, awb_cfg_v32->exc_wp_region0_domain);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_excen = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region1_excen, awb_cfg_v32->exc_wp_region1_excen);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_measen = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region1_measen, awb_cfg_v32->exc_wp_region1_measen);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_domain = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region1_domain, awb_cfg_v32->exc_wp_region1_domain);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_excen = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region2_excen, awb_cfg_v32->exc_wp_region2_excen);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_measen = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region2_measen, awb_cfg_v32->exc_wp_region2_measen);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_domain = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region2_domain, awb_cfg_v32->exc_wp_region2_domain);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_excen = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region3_excen, awb_cfg_v32->exc_wp_region3_excen);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_measen = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region3_measen, awb_cfg_v32->exc_wp_region3_measen);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_domain = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region3_domain, awb_cfg_v32->exc_wp_region3_domain);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region4_excen = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region4_excen, awb_cfg_v32->exc_wp_region4_excen);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region4_domain = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region4_domain, awb_cfg_v32->exc_wp_region4_domain);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region5_excen = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region5_excen, awb_cfg_v32->exc_wp_region5_excen);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region5_domain = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region5_domain, awb_cfg_v32->exc_wp_region5_domain);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region6_excen = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region6_excen, awb_cfg_v32->exc_wp_region6_excen);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region6_domain = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region6_domain, awb_cfg_v32->exc_wp_region6_domain);
fprintf(fp, "\t\tsw_rawawb_multiwindow_en = 0x%0x (%d)\n", awb_cfg_v32->multiwindow_en, awb_cfg_v32->multiwindow_en);
fprintf(fp, "\t\tsw_rawawb_multiwindow0_h_offs = 0x%0x (%d)\n", awb_cfg_v32->multiwindow0_h_offs, awb_cfg_v32->multiwindow0_h_offs);
fprintf(fp, "\t\tsw_rawawb_multiwindow0_v_offs = 0x%0x (%d)\n", awb_cfg_v32->multiwindow0_v_offs, awb_cfg_v32->multiwindow0_v_offs);
fprintf(fp, "\t\tsw_rawawb_multiwindow0_h_size = 0x%0x (%d)\n", awb_cfg_v32->multiwindow0_h_size, awb_cfg_v32->multiwindow0_h_size);
fprintf(fp, "\t\tsw_rawawb_multiwindow1_v_size = 0x%0x (%d)\n", awb_cfg_v32->multiwindow1_v_size, awb_cfg_v32->multiwindow1_v_size);
fprintf(fp, "\t\tsw_rawawb_multiwindow1_h_offs = 0x%0x (%d)\n", awb_cfg_v32->multiwindow1_h_offs, awb_cfg_v32->multiwindow1_h_offs);
fprintf(fp, "\t\tsw_rawawb_multiwindow1_v_offs = 0x%0x (%d)\n", awb_cfg_v32->multiwindow1_v_offs, awb_cfg_v32->multiwindow1_v_offs);
fprintf(fp, "\t\tsw_rawawb_multiwindow1_h_size = 0x%0x (%d)\n", awb_cfg_v32->multiwindow1_h_size, awb_cfg_v32->multiwindow1_h_size);
fprintf(fp, "\t\tsw_rawawb_multiwindow1_v_size = 0x%0x (%d)\n", awb_cfg_v32->multiwindow1_v_size, awb_cfg_v32->multiwindow1_v_size);
fprintf(fp, "\t\tsw_rawawb_multiwindow2_h_offs = 0x%0x (%d)\n", awb_cfg_v32->multiwindow2_h_offs, awb_cfg_v32->multiwindow2_h_offs);
fprintf(fp, "\t\tsw_rawawb_multiwindow2_v_offs = 0x%0x (%d)\n", awb_cfg_v32->multiwindow2_v_offs, awb_cfg_v32->multiwindow2_v_offs);
fprintf(fp, "\t\tsw_rawawb_multiwindow2_h_size = 0x%0x (%d)\n", awb_cfg_v32->multiwindow2_h_size, awb_cfg_v32->multiwindow2_h_size);
fprintf(fp, "\t\tsw_rawawb_multiwindow2_v_size = 0x%0x (%d)\n", awb_cfg_v32->multiwindow2_v_size, awb_cfg_v32->multiwindow2_v_size);
fprintf(fp, "\t\tsw_rawawb_multiwindow3_h_offs = 0x%0x (%d)\n", awb_cfg_v32->multiwindow3_h_offs, awb_cfg_v32->multiwindow3_h_offs);
fprintf(fp, "\t\tsw_rawawb_multiwindow3_v_offs = 0x%0x (%d)\n", awb_cfg_v32->multiwindow3_v_offs, awb_cfg_v32->multiwindow3_v_offs);
fprintf(fp, "\t\tsw_rawawb_multiwindow3_h_size = 0x%0x (%d)\n", awb_cfg_v32->multiwindow3_h_size, awb_cfg_v32->multiwindow3_h_size);
fprintf(fp, "\t\tsw_rawawb_multiwindow3_v_size = 0x%0x (%d)\n", awb_cfg_v32->multiwindow3_v_size, awb_cfg_v32->multiwindow3_v_size);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_xu0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region0_xu0, awb_cfg_v32->exc_wp_region0_xu0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_xu1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region0_xu1, awb_cfg_v32->exc_wp_region0_xu1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_yv0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region0_yv0, awb_cfg_v32->exc_wp_region0_yv0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_yv1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region0_yv1, awb_cfg_v32->exc_wp_region0_yv1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_xu0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region1_xu0, awb_cfg_v32->exc_wp_region1_xu0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_xu1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region1_xu1, awb_cfg_v32->exc_wp_region1_xu1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_yv0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region1_yv0, awb_cfg_v32->exc_wp_region1_yv0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_yv1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region1_yv1, awb_cfg_v32->exc_wp_region1_yv1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_xu0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region2_xu0, awb_cfg_v32->exc_wp_region2_xu0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_xu1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region2_xu1, awb_cfg_v32->exc_wp_region2_xu1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_yv0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region2_yv0, awb_cfg_v32->exc_wp_region2_yv0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_yv1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region2_yv1, awb_cfg_v32->exc_wp_region2_yv1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_xu0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region3_xu0, awb_cfg_v32->exc_wp_region3_xu0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_xu1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region3_xu1, awb_cfg_v32->exc_wp_region3_xu1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_yv0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region3_yv0, awb_cfg_v32->exc_wp_region3_yv0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_yv1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region3_yv1, awb_cfg_v32->exc_wp_region3_yv1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region4_xu0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region4_xu0, awb_cfg_v32->exc_wp_region4_xu0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region4_xu1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region4_xu1, awb_cfg_v32->exc_wp_region4_xu1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region4_yv0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region4_yv0, awb_cfg_v32->exc_wp_region4_yv0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region4_yv1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region4_yv1, awb_cfg_v32->exc_wp_region4_yv1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region5_xu0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region5_xu0, awb_cfg_v32->exc_wp_region5_xu0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region5_xu1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region5_xu1, awb_cfg_v32->exc_wp_region5_xu1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region5_yv0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region5_yv0, awb_cfg_v32->exc_wp_region5_yv0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region5_yv1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region5_yv1, awb_cfg_v32->exc_wp_region5_yv1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region6_xu0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region6_xu0, awb_cfg_v32->exc_wp_region6_xu0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region6_xu1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region6_xu1, awb_cfg_v32->exc_wp_region6_xu1);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region6_yv0 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region6_yv0, awb_cfg_v32->exc_wp_region6_yv0);
fprintf(fp, "\t\tsw_rawawb_exc_wp_region6_yv1 = 0x%0x (%d)\n", awb_cfg_v32->exc_wp_region6_yv1, awb_cfg_v32->exc_wp_region6_yv1);
fclose(fp);
#endif
}
void Isp39Params::convertAiqAwbToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
const rk_aiq_isp_awb_meas_cfg_v32_t& awb_meas,
bool awb_cfg_udpate) {
if (awb_cfg_udpate) {
if (awb_meas.awbEnable) {
isp_cfg.module_ens |= ISP2X_MODULE_RAWAWB;
isp_cfg.module_cfg_update |= ISP2X_MODULE_RAWAWB;
isp_cfg.module_en_update |= ISP2X_MODULE_RAWAWB;
}
} else {
return;
}
//to do :
//config blc2 important
//isp_cfg.module_ens |= ISP2X_MODULE_BLS;
//isp_cfg.module_cfg_update |= ISP2X_MODULE_BLS;
//isp_cfg.module_en_update |= ISP2X_MODULE_BLS;
struct isp39_rawawb_meas_cfg* awb_cfg_v32 = &isp_cfg.meas.rawawb;
awb_cfg_v32->bls2_en = awb_meas.blc.enable;
awb_cfg_v32->bls2_val.r = awb_meas.blc.blc[0];
awb_cfg_v32->bls2_val.gr = awb_meas.blc.blc[1];
awb_cfg_v32->bls2_val.gb = awb_meas.blc.blc[2];
awb_cfg_v32->bls2_val.b = awb_meas.blc.blc[3];
LOGV_AWB("blc2_cfg %d %d,%d,%d,%d", awb_cfg_v32->bls2_en, awb_cfg_v32->bls2_val.r, awb_cfg_v32->bls2_val.gr,
awb_cfg_v32->bls2_val.gb, awb_cfg_v32->bls2_val.b);
awb_cfg_v32->rawawb_sel = 0;
if (awb_meas.frameChoose == CALIB_AWB_INPUT_DRC) {
awb_cfg_v32->drc2awb_sel = 1;
//awb_cfg_v32->rawawb_sel need check
} else {
awb_cfg_v32->drc2awb_sel = 0;
if (awb_meas.frameChoose == CALIB_AWB_INPUT_BAYERNR) {
awb_cfg_v32->bnr2awb_sel = 1;
//awb_cfg_v32->rawawb_sel need check
}
else {
awb_cfg_v32->bnr2awb_sel = 0;
awb_cfg_v32->rawawb_sel = awb_meas.frameChoose;
}
}
awb_cfg_v32->low12bit_val = awb_meas.inputBitIs12Bit;
//awb_cfg_v32->ddr_path_en = awb_meas.write2ddrEnable;
//awb_cfg_v32->ddr_path_sel = awb_meas.write2ddrSelc;
awb_cfg_v32->in_rshift_to_12bit_en = awb_meas.inputShiftEnable;
awb_cfg_v32->in_overexposure_check_en = true;
awb_cfg_v32->in_overexposure_threshold = awb_meas.overexposure_value;
if(awb_cfg_v32->in_overexposure_threshold == 0) {
awb_cfg_v32->in_overexposure_check_en = false;
}
awb_cfg_v32->xy_en0 = awb_meas.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
awb_cfg_v32->uv_en0 = awb_meas.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
awb_cfg_v32->yuv3d_en0 = awb_meas.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
awb_cfg_v32->xy_en1 = awb_meas.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
awb_cfg_v32->uv_en1 = awb_meas.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
awb_cfg_v32->yuv3d_en1 = awb_meas.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
awb_cfg_v32->wp_blk_wei_en0 =
awb_meas.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
awb_cfg_v32->wp_blk_wei_en1 = awb_meas.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
awb_cfg_v32->rawlsc_bypass_en = awb_meas.lscBypEnable;
awb_cfg_v32->blk_measure_enable = awb_meas.blkStatisticsEnable;
awb_cfg_v32->blk_measure_mode = awb_meas.blkMeasureMode;
awb_cfg_v32->blk_measure_xytype = awb_meas.xyRangeTypeForBlkStatistics;
awb_cfg_v32->blk_measure_illu_idx = awb_meas.illIdxForBlkStatistics;
awb_cfg_v32->blk_with_luma_wei_en = awb_meas.blkStatisticsWithLumaWeightEn;
awb_cfg_v32->wp_luma_wei_en0 =
awb_meas.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
awb_cfg_v32->wp_luma_wei_en1 = awb_meas.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
awb_cfg_v32->wp_hist_xytype = awb_meas.xyRangeTypeForWpHist;
awb_cfg_v32->yuv3d_ls_idx0 = awb_meas.threeDyuvIllu[0];
awb_cfg_v32->yuv3d_ls_idx1 = awb_meas.threeDyuvIllu[1];
awb_cfg_v32->yuv3d_ls_idx2 = awb_meas.threeDyuvIllu[2];
awb_cfg_v32->yuv3d_ls_idx3 = awb_meas.threeDyuvIllu[3];
awb_cfg_v32->light_num = awb_meas.lightNum;
awb_cfg_v32->h_offs = awb_meas.windowSet[0];
awb_cfg_v32->v_offs = awb_meas.windowSet[1];
awb_cfg_v32->h_size = awb_meas.windowSet[2];
awb_cfg_v32->v_size = awb_meas.windowSet[3];
#if RKAIQ_HAVE_AWB_V32LT||ISP_HW_V39
if(awb_meas.dsMode == RK_AIQ_AWB_DS_4X4 || awb_meas.dsMode == RK_AIQ_AWB_DS_8X8) {
awb_cfg_v32->wind_size = awb_meas.dsMode;
awb_cfg_v32->ds16x8_mode_en = 0;
} else if(awb_meas.dsMode == RK_AIQ_AWB_DS_16X8) {
awb_cfg_v32->ds16x8_mode_en = 1;
awb_cfg_v32->wind_size = RK_AIQ_AWB_DS_8X8;
}
#else
awb_cfg_v32->wind_size = awb_meas.dsMode;
#endif
awb_cfg_v32->r_max = awb_meas.maxR;
awb_cfg_v32->g_max = awb_meas.maxG;
awb_cfg_v32->b_max = awb_meas.maxB;
awb_cfg_v32->y_max = awb_meas.maxY;
awb_cfg_v32->r_min = awb_meas.minR;
awb_cfg_v32->g_min = awb_meas.minG;
awb_cfg_v32->b_min = awb_meas.minB;
awb_cfg_v32->y_min = awb_meas.minY;
awb_cfg_v32->vertex0_u_0 = awb_meas.uvRange_param[0].pu_region[0];
awb_cfg_v32->vertex0_v_0 = awb_meas.uvRange_param[0].pv_region[0];
awb_cfg_v32->vertex1_u_0 = awb_meas.uvRange_param[0].pu_region[1];
awb_cfg_v32->vertex1_v_0 = awb_meas.uvRange_param[0].pv_region[1];
awb_cfg_v32->vertex2_u_0 = awb_meas.uvRange_param[0].pu_region[2];
awb_cfg_v32->vertex2_v_0 = awb_meas.uvRange_param[0].pv_region[2];
awb_cfg_v32->vertex3_u_0 = awb_meas.uvRange_param[0].pu_region[3];
awb_cfg_v32->vertex3_v_0 = awb_meas.uvRange_param[0].pv_region[3];
awb_cfg_v32->islope01_0 = awb_meas.uvRange_param[0].slope_inv[0];
awb_cfg_v32->islope12_0 = awb_meas.uvRange_param[0].slope_inv[1];
awb_cfg_v32->islope23_0 = awb_meas.uvRange_param[0].slope_inv[2];
awb_cfg_v32->islope30_0 = awb_meas.uvRange_param[0].slope_inv[3];
awb_cfg_v32->vertex0_u_1 = awb_meas.uvRange_param[1].pu_region[0];
awb_cfg_v32->vertex0_v_1 = awb_meas.uvRange_param[1].pv_region[0];
awb_cfg_v32->vertex1_u_1 = awb_meas.uvRange_param[1].pu_region[1];
awb_cfg_v32->vertex1_v_1 = awb_meas.uvRange_param[1].pv_region[1];
awb_cfg_v32->vertex2_u_1 = awb_meas.uvRange_param[1].pu_region[2];
awb_cfg_v32->vertex2_v_1 = awb_meas.uvRange_param[1].pv_region[2];
awb_cfg_v32->vertex3_u_1 = awb_meas.uvRange_param[1].pu_region[3];
awb_cfg_v32->vertex3_v_1 = awb_meas.uvRange_param[1].pv_region[3];
awb_cfg_v32->islope01_1 = awb_meas.uvRange_param[1].slope_inv[0];
awb_cfg_v32->islope12_1 = awb_meas.uvRange_param[1].slope_inv[1];
awb_cfg_v32->islope23_1 = awb_meas.uvRange_param[1].slope_inv[2];
awb_cfg_v32->islope30_1 = awb_meas.uvRange_param[1].slope_inv[3];
awb_cfg_v32->vertex0_u_2 = awb_meas.uvRange_param[2].pu_region[0];
awb_cfg_v32->vertex0_v_2 = awb_meas.uvRange_param[2].pv_region[0];
awb_cfg_v32->vertex1_u_2 = awb_meas.uvRange_param[2].pu_region[1];
awb_cfg_v32->vertex1_v_2 = awb_meas.uvRange_param[2].pv_region[1];
awb_cfg_v32->vertex2_u_2 = awb_meas.uvRange_param[2].pu_region[2];
awb_cfg_v32->vertex2_v_2 = awb_meas.uvRange_param[2].pv_region[2];
awb_cfg_v32->vertex3_u_2 = awb_meas.uvRange_param[2].pu_region[3];
awb_cfg_v32->vertex3_v_2 = awb_meas.uvRange_param[2].pv_region[3];
awb_cfg_v32->islope01_2 = awb_meas.uvRange_param[2].slope_inv[0];
awb_cfg_v32->islope12_2 = awb_meas.uvRange_param[2].slope_inv[1];
awb_cfg_v32->islope23_2 = awb_meas.uvRange_param[2].slope_inv[2];
awb_cfg_v32->islope30_2 = awb_meas.uvRange_param[2].slope_inv[3];
awb_cfg_v32->vertex0_u_3 = awb_meas.uvRange_param[3].pu_region[0];
awb_cfg_v32->vertex0_v_3 = awb_meas.uvRange_param[3].pv_region[0];
awb_cfg_v32->vertex1_u_3 = awb_meas.uvRange_param[3].pu_region[1];
awb_cfg_v32->vertex1_v_3 = awb_meas.uvRange_param[3].pv_region[1];
awb_cfg_v32->vertex2_u_3 = awb_meas.uvRange_param[3].pu_region[2];
awb_cfg_v32->vertex2_v_3 = awb_meas.uvRange_param[3].pv_region[2];
awb_cfg_v32->vertex3_u_3 = awb_meas.uvRange_param[3].pu_region[3];
awb_cfg_v32->vertex3_v_3 = awb_meas.uvRange_param[3].pv_region[3];
awb_cfg_v32->islope01_3 = awb_meas.uvRange_param[3].slope_inv[0];
awb_cfg_v32->islope12_3 = awb_meas.uvRange_param[3].slope_inv[1];
awb_cfg_v32->islope23_3 = awb_meas.uvRange_param[3].slope_inv[2];
awb_cfg_v32->islope30_3 = awb_meas.uvRange_param[3].slope_inv[3];
awb_cfg_v32->rgb2ryuvmat0_u = awb_meas.icrgb2RYuv_matrix[0];
awb_cfg_v32->rgb2ryuvmat1_u = awb_meas.icrgb2RYuv_matrix[1];
awb_cfg_v32->rgb2ryuvmat2_u = awb_meas.icrgb2RYuv_matrix[2];
awb_cfg_v32->rgb2ryuvofs_u = awb_meas.icrgb2RYuv_matrix[3];
awb_cfg_v32->rgb2ryuvmat0_v = awb_meas.icrgb2RYuv_matrix[4];
awb_cfg_v32->rgb2ryuvmat1_v = awb_meas.icrgb2RYuv_matrix[5];
awb_cfg_v32->rgb2ryuvmat2_v = awb_meas.icrgb2RYuv_matrix[6];
awb_cfg_v32->rgb2ryuvofs_v = awb_meas.icrgb2RYuv_matrix[7];
awb_cfg_v32->rgb2ryuvmat0_y = awb_meas.icrgb2RYuv_matrix[8];
awb_cfg_v32->rgb2ryuvmat1_y = awb_meas.icrgb2RYuv_matrix[9];
awb_cfg_v32->rgb2ryuvmat2_y = awb_meas.icrgb2RYuv_matrix[10];
awb_cfg_v32->rgb2ryuvofs_y = awb_meas.icrgb2RYuv_matrix[11];
awb_cfg_v32->rotu0_ls0 = awb_meas.ic3Dyuv2Range_param[0].thcurve_u[0];
awb_cfg_v32->rotu1_ls0 = awb_meas.ic3Dyuv2Range_param[0].thcurve_u[1];
awb_cfg_v32->rotu2_ls0 = awb_meas.ic3Dyuv2Range_param[0].thcurve_u[2];
awb_cfg_v32->rotu3_ls0 = awb_meas.ic3Dyuv2Range_param[0].thcurve_u[3];
awb_cfg_v32->rotu4_ls0 = awb_meas.ic3Dyuv2Range_param[0].thcurve_u[4];
awb_cfg_v32->rotu5_ls0 = awb_meas.ic3Dyuv2Range_param[0].thcurve_u[5];
awb_cfg_v32->th0_ls0 = awb_meas.ic3Dyuv2Range_param[0].thcure_th[0];
awb_cfg_v32->th1_ls0 = awb_meas.ic3Dyuv2Range_param[0].thcure_th[1];
awb_cfg_v32->th2_ls0 = awb_meas.ic3Dyuv2Range_param[0].thcure_th[2];
awb_cfg_v32->th3_ls0 = awb_meas.ic3Dyuv2Range_param[0].thcure_th[3];
awb_cfg_v32->th4_ls0 = awb_meas.ic3Dyuv2Range_param[0].thcure_th[4];
awb_cfg_v32->th5_ls0 = awb_meas.ic3Dyuv2Range_param[0].thcure_th[5];
awb_cfg_v32->coor_x1_ls0_u = awb_meas.ic3Dyuv2Range_param[0].lineP1[0];
awb_cfg_v32->coor_x1_ls0_v = awb_meas.ic3Dyuv2Range_param[0].lineP1[1];
awb_cfg_v32->coor_x1_ls0_y = awb_meas.ic3Dyuv2Range_param[0].lineP1[2];
awb_cfg_v32->vec_x21_ls0_u = awb_meas.ic3Dyuv2Range_param[0].vP1P2[0];
awb_cfg_v32->vec_x21_ls0_v = awb_meas.ic3Dyuv2Range_param[0].vP1P2[1];
awb_cfg_v32->vec_x21_ls0_y = awb_meas.ic3Dyuv2Range_param[0].vP1P2[2];
awb_cfg_v32->dis_x1x2_ls0 = awb_meas.ic3Dyuv2Range_param[0].disP1P2;
awb_cfg_v32->rotu0_ls1 = awb_meas.ic3Dyuv2Range_param[1].thcurve_u[0];
awb_cfg_v32->rotu1_ls1 = awb_meas.ic3Dyuv2Range_param[1].thcurve_u[1];
awb_cfg_v32->rotu2_ls1 = awb_meas.ic3Dyuv2Range_param[1].thcurve_u[2];
awb_cfg_v32->rotu3_ls1 = awb_meas.ic3Dyuv2Range_param[1].thcurve_u[3];
awb_cfg_v32->rotu4_ls1 = awb_meas.ic3Dyuv2Range_param[1].thcurve_u[4];
awb_cfg_v32->rotu5_ls1 = awb_meas.ic3Dyuv2Range_param[1].thcurve_u[5];
awb_cfg_v32->th0_ls1 = awb_meas.ic3Dyuv2Range_param[1].thcure_th[0];
awb_cfg_v32->th1_ls1 = awb_meas.ic3Dyuv2Range_param[1].thcure_th[1];
awb_cfg_v32->th2_ls1 = awb_meas.ic3Dyuv2Range_param[1].thcure_th[2];
awb_cfg_v32->th3_ls1 = awb_meas.ic3Dyuv2Range_param[1].thcure_th[3];
awb_cfg_v32->th4_ls1 = awb_meas.ic3Dyuv2Range_param[1].thcure_th[4];
awb_cfg_v32->th5_ls1 = awb_meas.ic3Dyuv2Range_param[1].thcure_th[5];
awb_cfg_v32->coor_x1_ls1_u = awb_meas.ic3Dyuv2Range_param[1].lineP1[0];
awb_cfg_v32->coor_x1_ls1_v = awb_meas.ic3Dyuv2Range_param[1].lineP1[1];
awb_cfg_v32->coor_x1_ls1_y = awb_meas.ic3Dyuv2Range_param[1].lineP1[2];
awb_cfg_v32->vec_x21_ls1_u = awb_meas.ic3Dyuv2Range_param[1].vP1P2[0];
awb_cfg_v32->vec_x21_ls1_v = awb_meas.ic3Dyuv2Range_param[1].vP1P2[1];
awb_cfg_v32->vec_x21_ls1_y = awb_meas.ic3Dyuv2Range_param[1].vP1P2[2];
awb_cfg_v32->dis_x1x2_ls1 = awb_meas.ic3Dyuv2Range_param[1].disP1P2;
awb_cfg_v32->rotu0_ls2 = awb_meas.ic3Dyuv2Range_param[2].thcurve_u[0];
awb_cfg_v32->rotu1_ls2 = awb_meas.ic3Dyuv2Range_param[2].thcurve_u[1];
awb_cfg_v32->rotu2_ls2 = awb_meas.ic3Dyuv2Range_param[2].thcurve_u[2];
awb_cfg_v32->rotu3_ls2 = awb_meas.ic3Dyuv2Range_param[2].thcurve_u[3];
awb_cfg_v32->rotu4_ls2 = awb_meas.ic3Dyuv2Range_param[2].thcurve_u[4];
awb_cfg_v32->rotu5_ls2 = awb_meas.ic3Dyuv2Range_param[2].thcurve_u[5];
awb_cfg_v32->th0_ls2 = awb_meas.ic3Dyuv2Range_param[2].thcure_th[0];
awb_cfg_v32->th1_ls2 = awb_meas.ic3Dyuv2Range_param[2].thcure_th[1];
awb_cfg_v32->th2_ls2 = awb_meas.ic3Dyuv2Range_param[2].thcure_th[2];
awb_cfg_v32->th3_ls2 = awb_meas.ic3Dyuv2Range_param[2].thcure_th[3];
awb_cfg_v32->th4_ls2 = awb_meas.ic3Dyuv2Range_param[2].thcure_th[4];
awb_cfg_v32->th5_ls2 = awb_meas.ic3Dyuv2Range_param[2].thcure_th[5];
awb_cfg_v32->coor_x1_ls2_u = awb_meas.ic3Dyuv2Range_param[2].lineP1[0];
awb_cfg_v32->coor_x1_ls2_v = awb_meas.ic3Dyuv2Range_param[2].lineP1[1];
awb_cfg_v32->coor_x1_ls2_y = awb_meas.ic3Dyuv2Range_param[2].lineP1[2];
awb_cfg_v32->vec_x21_ls2_u = awb_meas.ic3Dyuv2Range_param[2].vP1P2[0];
awb_cfg_v32->vec_x21_ls2_v = awb_meas.ic3Dyuv2Range_param[2].vP1P2[1];
awb_cfg_v32->vec_x21_ls2_y = awb_meas.ic3Dyuv2Range_param[2].vP1P2[2];
awb_cfg_v32->dis_x1x2_ls2 = awb_meas.ic3Dyuv2Range_param[2].disP1P2;
awb_cfg_v32->rotu0_ls3 = awb_meas.ic3Dyuv2Range_param[3].thcurve_u[0];
awb_cfg_v32->rotu1_ls3 = awb_meas.ic3Dyuv2Range_param[3].thcurve_u[1];
awb_cfg_v32->rotu2_ls3 = awb_meas.ic3Dyuv2Range_param[3].thcurve_u[2];
awb_cfg_v32->rotu3_ls3 = awb_meas.ic3Dyuv2Range_param[3].thcurve_u[3];
awb_cfg_v32->rotu4_ls3 = awb_meas.ic3Dyuv2Range_param[3].thcurve_u[4];
awb_cfg_v32->rotu5_ls3 = awb_meas.ic3Dyuv2Range_param[3].thcurve_u[5];
awb_cfg_v32->th0_ls3 = awb_meas.ic3Dyuv2Range_param[3].thcure_th[0];
awb_cfg_v32->th1_ls3 = awb_meas.ic3Dyuv2Range_param[3].thcure_th[1];
awb_cfg_v32->th2_ls3 = awb_meas.ic3Dyuv2Range_param[3].thcure_th[2];
awb_cfg_v32->th3_ls3 = awb_meas.ic3Dyuv2Range_param[3].thcure_th[3];
awb_cfg_v32->th4_ls3 = awb_meas.ic3Dyuv2Range_param[3].thcure_th[4];
awb_cfg_v32->th5_ls3 = awb_meas.ic3Dyuv2Range_param[3].thcure_th[5];
awb_cfg_v32->coor_x1_ls3_u = awb_meas.ic3Dyuv2Range_param[3].lineP1[0];
awb_cfg_v32->coor_x1_ls3_v = awb_meas.ic3Dyuv2Range_param[3].lineP1[1];
awb_cfg_v32->coor_x1_ls3_y = awb_meas.ic3Dyuv2Range_param[3].lineP1[2];
awb_cfg_v32->vec_x21_ls3_u = awb_meas.ic3Dyuv2Range_param[3].vP1P2[0];
awb_cfg_v32->vec_x21_ls3_v = awb_meas.ic3Dyuv2Range_param[3].vP1P2[1];
awb_cfg_v32->vec_x21_ls3_y = awb_meas.ic3Dyuv2Range_param[3].vP1P2[2];
awb_cfg_v32->dis_x1x2_ls3 = awb_meas.ic3Dyuv2Range_param[3].disP1P2;
awb_cfg_v32->wt0 = awb_meas.rgb2xy_param.pseudoLuminanceWeight[0];
awb_cfg_v32->wt1 = awb_meas.rgb2xy_param.pseudoLuminanceWeight[1];
awb_cfg_v32->wt2 = awb_meas.rgb2xy_param.pseudoLuminanceWeight[2];
awb_cfg_v32->mat0_x = awb_meas.rgb2xy_param.rotationMat[0];
awb_cfg_v32->mat1_x = awb_meas.rgb2xy_param.rotationMat[1];
awb_cfg_v32->mat2_x = awb_meas.rgb2xy_param.rotationMat[2];
awb_cfg_v32->mat0_y = awb_meas.rgb2xy_param.rotationMat[3];
awb_cfg_v32->mat1_y = awb_meas.rgb2xy_param.rotationMat[4];
awb_cfg_v32->mat2_y = awb_meas.rgb2xy_param.rotationMat[5];
awb_cfg_v32->nor_x0_0 = awb_meas.xyRange_param[0].NorrangeX[0];
awb_cfg_v32->nor_x1_0 = awb_meas.xyRange_param[0].NorrangeX[1];
awb_cfg_v32->nor_y0_0 = awb_meas.xyRange_param[0].NorrangeY[0];
awb_cfg_v32->nor_y1_0 = awb_meas.xyRange_param[0].NorrangeY[1];
awb_cfg_v32->big_x0_0 = awb_meas.xyRange_param[0].SperangeX[0];
awb_cfg_v32->big_x1_0 = awb_meas.xyRange_param[0].SperangeX[1];
awb_cfg_v32->big_y0_0 = awb_meas.xyRange_param[0].SperangeY[0];
awb_cfg_v32->big_y1_0 = awb_meas.xyRange_param[0].SperangeY[1];
awb_cfg_v32->nor_x0_1 = awb_meas.xyRange_param[1].NorrangeX[0];
awb_cfg_v32->nor_x1_1 = awb_meas.xyRange_param[1].NorrangeX[1];
awb_cfg_v32->nor_y0_1 = awb_meas.xyRange_param[1].NorrangeY[0];
awb_cfg_v32->nor_y1_1 = awb_meas.xyRange_param[1].NorrangeY[1];
awb_cfg_v32->big_x0_1 = awb_meas.xyRange_param[1].SperangeX[0];
awb_cfg_v32->big_x1_1 = awb_meas.xyRange_param[1].SperangeX[1];
awb_cfg_v32->big_y0_1 = awb_meas.xyRange_param[1].SperangeY[0];
awb_cfg_v32->big_y1_1 = awb_meas.xyRange_param[1].SperangeY[1];
awb_cfg_v32->nor_x0_2 = awb_meas.xyRange_param[2].NorrangeX[0];
awb_cfg_v32->nor_x1_2 = awb_meas.xyRange_param[2].NorrangeX[1];
awb_cfg_v32->nor_y0_2 = awb_meas.xyRange_param[2].NorrangeY[0];
awb_cfg_v32->nor_y1_2 = awb_meas.xyRange_param[2].NorrangeY[1];
awb_cfg_v32->big_x0_2 = awb_meas.xyRange_param[2].SperangeX[0];
awb_cfg_v32->big_x1_2 = awb_meas.xyRange_param[2].SperangeX[1];
awb_cfg_v32->big_y0_2 = awb_meas.xyRange_param[2].SperangeY[0];
awb_cfg_v32->big_y1_2 = awb_meas.xyRange_param[2].SperangeY[1];
awb_cfg_v32->nor_x0_3 = awb_meas.xyRange_param[3].NorrangeX[0];
awb_cfg_v32->nor_x1_3 = awb_meas.xyRange_param[3].NorrangeX[1];
awb_cfg_v32->nor_y0_3 = awb_meas.xyRange_param[3].NorrangeY[0];
awb_cfg_v32->nor_y1_3 = awb_meas.xyRange_param[3].NorrangeY[1];
awb_cfg_v32->big_x0_3 = awb_meas.xyRange_param[3].SperangeX[0];
awb_cfg_v32->big_x1_3 = awb_meas.xyRange_param[3].SperangeX[1];
awb_cfg_v32->big_y0_3 = awb_meas.xyRange_param[3].SperangeY[0];
awb_cfg_v32->big_y1_3 = awb_meas.xyRange_param[3].SperangeY[1];
awb_cfg_v32->pre_wbgain_inv_r = awb_meas.pre_wbgain_inv_r;
awb_cfg_v32->pre_wbgain_inv_g = awb_meas.pre_wbgain_inv_g;
awb_cfg_v32->pre_wbgain_inv_b = awb_meas.pre_wbgain_inv_b;
awb_cfg_v32->multiwindow_en = awb_meas.multiwindow_en;
awb_cfg_v32->multiwindow0_h_offs = awb_meas.multiwindow[0][0];
awb_cfg_v32->multiwindow0_v_offs = awb_meas.multiwindow[0][1];
awb_cfg_v32->multiwindow0_h_size =
awb_meas.multiwindow[0][0] + awb_meas.multiwindow[0][2];
awb_cfg_v32->multiwindow0_v_size =
awb_meas.multiwindow[0][1] + awb_meas.multiwindow[0][3];
awb_cfg_v32->multiwindow1_h_offs = awb_meas.multiwindow[1][0];
awb_cfg_v32->multiwindow1_v_offs = awb_meas.multiwindow[1][1];
awb_cfg_v32->multiwindow1_h_size =
awb_meas.multiwindow[1][0] + awb_meas.multiwindow[1][2];
awb_cfg_v32->multiwindow1_v_size =
awb_meas.multiwindow[1][1] + awb_meas.multiwindow[1][3];
awb_cfg_v32->multiwindow2_h_offs = awb_meas.multiwindow[2][0];
awb_cfg_v32->multiwindow2_v_offs = awb_meas.multiwindow[2][1];
awb_cfg_v32->multiwindow2_h_size =
awb_meas.multiwindow[2][0] + awb_meas.multiwindow[2][2];
awb_cfg_v32->multiwindow2_v_size =
awb_meas.multiwindow[2][1] + awb_meas.multiwindow[2][3];
awb_cfg_v32->multiwindow3_h_offs = awb_meas.multiwindow[3][0];
awb_cfg_v32->multiwindow3_v_offs = awb_meas.multiwindow[3][1];
awb_cfg_v32->multiwindow3_h_size =
awb_meas.multiwindow[3][0] + awb_meas.multiwindow[3][2];
awb_cfg_v32->multiwindow3_v_size =
awb_meas.multiwindow[3][1] + awb_meas.multiwindow[3][3];
int exc_wp_region0_excen0 =
awb_meas.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
int exc_wp_region0_excen1 =
awb_meas.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
awb_cfg_v32->exc_wp_region0_excen = ((exc_wp_region0_excen1 << 1) + exc_wp_region0_excen0) & 0x3;
awb_cfg_v32->exc_wp_region0_measen = awb_meas.excludeWpRange[0].measureEnable;
awb_cfg_v32->exc_wp_region0_domain = awb_meas.excludeWpRange[0].domain;
awb_cfg_v32->exc_wp_region0_xu0 = awb_meas.excludeWpRange[0].xu[0];
awb_cfg_v32->exc_wp_region0_xu1 = awb_meas.excludeWpRange[0].xu[1];
awb_cfg_v32->exc_wp_region0_yv0 = awb_meas.excludeWpRange[0].yv[0];
awb_cfg_v32->exc_wp_region0_yv1 = awb_meas.excludeWpRange[0].yv[1];
awb_cfg_v32->exc_wp_region0_weight = awb_meas.excludeWpRange[0].weightInculde;
int exc_wp_region1_excen0 =
awb_meas.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
int exc_wp_region1_excen1 =
awb_meas.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
awb_cfg_v32->exc_wp_region1_excen = ((exc_wp_region1_excen1 << 1) + exc_wp_region1_excen0) & 0x3;
awb_cfg_v32->exc_wp_region1_measen = awb_meas.excludeWpRange[1].measureEnable;
awb_cfg_v32->exc_wp_region1_domain = awb_meas.excludeWpRange[1].domain;
awb_cfg_v32->exc_wp_region1_xu0 = awb_meas.excludeWpRange[1].xu[0];
awb_cfg_v32->exc_wp_region1_xu1 = awb_meas.excludeWpRange[1].xu[1];
awb_cfg_v32->exc_wp_region1_yv0 = awb_meas.excludeWpRange[1].yv[0];
awb_cfg_v32->exc_wp_region1_yv1 = awb_meas.excludeWpRange[1].yv[1];
awb_cfg_v32->exc_wp_region1_weight = awb_meas.excludeWpRange[1].weightInculde;
int exc_wp_region2_excen0 =
awb_meas.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
int exc_wp_region2_excen1 =
awb_meas.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
awb_cfg_v32->exc_wp_region2_excen = ((exc_wp_region2_excen1 << 1) + exc_wp_region2_excen0) & 0x3;
awb_cfg_v32->exc_wp_region2_measen = awb_meas.excludeWpRange[2].measureEnable;
awb_cfg_v32->exc_wp_region2_domain = awb_meas.excludeWpRange[2].domain;
awb_cfg_v32->exc_wp_region2_xu0 = awb_meas.excludeWpRange[2].xu[0];
awb_cfg_v32->exc_wp_region2_xu1 = awb_meas.excludeWpRange[2].xu[1];
awb_cfg_v32->exc_wp_region2_yv0 = awb_meas.excludeWpRange[2].yv[0];
awb_cfg_v32->exc_wp_region2_yv1 = awb_meas.excludeWpRange[2].yv[1];
awb_cfg_v32->exc_wp_region2_weight = awb_meas.excludeWpRange[2].weightInculde;
int exc_wp_region3_excen0 =
awb_meas.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
int exc_wp_region3_excen1 =
awb_meas.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
awb_cfg_v32->exc_wp_region3_excen = ((exc_wp_region3_excen1 << 1) + exc_wp_region3_excen0) & 0x3;
awb_cfg_v32->exc_wp_region3_measen = awb_meas.excludeWpRange[3].measureEnable;
awb_cfg_v32->exc_wp_region3_domain = awb_meas.excludeWpRange[3].domain;
awb_cfg_v32->exc_wp_region3_xu0 = awb_meas.excludeWpRange[3].xu[0];
awb_cfg_v32->exc_wp_region3_xu1 = awb_meas.excludeWpRange[3].xu[1];
awb_cfg_v32->exc_wp_region3_yv0 = awb_meas.excludeWpRange[3].yv[0];
awb_cfg_v32->exc_wp_region3_yv1 = awb_meas.excludeWpRange[3].yv[1];
awb_cfg_v32->exc_wp_region3_weight = awb_meas.excludeWpRange[3].weightInculde;
int exc_wp_region4_excen0 =
awb_meas.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
int exc_wp_region4_excen1 =
awb_meas.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
awb_cfg_v32->exc_wp_region4_excen = ((exc_wp_region4_excen1 << 1) + exc_wp_region4_excen0) & 0x3;
awb_cfg_v32->exc_wp_region4_domain = awb_meas.excludeWpRange[4].domain;
awb_cfg_v32->exc_wp_region4_xu0 = awb_meas.excludeWpRange[4].xu[0];
awb_cfg_v32->exc_wp_region4_xu1 = awb_meas.excludeWpRange[4].xu[1];
awb_cfg_v32->exc_wp_region4_yv0 = awb_meas.excludeWpRange[4].yv[0];
awb_cfg_v32->exc_wp_region4_yv1 = awb_meas.excludeWpRange[4].yv[1];
awb_cfg_v32->exc_wp_region4_weight = awb_meas.excludeWpRange[4].weightInculde;
int exc_wp_region5_excen0 =
awb_meas.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
int exc_wp_region5_excen1 =
awb_meas.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
awb_cfg_v32->exc_wp_region5_excen = ((exc_wp_region5_excen1 << 1) + exc_wp_region5_excen0) & 0x3;
awb_cfg_v32->exc_wp_region5_domain = awb_meas.excludeWpRange[5].domain;
awb_cfg_v32->exc_wp_region5_xu0 = awb_meas.excludeWpRange[5].xu[0];
awb_cfg_v32->exc_wp_region5_xu1 = awb_meas.excludeWpRange[5].xu[1];
awb_cfg_v32->exc_wp_region5_yv0 = awb_meas.excludeWpRange[5].yv[0];
awb_cfg_v32->exc_wp_region5_yv1 = awb_meas.excludeWpRange[5].yv[1];
awb_cfg_v32->exc_wp_region5_weight = awb_meas.excludeWpRange[5].weightInculde;
int exc_wp_region6_excen0 =
awb_meas.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
int exc_wp_region6_excen1 =
awb_meas.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
awb_cfg_v32->exc_wp_region6_excen = ((exc_wp_region6_excen1 << 1) + exc_wp_region6_excen0) & 0x3;
awb_cfg_v32->exc_wp_region6_domain = awb_meas.excludeWpRange[6].domain;
awb_cfg_v32->exc_wp_region6_xu0 = awb_meas.excludeWpRange[6].xu[0];
awb_cfg_v32->exc_wp_region6_xu1 = awb_meas.excludeWpRange[6].xu[1];
awb_cfg_v32->exc_wp_region6_yv0 = awb_meas.excludeWpRange[6].yv[0];
awb_cfg_v32->exc_wp_region6_yv1 = awb_meas.excludeWpRange[6].yv[1];
awb_cfg_v32->exc_wp_region6_weight = awb_meas.excludeWpRange[6].weightInculde;
awb_cfg_v32->wp_luma_weicurve_y0 = awb_meas.wpDiffwei_y[0];
awb_cfg_v32->wp_luma_weicurve_y1 = awb_meas.wpDiffwei_y[1];
awb_cfg_v32->wp_luma_weicurve_y2 = awb_meas.wpDiffwei_y[2];
awb_cfg_v32->wp_luma_weicurve_y3 = awb_meas.wpDiffwei_y[3];
awb_cfg_v32->wp_luma_weicurve_y4 = awb_meas.wpDiffwei_y[4];
awb_cfg_v32->wp_luma_weicurve_y5 = awb_meas.wpDiffwei_y[5];
awb_cfg_v32->wp_luma_weicurve_y6 = awb_meas.wpDiffwei_y[6];
awb_cfg_v32->wp_luma_weicurve_y7 = awb_meas.wpDiffwei_y[7];
awb_cfg_v32->wp_luma_weicurve_y8 = awb_meas.wpDiffwei_y[8];
awb_cfg_v32->wp_luma_weicurve_w0 = awb_meas.wpDiffwei_w[0];
awb_cfg_v32->wp_luma_weicurve_w1 = awb_meas.wpDiffwei_w[1];
awb_cfg_v32->wp_luma_weicurve_w2 = awb_meas.wpDiffwei_w[2];
awb_cfg_v32->wp_luma_weicurve_w3 = awb_meas.wpDiffwei_w[3];
awb_cfg_v32->wp_luma_weicurve_w4 = awb_meas.wpDiffwei_w[4];
awb_cfg_v32->wp_luma_weicurve_w5 = awb_meas.wpDiffwei_w[5];
awb_cfg_v32->wp_luma_weicurve_w6 = awb_meas.wpDiffwei_w[6];
awb_cfg_v32->wp_luma_weicurve_w7 = awb_meas.wpDiffwei_w[7];
awb_cfg_v32->wp_luma_weicurve_w8 = awb_meas.wpDiffwei_w[8];
#if RKAIQ_HAVE_AWB_V32LT
for (int i = 0; i < ISP32L_RAWAWB_WEIGHT_NUM; i++) {
awb_cfg_v32->win_weight[i] = awb_meas.blkWeight[i * 5] |
(awb_meas.blkWeight[i * 5 + 1] << 6) |
(awb_meas.blkWeight[i * 5 + 2] << 12) |
(awb_meas.blkWeight[i * 5 + 3] << 18) |
(awb_meas.blkWeight[i * 5 + 4] << 24);
}
#else
for (int i = 0; i < RK_AIQ_AWB_GRID_NUM_TOTAL; i++) {
awb_cfg_v32->wp_blk_wei_w[i] = awb_meas.blkWeight[i];
}
#endif
awb_cfg_v32->blk_rtdw_measure_en = awb_meas.blk_rtdw_measure_en;
WriteAwbReg(awb_cfg_v32);
}
#endif
#if RKAIQ_HAVE_AF_V33 || RKAIQ_ONLY_AF_STATS_V33
#ifdef USE_NEWSTRUCT
void Isp39Params::convertAiqAfToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
const afStats_cfg_t& af_data, bool af_cfg_udpate)
{
const afStats_cfg_t *afStats_cfg = &af_data;
struct isp39_rawaf_meas_cfg *rawaf = &isp_cfg.meas.rawaf;
int i;
if (!af_cfg_udpate) return;
if (af_data.hw_afCfg_stats_en) isp_cfg.module_ens |= ISP2X_MODULE_RAWAF;
isp_cfg.module_en_update |= ISP2X_MODULE_RAWAF;
isp_cfg.module_cfg_update |= ISP2X_MODULE_RAWAF;
switch (afStats_cfg->hw_afCfg_statsSrc_mode) {
case afStats_vicapOut_mode:
rawaf->bnr2af_sel = 0;
rawaf->from_ynr = 1;
rawaf->rawaf_sel = 0;
break;
case afStats_ynrOut_mode:
rawaf->bnr2af_sel = 0;
rawaf->from_ynr = 1;
rawaf->rawaf_sel = 0;
break;
case afStats_btnrOut_mode:
rawaf->bnr2af_sel = 1;
rawaf->from_ynr = 0;
rawaf->rawaf_sel = 0;
break;
case afStats_dmIn_mode:
rawaf->bnr2af_sel = 0;
rawaf->from_ynr = 0;
rawaf->rawaf_sel = 3;
break;
case afStats_chl2Wb0Out_mode:
rawaf->bnr2af_sel = 0;
rawaf->from_ynr = 0;
rawaf->rawaf_sel = 2;
break;
case afStats_chl1Wb0Out_mode:
rawaf->bnr2af_sel = 0;
rawaf->from_ynr = 0;
rawaf->rawaf_sel = 1;
break;
default:
rawaf->bnr2af_sel = 0;
rawaf->from_ynr = 0;
rawaf->rawaf_sel = 0;
break;
}
rawaf->tnrin_shift = afStats_cfg->hw_afCfg_statsBtnrOut_shift;
rawaf->win[0].h_offs = afStats_cfg->mainWin.hw_afCfg_win_x;
rawaf->win[0].v_offs = afStats_cfg->mainWin.hw_afCfg_win_y;
rawaf->win[0].h_size = afStats_cfg->mainWin.hw_afCfg_win_width;
rawaf->win[0].v_size = afStats_cfg->mainWin.hw_afCfg_win_height;
rawaf->win[1].h_offs = afStats_cfg->subWin.hw_afCfg_win_x;
rawaf->win[1].v_offs = afStats_cfg->subWin.hw_afCfg_win_y;
rawaf->win[1].h_size = afStats_cfg->subWin.hw_afCfg_win_width;
rawaf->win[1].v_size = afStats_cfg->subWin.hw_afCfg_win_height;
rawaf->bls_en = afStats_cfg->blc.hw_afCfg_blc_en;
rawaf->bls_offset = afStats_cfg->blc.hw_afCfg_ob_val;
rawaf->aehgl_en = afStats_cfg->mainWin.hw_afCfg_lumaStats_en;
rawaf->ae_mode = 0;
rawaf->ae_config_use = 1;
rawaf->vldg_sel = 0;
rawaf->y_mode = 0;
rawaf->num_afm_win = 2;
switch (rawaf->avg_ds_mode) {
case afStats_ds_2x2_mode:
rawaf->avg_ds_en = 0;
rawaf->v_dnscl_mode = 2;
break;
case afStats_ds_4x4_mode:
rawaf->avg_ds_en = 1;
rawaf->avg_ds_mode = 0;
break;
case afStats_ds_8x8_mode:
rawaf->avg_ds_en = 1;
rawaf->avg_ds_mode = 1;
break;
default:
rawaf->avg_ds_en = 0;
rawaf->v_dnscl_mode = 1;
break;
}
rawaf->gamma_en = afStats_cfg->gamma.hw_afCfg_gamma_en;
for (i = 0; i < 17; i++)
rawaf->gamma_y[i] = afStats_cfg->gamma.hw_afCfg_gamma_val[i] * 0x3FF;
rawaf->gaus_en = afStats_cfg->preFilt.hw_afCfg_gaus_en;
for (i = 0; i < 9; i++)
rawaf->gaus_coe[i] = afStats_cfg->preFilt.hw_afCfg_gaus_coeff[i] * 128;
rawaf->highlit_thresh = afStats_cfg->hw_afCfg_hLumaCnt_thred * 0x3FF;
rawaf->ldg_en = afStats_cfg->hw_afCfg_ldg_en;
rawaf->hiir_en = afStats_cfg->hw_afCfg_hFilt_en;
rawaf->hiir_left_border_mode = afStats_cfg->hw_afCfg_hFiltLnBnd_mode;
for (i = 0; i < 6; i++)
rawaf->h1iir1_coe[i] = afStats_cfg->hFilt1.hw_afCfg_iirStep1_coeff[i];
for (i = 0; i < 6; i++)
rawaf->h1iir2_coe[i] = afStats_cfg->hFilt1.hw_afCfg_iirStep2_coeff[i];
switch (afStats_cfg->hFilt1.hw_afCfg_fvFmt_mode) {
case afStats_outPeak_sumLinear_mode:
rawaf->h1_fv_mode = 1;
rawaf->h1_acc_mode = 1;
break;
case afStats_outNorm_sumLinear_mode:
rawaf->h1_fv_mode = 1;
rawaf->h1_acc_mode = 0;
break;
case afStats_outPeak_sumSqu_mode:
rawaf->h1_fv_mode = 0;
rawaf->h1_acc_mode = 1;
break;
default:
rawaf->h1_fv_mode = 0;
rawaf->h1_acc_mode = 0;
break;
}
rawaf->h1iir_shift_wina = afStats_cfg->hFilt1.hw_afCfg_accMainWin_shift;
rawaf->h1iir_shift_winb = afStats_cfg->hFilt1.hw_afCfg_accSubWin_shift;
for (i = 0; i < 6; i++)
rawaf->h2iir1_coe[i] = afStats_cfg->hFilt2.hw_afCfg_iirStep1_coeff[i];
for (i = 0; i < 6; i++)
rawaf->h2iir2_coe[i] = afStats_cfg->hFilt2.hw_afCfg_iirStep2_coeff[i];
switch (afStats_cfg->hFilt2.hw_afCfg_fvFmt_mode) {
case afStats_outPeak_sumLinear_mode:
rawaf->h2_fv_mode = 1;
rawaf->h2_acc_mode = 1;
break;
case afStats_outNorm_sumLinear_mode:
rawaf->h2_fv_mode = 1;
rawaf->h2_acc_mode = 0;
break;
case afStats_outPeak_sumSqu_mode:
rawaf->h2_fv_mode = 0;
rawaf->h2_acc_mode = 1;
break;
default:
rawaf->h2_fv_mode = 0;
rawaf->h2_acc_mode = 0;
break;
}
rawaf->h2iir_shift_wina = afStats_cfg->hFilt2.hw_afCfg_accMainWin_shift;
rawaf->h2iir_shift_winb = afStats_cfg->hFilt2.hw_afCfg_accSubWin_shift;
rawaf->h_fv_thresh = afStats_cfg->hFilt_coring.hw_afCfg_coring_thred * 0xFFF;
rawaf->h_fv_slope = afStats_cfg->hFilt_coring.hw_afCfg_slope_val * 0x100;
rawaf->h_fv_limit = afStats_cfg->hFilt_coring.hw_afCfg_coring_maxLimit * 0x3FF;
rawaf->curve_h[0].ldg_lumth = afStats_cfg->hFilt_ldg.hw_afCfg_lumaL_thred * 0xFF;
rawaf->curve_h[0].ldg_gain = afStats_cfg->hFilt_ldg.hw_afCfg_gainL_val * 0xFF;
rawaf->curve_h[0].ldg_gslp = afStats_cfg->hFilt_ldg.hw_afCfg_slopeL_val * 0x100;
rawaf->curve_h[1].ldg_lumth = afStats_cfg->hFilt_ldg.hw_afCfg_lumaR_thred * 0xFF;
rawaf->curve_h[1].ldg_gain = afStats_cfg->hFilt_ldg.hw_afCfg_gainR_val * 0xFF;
rawaf->curve_h[1].ldg_gslp = afStats_cfg->hFilt_ldg.hw_afCfg_slopeR_val * 0x100;
rawaf->hldg_dilate_num = afStats_cfg->hFilt_ldg.hw_afCfg_maxOptBndL_len;
rawaf->viir_en = afStats_cfg->hw_afCfg_vFilt_en;
for (i = 0; i < 3; i++)
rawaf->v1iir_coe[i] = afStats_cfg->vFilt1.hw_afCfg_iirStep1_coeff[i];
for (i = 0; i < 3; i++)
rawaf->v1fir_coe[i] = afStats_cfg->vFilt1.hw_afCfg_firStep2_coeff[i];
switch (afStats_cfg->vFilt1.hw_afCfg_fvFmt_mode) {
case afStats_outPeak_sumLinear_mode:
rawaf->v1_fv_mode = 1;
rawaf->v1_acc_mode = 1;
break;
case afStats_outNorm_sumLinear_mode:
rawaf->v1_fv_mode = 1;
rawaf->v1_acc_mode = 0;
break;
case afStats_outPeak_sumSqu_mode:
rawaf->v1_fv_mode = 0;
rawaf->v1_acc_mode = 1;
break;
default:
rawaf->v1_fv_mode = 0;
rawaf->v1_acc_mode = 0;
break;
}
rawaf->v1iir_shift_wina = afStats_cfg->vFilt1.hw_afCfg_accMainWin_shift;
rawaf->v1iir_shift_winb = afStats_cfg->vFilt1.hw_afCfg_accSubWin_shift;
for (i = 0; i < 3; i++)
rawaf->v2iir_coe[i] = afStats_cfg->vFilt2.hw_afCfg_iirStep1_coeff[i];
for (i = 0; i < 3; i++)
rawaf->v2fir_coe[i] = afStats_cfg->vFilt2.hw_afCfg_firStep2_coeff[i];
switch (afStats_cfg->vFilt2.hw_afCfg_fvFmt_mode) {
case afStats_outPeak_sumLinear_mode:
rawaf->v2_fv_mode = 1;
rawaf->v2_acc_mode = 1;
break;
case afStats_outNorm_sumLinear_mode:
rawaf->v2_fv_mode = 1;
rawaf->v2_acc_mode = 0;
break;
case afStats_outPeak_sumSqu_mode:
rawaf->v2_fv_mode = 0;
rawaf->v2_acc_mode = 1;
break;
default:
rawaf->v2_fv_mode = 0;
rawaf->v2_acc_mode = 0;
break;
}
rawaf->v2iir_shift_wina = afStats_cfg->vFilt2.hw_afCfg_accMainWin_shift;
rawaf->v2iir_shift_winb = afStats_cfg->vFilt2.hw_afCfg_accSubWin_shift;
rawaf->v_fv_thresh = afStats_cfg->vFilt_coring.hw_afCfg_coring_thred * 0xFFF;
rawaf->v_fv_slope = afStats_cfg->vFilt_coring.hw_afCfg_slope_val * 0x100;
rawaf->v_fv_limit = afStats_cfg->vFilt_coring.hw_afCfg_coring_maxLimit * 0x3FF;
rawaf->curve_v[0].ldg_lumth = afStats_cfg->vFilt_ldg.hw_afCfg_lumaL_thred * 0xFF;
rawaf->curve_v[0].ldg_gain = afStats_cfg->vFilt_ldg.hw_afCfg_gainL_val * 0xFF;
rawaf->curve_v[0].ldg_gslp = afStats_cfg->vFilt_ldg.hw_afCfg_slopeL_val * 0x100;
rawaf->curve_v[1].ldg_lumth = afStats_cfg->vFilt_ldg.hw_afCfg_lumaR_thred * 0xFF;
rawaf->curve_v[1].ldg_gain = afStats_cfg->vFilt_ldg.hw_afCfg_gainR_val * 0xFF;
rawaf->curve_v[1].ldg_gslp = afStats_cfg->vFilt_ldg.hw_afCfg_slopeR_val * 0x100;
}
#else
void Isp39Params::convertAiqAfToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
const rk_aiq_isp_af_v33_t& af_data,
bool af_cfg_udpate)
{
int i;
if (!af_cfg_udpate) return;
if (af_data.af_en) isp_cfg.module_ens |= ISP2X_MODULE_RAWAF;
isp_cfg.module_en_update |= ISP2X_MODULE_RAWAF;
isp_cfg.module_cfg_update |= ISP2X_MODULE_RAWAF;
isp_cfg.meas.rawaf.rawaf_sel = af_data.rawaf_sel;
isp_cfg.meas.rawaf.gamma_en = af_data.gamma_en;
isp_cfg.meas.rawaf.gaus_en = af_data.gaus_en;
isp_cfg.meas.rawaf.hiir_en = af_data.hiir_en;
isp_cfg.meas.rawaf.viir_en = af_data.viir_en;
isp_cfg.meas.rawaf.v1_fv_mode = af_data.v1_fv_outmode;
isp_cfg.meas.rawaf.v2_fv_mode = af_data.v2_fv_outmode;
isp_cfg.meas.rawaf.h1_fv_mode = af_data.h1_fv_outmode;
isp_cfg.meas.rawaf.h2_fv_mode = af_data.h2_fv_outmode;
isp_cfg.meas.rawaf.ldg_en = af_data.ldg_en;
isp_cfg.meas.rawaf.y_mode = af_data.y_mode;
isp_cfg.meas.rawaf.vldg_sel = af_data.vldg_sel;
isp_cfg.meas.rawaf.v_dnscl_mode = af_data.v_dnscl_mode;
isp_cfg.meas.rawaf.from_ynr = af_data.from_ynr;
isp_cfg.meas.rawaf.ae_mode = 0;
isp_cfg.meas.rawaf.ae_config_use = 1;
isp_cfg.meas.rawaf.aehgl_en = af_data.aehgl_en;
isp_cfg.meas.rawaf.avg_ds_en = af_data.avg_ds_en;
isp_cfg.meas.rawaf.avg_ds_mode = af_data.avg_ds_mode;
isp_cfg.meas.rawaf.h1_acc_mode = af_data.h1_acc_mode;
isp_cfg.meas.rawaf.h2_acc_mode = af_data.h2_acc_mode;
isp_cfg.meas.rawaf.v1_acc_mode = af_data.v1_acc_mode;
isp_cfg.meas.rawaf.v2_acc_mode = af_data.v2_acc_mode;
isp_cfg.meas.rawaf.bnr2af_sel = af_data.from_bnr;
isp_cfg.meas.rawaf.tnrin_shift = af_data.bnrin_shift;
isp_cfg.meas.rawaf.num_afm_win = af_data.window_num;
isp_cfg.meas.rawaf.win[0].h_offs = af_data.wina_h_offs;
isp_cfg.meas.rawaf.win[0].v_offs = af_data.wina_v_offs;
isp_cfg.meas.rawaf.win[0].h_size = af_data.wina_h_size;
isp_cfg.meas.rawaf.win[0].v_size = af_data.wina_v_size;
isp_cfg.meas.rawaf.win[1].h_offs = af_data.winb_h_offs;
isp_cfg.meas.rawaf.win[1].v_offs = af_data.winb_v_offs;
isp_cfg.meas.rawaf.win[1].h_size = af_data.winb_h_size;
isp_cfg.meas.rawaf.win[1].v_size = af_data.winb_v_size;
isp_cfg.meas.rawaf.bls_en = af_data.bls_en;
isp_cfg.meas.rawaf.bls_offset = af_data.bls_offset;
isp_cfg.meas.rawaf.hldg_dilate_num = af_data.hldg_dilate_num;
isp_cfg.meas.rawaf.hiir_left_border_mode = af_data.hiir_left_border_mode;
isp_cfg.meas.rawaf.h1iir_shift_wina = af_data.wina_h1_shift;
isp_cfg.meas.rawaf.h2iir_shift_wina = af_data.wina_h2_shift;
isp_cfg.meas.rawaf.v1iir_shift_wina = af_data.wina_v1_shift;
isp_cfg.meas.rawaf.v2iir_shift_wina = af_data.wina_v2_shift;
isp_cfg.meas.rawaf.h1iir_shift_winb = af_data.winb_h1_shift;
isp_cfg.meas.rawaf.h2iir_shift_winb = af_data.winb_h2_shift;
isp_cfg.meas.rawaf.v1iir_shift_winb = af_data.winb_v1_shift;
isp_cfg.meas.rawaf.v2iir_shift_winb = af_data.winb_v2_shift;
for (i = 0; i < ISP32_RAWAF_GAUS_COE_NUM; i++) {
isp_cfg.meas.rawaf.gaus_coe[i] = af_data.gaus_coe[i];
}
memcpy(isp_cfg.meas.rawaf.gamma_y, af_data.gamma_y,
ISP32_RAWAF_GAMMA_NUM * sizeof(unsigned short));
for (i = 0; i < ISP32_RAWAF_CURVE_NUM; i++) {
isp_cfg.meas.rawaf.curve_h[i].ldg_lumth = af_data.h_ldg_lumth[i];
isp_cfg.meas.rawaf.curve_h[i].ldg_gain = af_data.h_ldg_gain[i];
isp_cfg.meas.rawaf.curve_h[i].ldg_gslp = af_data.h_ldg_gslp[i];
isp_cfg.meas.rawaf.curve_v[i].ldg_lumth = af_data.v_ldg_lumth[i];
isp_cfg.meas.rawaf.curve_v[i].ldg_gain = af_data.v_ldg_gain[i];
isp_cfg.meas.rawaf.curve_v[i].ldg_gslp = af_data.v_ldg_gslp[i];
}
for (i = 0; i < ISP32_RAWAF_HIIR_COE_NUM; i++) {
isp_cfg.meas.rawaf.h1iir1_coe[i] = af_data.h1_iir1_coe[i];
isp_cfg.meas.rawaf.h1iir2_coe[i] = af_data.h1_iir2_coe[i];
isp_cfg.meas.rawaf.h2iir1_coe[i] = af_data.h2_iir1_coe[i];
isp_cfg.meas.rawaf.h2iir2_coe[i] = af_data.h2_iir2_coe[i];
}
for (i = 0; i < ISP32_RAWAF_VIIR_COE_NUM; i++) {
isp_cfg.meas.rawaf.v1iir_coe[i] = af_data.v1_iir_coe[i];
isp_cfg.meas.rawaf.v2iir_coe[i] = af_data.v2_iir_coe[i];
}
for (i = 0; i < ISP32_RAWAF_VFIR_COE_NUM; i++) {
isp_cfg.meas.rawaf.v1fir_coe[i] = af_data.v1_fir_coe[i];
isp_cfg.meas.rawaf.v2fir_coe[i] = af_data.v2_fir_coe[i];
}
isp_cfg.meas.rawaf.highlit_thresh = af_data.highlit_thresh;
isp_cfg.meas.rawaf.h_fv_thresh = af_data.h_fv_thresh;
isp_cfg.meas.rawaf.h_fv_limit = af_data.h_fv_limit;
isp_cfg.meas.rawaf.h_fv_slope = af_data.h_fv_slope;
isp_cfg.meas.rawaf.v_fv_thresh = af_data.v_fv_thresh;
isp_cfg.meas.rawaf.v_fv_limit = af_data.v_fv_limit;
isp_cfg.meas.rawaf.v_fv_slope = af_data.v_fv_slope;
mLatestMeasCfg.rawaf = isp_cfg.meas.rawaf;
}
#endif
#endif
#if RKAIQ_HAVE_CAC_V11
void Isp39Params::convertAiqCacToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
const rk_aiq_isp_cac_v32_t& cac_cfg) {
LOGD_ACAC("convert CAC params enable %d", cac_cfg.enable);
if (cac_cfg.enable) {
isp_cfg.module_en_update |= ISP3X_MODULE_CAC;
isp_cfg.module_ens |= ISP3X_MODULE_CAC;
isp_cfg.module_cfg_update |= ISP3X_MODULE_CAC;
} else {
isp_cfg.module_en_update |= (ISP3X_MODULE_CAC);
isp_cfg.module_ens &= ~(ISP3X_MODULE_CAC);
isp_cfg.module_cfg_update &= ~(ISP3X_MODULE_CAC);
}
struct isp32_cac_cfg* cfg = &isp_cfg.others.cac_cfg;
memcpy(cfg, &cac_cfg.cfg, sizeof(*cfg));
#if 1
LOGD_ACAC("Dump CAC config: ");
LOGD_ACAC("current enable: %d", cac_cfg.enable);
LOGD_ACAC("by en: %d", cfg->bypass_en);
LOGD_ACAC("center en: %d", cfg->center_en);
LOGD_ACAC("center x: %d", cfg->center_width);
LOGD_ACAC("center y: %d", cfg->center_height);
LOGD_ACAC("psf shift bits: %d", cfg->psf_sft_bit);
LOGD_ACAC("psf cfg num: %d", cfg->cfg_num);
LOGD_ACAC("psf buf fd: %d", cfg->buf_fd);
LOGD_ACAC("psf hwsize: %d", cfg->hsize);
LOGD_ACAC("psf vsize: %d", cfg->vsize);
for (int i = 0; i < RKCAC_STRENGTH_TABLE_LEN; i++) {
LOGD_ACAC("strength %d: %d", i, cfg->strength[i]);
}
LOGD_ACAC("clip_g_mode : %d", cfg->clip_g_mode);
LOGD_ACAC("edge_detect_en : %d", cfg->edge_detect_en);
LOGD_ACAC("neg_clip0_en : %d", cfg->neg_clip0_en);
LOGD_ACAC("flat_thed_b : %d", cfg->flat_thed_b);
LOGD_ACAC("flat_thed_r : %d", cfg->flat_thed_r);
LOGD_ACAC("offset_b : %d", cfg->offset_b);
LOGD_ACAC("offset_r : %d", cfg->offset_r);
LOGD_ACAC("expo_thed_b : %d", cfg->expo_thed_b);
LOGD_ACAC("expo_thed_r : %d", cfg->expo_thed_r);
LOGD_ACAC("expo_adj_b : %d", cfg->expo_adj_b);
LOGD_ACAC("expo_adj_r : %d", cfg->expo_adj_r);
#endif
}
#endif
#if (RKAIQ_HAVE_BAYERTNR_V30)
#if USE_NEWSTRUCT
void Isp39Params::convertAiqBtnrToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_btnr_params_t* btnr_attr)
{
if (btnr_attr->en) {
// bayer3dnr enable bayer2dnr must enable at the same time
isp_cfg.module_ens |= ISP3X_MODULE_BAY3D;
isp_cfg.module_ens |= ISP3X_MODULE_BAYNR;
isp_cfg.module_en_update |= ISP3X_MODULE_BAY3D;
isp_cfg.module_cfg_update |= ISP3X_MODULE_BAY3D;
isp_cfg.module_en_update |= ISP3X_MODULE_BAYNR;
} else {
// tnr can't open/close in runtime.
isp_cfg.module_ens |= ISP3X_MODULE_BAY3D;
return;
}
mBtnrInfo.bypass = btnr_attr->bypass;
rk_aiq_btnr40_params_cvt(&btnr_attr->result, &isp_cfg, &mCommonCvtInfo, &mBtnrInfo);
}
#else
void Isp39Params::convertAiqTnrToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_tnr_v39_t& tnr) {
LOGD_ANR("%s:%d enter! enable:%d \n", __FUNCTION__, __LINE__, tnr.bypass_en);
if (tnr.bypass_en) {
isp_cfg.module_ens |= ISP3X_MODULE_BAY3D;
} else {
isp_cfg.module_ens |= ISP3X_MODULE_BAY3D;
}
isp_cfg.module_en_update |= ISP3X_MODULE_BAY3D;
isp_cfg.module_cfg_update |= ISP3X_MODULE_BAY3D;
struct isp39_bay3d_cfg* pBtnr = &isp_cfg.others.bay3d_cfg;
pBtnr->bypass_en = tnr.bypass_en;
pBtnr->iirsparse_en = tnr.iirsparse_en;
pBtnr->transf_bypass_en = tnr.transf_bypass_en;
pBtnr->sigma_curve_double_en = tnr.sigma_curve_double_en;
pBtnr->cur_spnr_bypass_en = tnr.cur_spnr_bypass_en;
pBtnr->cur_spnr_sigma_idxfilt_bypass_en = tnr.cur_spnr_sigma_idxfilt_bypass_en;
pBtnr->cur_spnr_sigma_curve_double_en = tnr.cur_spnr_sigma_curve_double_en;
pBtnr->pre_spnr_bypass_en = tnr.pre_spnr_bypass_en;
pBtnr->pre_spnr_sigma_idxfilt_bypass_en = tnr.pre_spnr_sigma_idxfilt_bypass_en;
pBtnr->pre_spnr_sigma_curve_double_en = tnr.pre_spnr_sigma_curve_double_en;
pBtnr->lpf_hi_bypass_en = tnr.lpf_hi_bypass_en;
pBtnr->lo_diff_vfilt_bypass_en = tnr.lo_diff_vfilt_bypass_en;
pBtnr->lpf_lo_bypass_en = tnr.lpf_lo_bypass_en;
pBtnr->lo_wgt_hfilt_en = tnr.lo_wgt_hfilt_en;
pBtnr->lo_diff_hfilt_en = tnr.lo_diff_hfilt_en;
pBtnr->sig_hfilt_en = tnr.sig_hfilt_en;
//pBtnr->gkalman_en = tnr.gkalman_en;
pBtnr->spnr_pre_sigma_use_en = tnr.spnr_pre_sigma_use_en;
pBtnr->lo_detection_mode = tnr.lo_detection_mode;
pBtnr->md_wgt_out_en = tnr.md_wgt_out_en;
pBtnr->md_wgt_out_en = tnr.md_wgt_out_en;
pBtnr->curdbg_out_en = tnr.curdbg_out_en;
pBtnr->noisebal_mode = tnr.noisebal_mode;
pBtnr->md_bypass_en = tnr.md_bypass_en;
pBtnr->iirspnr_out_en = tnr.iirspnr_out_en;
pBtnr->lomdwgt_dbg_en = tnr.lomdwgt_dbg_en;
pBtnr->transf_mode = tnr.transf_mode;
pBtnr->wgt_cal_mode = tnr.wgt_cal_mode;
pBtnr->mge_wgt_ds_mode = tnr.mge_wgt_ds_mode;
pBtnr->kalman_wgt_ds_mode = tnr.kalman_wgt_ds_mode;
pBtnr->mge_wgt_hdr_sht_thred = tnr.mge_wgt_hdr_sht_thred;
pBtnr->sigma_calc_mge_wgt_hdr_sht_thred = tnr.sigma_calc_mge_wgt_hdr_sht_thred;
pBtnr->transf_mode_offset = tnr.transf_mode_offset;
pBtnr->transf_mode_scale = tnr.transf_mode_scale;
pBtnr->itransf_mode_offset = tnr.itransf_mode_offset;
pBtnr->transf_data_max_limit = tnr.transf_data_max_limit;
pBtnr->cur_spnr_sigma_hdr_sht_scale = tnr.cur_spnr_sigma_hdr_sht_scale;
pBtnr->cur_spnr_sigma_scale = tnr.cur_spnr_sigma_scale;
for (int i = 0; i < 16; i++) {
pBtnr->cur_spnr_luma_sigma_x[i] = tnr.cur_spnr_luma_sigma_x[i];
pBtnr->cur_spnr_luma_sigma_y[i] = tnr.cur_spnr_luma_sigma_y[i];
pBtnr->pre_spnr_luma_sigma_x[i] = tnr.pre_spnr_luma_sigma_x[i];
pBtnr->pre_spnr_luma_sigma_y[i] = tnr.pre_spnr_luma_sigma_y[i];
}
pBtnr->cur_spnr_sigma_rgain_offset = tnr.cur_spnr_sigma_rgain_offset;
pBtnr->cur_spnr_sigma_bgain_offset = tnr.cur_spnr_sigma_bgain_offset;
pBtnr->cur_spnr_sigma_hdr_sht_offset = tnr.cur_spnr_sigma_hdr_sht_offset;
pBtnr->cur_spnr_sigma_offset = tnr.cur_spnr_sigma_offset;
pBtnr->cur_spnr_pix_diff_max_limit = tnr.cur_spnr_pix_diff_max_limit;
pBtnr->cur_spnr_wgt_cal_offset = tnr.cur_spnr_wgt_cal_offset;
pBtnr->cur_spnr_wgt = tnr.cur_spnr_wgt;
pBtnr->pre_spnr_wgt = tnr.pre_spnr_wgt;
for (int i = 0; i < 9; i++) {
pBtnr->cur_spnr_space_rb_wgt[i] = tnr.cur_spnr_space_rb_wgt[i];
pBtnr->cur_spnr_space_gg_wgt[i] = tnr.cur_spnr_space_gg_wgt[i];
pBtnr->pre_spnr_space_rb_wgt[i] = tnr.pre_spnr_space_rb_wgt[i];
pBtnr->pre_spnr_space_gg_wgt[i] = tnr.pre_spnr_space_gg_wgt[i];
pBtnr->tnr_lpf_hi_coeff[i] = tnr.tnr_lpf_hi_coeff[i];
pBtnr->tnr_lpf_lo_coeff[i] = tnr.tnr_lpf_lo_coeff[i];
}
pBtnr->pre_spnr_sigma_hdr_sht_scale = tnr.pre_spnr_sigma_hdr_sht_scale;
pBtnr->pre_spnr_sigma_scale = tnr.pre_spnr_sigma_scale;
pBtnr->pre_spnr_sigma_rgain_offset = tnr.pre_spnr_sigma_rgain_offset;
pBtnr->pre_spnr_sigma_bgain_offset = tnr.pre_spnr_sigma_bgain_offset;
pBtnr->pre_spnr_sigma_hdr_sht_offset = tnr.pre_spnr_sigma_hdr_sht_offset;
pBtnr->pre_spnr_sigma_offset = tnr.pre_spnr_sigma_offset;
pBtnr->pre_spnr_pix_diff_max_limit = tnr.pre_spnr_pix_diff_max_limit;
pBtnr->pre_spnr_wgt_cal_offset = tnr.pre_spnr_wgt_cal_offset;
pBtnr->cur_spnr_wgt_cal_scale = tnr.cur_spnr_wgt_cal_scale;
pBtnr->pre_spnr_wgt_cal_scale = tnr.pre_spnr_wgt_cal_scale;
for (int i = 0; i < 20; i++) {
pBtnr->tnr_luma_sigma_x[i] = tnr.tnr_luma_sigma_x[i];
pBtnr->tnr_luma_sigma_y[i] = tnr.tnr_luma_sigma_y[i];
}
pBtnr->tnr_wgt_filt_coeff0 = tnr.tnr_wgt_filt_coeff0;
pBtnr->tnr_wgt_filt_coeff1 = tnr.tnr_wgt_filt_coeff1;
pBtnr->tnr_wgt_filt_coeff2 = tnr.tnr_wgt_filt_coeff2;
pBtnr->tnr_sigma_scale = tnr.tnr_sigma_scale;
pBtnr->tnr_sigma_hdr_sht_scale = tnr.tnr_sigma_hdr_sht_scale;
pBtnr->tnr_sig_vfilt_wgt = tnr.tnr_sig_vfilt_wgt;
pBtnr->tnr_lo_diff_vfilt_wgt = tnr.tnr_lo_diff_vfilt_wgt;
pBtnr->tnr_lo_wgt_vfilt_wgt = tnr.tnr_lo_wgt_vfilt_wgt;
pBtnr->tnr_sig_first_line_scale = tnr.tnr_sig_first_line_scale;
pBtnr->tnr_lo_diff_first_line_scale = tnr.tnr_lo_diff_first_line_scale;
pBtnr->tnr_lo_wgt_cal_offset = tnr.tnr_lo_wgt_cal_offset;
pBtnr->tnr_lo_wgt_cal_scale = tnr.tnr_lo_wgt_cal_scale;
pBtnr->tnr_low_wgt_cal_max_limit = tnr.tnr_low_wgt_cal_max_limit;
pBtnr->tnr_mode0_base_ratio = tnr.tnr_mode0_base_ratio;
pBtnr->tnr_lo_diff_wgt_cal_offset = tnr.tnr_lo_diff_wgt_cal_offset;
pBtnr->tnr_lo_diff_wgt_cal_scale = tnr.tnr_lo_diff_wgt_cal_scale;
pBtnr->tnr_lo_mge_pre_wgt_offset = tnr.tnr_lo_mge_pre_wgt_offset;
pBtnr->tnr_lo_mge_pre_wgt_scale = tnr.tnr_lo_mge_pre_wgt_scale;
pBtnr->tnr_mode0_lo_wgt_scale = tnr.tnr_mode0_lo_wgt_scale;
pBtnr->tnr_mode0_lo_wgt_hdr_sht_scale = tnr.tnr_mode0_lo_wgt_hdr_sht_scale;
pBtnr->tnr_mode1_lo_wgt_scale = tnr.tnr_mode1_lo_wgt_scale;
pBtnr->tnr_mode1_lo_wgt_hdr_sht_scale = tnr.tnr_mode1_lo_wgt_hdr_sht_scale;
pBtnr->tnr_mode1_wgt_scale = tnr.tnr_mode1_wgt_scale;
pBtnr->tnr_mode1_wgt_hdr_sht_scale = tnr.tnr_mode1_wgt_hdr_sht_scale;
pBtnr->tnr_mode1_lo_wgt_offset = tnr.tnr_mode1_lo_wgt_offset;
pBtnr->tnr_mode1_lo_wgt_hdr_sht_offset = tnr.tnr_mode1_lo_wgt_hdr_sht_offset;
pBtnr->tnr_auto_sigma_count_wgt_thred = tnr.tnr_auto_sigma_count_wgt_thred;
pBtnr->tnr_mode1_wgt_min_limit = tnr.tnr_mode1_wgt_min_limit;
pBtnr->tnr_mode1_wgt_offset = tnr.tnr_mode1_wgt_offset;
pBtnr->tnr_out_sigma_sq = tnr.tnr_out_sigma_sq;
pBtnr->tnr_lo_wgt_clip_min_limit = tnr.tnr_lo_wgt_clip_min_limit;
pBtnr->tnr_lo_wgt_clip_hdr_sht_min_limit = tnr.tnr_lo_wgt_clip_hdr_sht_min_limit;
pBtnr->tnr_lo_wgt_clip_max_limit = tnr.tnr_lo_wgt_clip_max_limit;
pBtnr->tnr_lo_wgt_clip_hdr_sht_max_limit = tnr.tnr_lo_wgt_clip_hdr_sht_max_limit;
pBtnr->tnr_hi_wgt_clip_min_limit = tnr.tnr_hi_wgt_clip_min_limit;
pBtnr->tnr_hi_wgt_clip_hdr_sht_min_limit = tnr.tnr_hi_wgt_clip_hdr_sht_min_limit;
pBtnr->tnr_hi_wgt_clip_max_limit = tnr.tnr_hi_wgt_clip_max_limit;
pBtnr->tnr_hi_wgt_clip_hdr_sht_max_limit = tnr.tnr_hi_wgt_clip_hdr_sht_max_limit;
pBtnr->tnr_cur_spnr_hi_wgt_min_limit = tnr.tnr_cur_spnr_hi_wgt_min_limit;
pBtnr->tnr_pre_spnr_hi_wgt_min_limit = tnr.tnr_pre_spnr_hi_wgt_min_limit;
pBtnr->tnr_pix_max = tnr.tnr_pix_max;
pBtnr->tnr_auto_sigma_count_th = tnr.tnr_auto_sigma_count_th;
pBtnr->lowgt_ctrl = tnr.hw_bay3d_lowgt_ctrl;
pBtnr->lowgt_offint = tnr.hw_bay3d_lowgt_offinit;
pBtnr->tnr_motion_nr_strg = tnr.tnr_motion_nr_strg;
pBtnr->tnr_gain_max = tnr.tnr_gain_max;
LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
}
#endif
#endif
#if RKAIQ_HAVE_YNR_V24
#if USE_NEWSTRUCT
void Isp39Params::convertAiqYnrToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_ynr_params_t *ynr_attr) {
isp_cfg.module_ens |= ISP3X_MODULE_YNR;
isp_cfg.module_en_update |= ISP3X_MODULE_YNR;
isp_cfg.module_cfg_update |= ISP3X_MODULE_YNR;
rk_aiq_ynr34_params_cvt(&ynr_attr->result, &isp_cfg, &mCommonCvtInfo);
}
#else
void Isp39Params::convertAiqYnrToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_ynr_v39_t& ynr) {
isp_cfg.module_en_update |= ISP3X_MODULE_YNR;
isp_cfg.module_ens |= ISP3X_MODULE_YNR;
isp_cfg.module_cfg_update |= ISP3X_MODULE_YNR;
struct isp39_ynr_cfg* pYnr = &isp_cfg.others.ynr_cfg;
pYnr->lospnr_bypass = ynr.lospnr_bypass;
pYnr->hispnr_bypass = ynr.hispnr_bypass;
pYnr->exgain_bypass = ynr.exgain_bypass;
pYnr->global_set_gain = ynr.global_set_gain;
pYnr->gain_merge_alpha = ynr.gain_merge_alpha;
pYnr->rnr_en = ynr.rnr_en;
pYnr->rnr_max_radius = ynr.rnr_max_radius;
pYnr->local_gain_scale = ynr.local_gain_scale;
pYnr->rnr_center_coorh = ynr.rnr_center_coorh;
pYnr->rnr_center_coorv = ynr.rnr_center_coorv;
pYnr->ds_filt_soft_thred_scale = ynr.ds_filt_soft_thred_scale;
pYnr->ds_img_edge_scale = ynr.ds_img_edge_scale;
pYnr->ds_filt_wgt_thred_scale = ynr.ds_filt_wgt_thred_scale;
pYnr->ds_filt_local_gain_alpha = ynr.ds_filt_local_gain_alpha;
pYnr->ds_iir_init_wgt_scale = ynr.ds_iir_init_wgt_scale;
pYnr->ds_filt_center_wgt = ynr.ds_filt_center_wgt;
pYnr->ds_filt_inv_strg = ynr.ds_filt_inv_strg;
pYnr->lospnr_wgt = ynr.lospnr_wgt;
pYnr->lospnr_center_wgt = ynr.lospnr_center_wgt;
pYnr->lospnr_strg = ynr.lospnr_strg;
pYnr->lospnr_dist_vstrg_scale = ynr.lospnr_dist_vstrg_scale;
pYnr->lospnr_dist_hstrg_scale = ynr.lospnr_dist_hstrg_scale;
pYnr->pre_filt_coeff0 = ynr.pre_filt_coeff0;
pYnr->pre_filt_coeff1 = ynr.pre_filt_coeff1;
pYnr->pre_filt_coeff2 = ynr.pre_filt_coeff2;
for (int i = 0; i < ISP39_YNR_LOW_GAIN_ADJ_NUM; i++)
pYnr->lospnr_gain2strg_val[i] = ynr.lospnr_gain2strg_val[i];
for (int i = 0; i < ISP39_YNR_XY_NUM; i++) pYnr->luma2sima_idx[i] = ynr.luma2sima_idx[i];
for (int i = 0; i < ISP39_YNR_XY_NUM; i++) pYnr->luma2sima_val[i] = ynr.luma2sima_val[i];
for (int i = 0; i < ISP39_YNR_XY_NUM; i++) pYnr->radius2strg_val[i] = ynr.radius2strg_val[i];
pYnr->hispnr_strong_edge = ynr.hispnr_strong_edge;
pYnr->hispnr_sigma_min_limit = ynr.hispnr_sigma_min_limit;
pYnr->hispnr_local_gain_alpha = ynr.hispnr_local_gain_alpha;
pYnr->hispnr_strg = ynr.hispnr_strg;
for (int i = 0; i < ISP39_YNR_NLM_COE_NUM; i++)
pYnr->hispnr_filt_coeff[i] = ynr.hispnr_filt_coeff[i];
pYnr->hispnr_filt_wgt_offset = ynr.hispnr_filt_wgt_offset;
pYnr->hispnr_filt_center_wgt = ynr.hispnr_filt_center_wgt;
pYnr->hispnr_filt_wgt = ynr.hispnr_filt_wgt;
pYnr->hispnr_gain_thred = ynr.hispnr_gain_thred;
LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
}
#endif
#endif
#if (RKAIQ_HAVE_CNR_V31)
#if USE_NEWSTRUCT
void Isp39Params::convertAiqCnrToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_cnr_params_t *attr) {
isp_cfg.module_ens |= ISP3X_MODULE_CNR;
isp_cfg.module_en_update |= ISP3X_MODULE_CNR;
isp_cfg.module_cfg_update |= ISP3X_MODULE_CNR;
//struct isp39_cnr_cfg* pCnr = &isp_cfg.others.cnr_cfg;
rk_aiq_cnr34_params_cvt(&attr->result, &isp_cfg, &mCommonCvtInfo);
}
#else
void Isp39Params::convertAiqUvnrToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_cnr_v39_t& uvnr) {
LOGD_ANR("%s:%d enter! enable:%d\n", __FUNCTION__, __LINE__, uvnr.cnr_en);
if (uvnr.cnr_en) {
isp_cfg.module_ens |= ISP3X_MODULE_CNR;
} else {
isp_cfg.module_ens |= ISP3X_MODULE_CNR;
}
isp_cfg.module_en_update |= ISP3X_MODULE_CNR;
isp_cfg.module_cfg_update |= ISP3X_MODULE_CNR;
// ynr cnr sharp should open together for test
#if 0
isp_cfg.module_ens |= ISP3X_MODULE_YNR;
isp_cfg.module_ens |= ISP3X_MODULE_SHARP;
isp_cfg.module_en_update |= ISP3X_MODULE_YNR;
isp_cfg.module_cfg_update |= ISP3X_MODULE_YNR;
isp_cfg.module_en_update |= ISP3X_MODULE_SHARP;
isp_cfg.module_cfg_update |= ISP3X_MODULE_SHARP;
struct isp39_ynr_cfg* pYnr = &isp_cfg.others.ynr_cfg;
pYnr->lospnr_bypass = 1;
pYnr->hispnr_bypass = 1;
struct isp39_sharp_cfg* pSharp = &isp_cfg.others.sharp_cfg;
pSharp->bypass = 1;
#endif
struct isp39_cnr_cfg* pCnr = &isp_cfg.others.cnr_cfg;
pCnr->exgain_bypass = uvnr.exgain_bypass;
pCnr->yuv422_mode = uvnr.yuv422_mode;
pCnr->thumb_mode = uvnr.thumb_mode ;
pCnr->hiflt_wgt0_mode = uvnr.hiflt_wgt0_mode;
pCnr->loflt_coeff = uvnr.loflt_coeff;
pCnr->global_gain = uvnr.global_gain;
pCnr->global_gain_alpha = uvnr.global_gain_alpha;
pCnr->local_gain_scale = uvnr.local_gain_scale;
pCnr->lobfflt_vsigma_uv = uvnr.lobfflt_vsigma_uv;
pCnr->lobfflt_vsigma_y = uvnr.lobfflt_vsigma_y;
pCnr->lobfflt_alpha = uvnr.lobfflt_alpha;
pCnr->thumb_bf_coeff0 = uvnr.thumb_bf_coeff[0];
pCnr->thumb_bf_coeff1 = uvnr.thumb_bf_coeff[1];
pCnr->thumb_bf_coeff2 = uvnr.thumb_bf_coeff[2];
pCnr->thumb_bf_coeff3 = uvnr.thumb_bf_coeff[3];
pCnr->loflt_uv_gain = uvnr.loflt_uv_gain;
pCnr->loflt_vsigma = uvnr.loflt_vsigma;
pCnr->exp_x_shift_bit = uvnr.exp_x_shift_bit;
pCnr->loflt_wgt_slope = uvnr.loflt_wgt_slope;
pCnr->loflt_wgt_min_thred = uvnr.loflt_wgt_min_thred;
pCnr->loflt_wgt_max_limit = uvnr.loflt_wgt_max_limit;
for (int i = 0; i < 6; i++) {
pCnr->gaus_flt_coeff[i] = uvnr.gaus_flt_coeff[i];
}
pCnr->gaus_flt_alpha = uvnr.gaus_flt_alpha;
pCnr->hiflt_wgt_min_limit = uvnr.hiflt_wgt_min_limit;
pCnr->hiflt_alpha = uvnr.hiflt_alpha;
if (!uvnr.cnr_en) {
pCnr->hiflt_alpha = 0x000;
LOGD_ANR("0x0024 cnr bypss, global_alpha:0x%x 0x%x\n", uvnr.hiflt_alpha, pCnr->hiflt_alpha);
}
pCnr->hiflt_uv_gain = uvnr.hiflt_uv_gain;
pCnr->hiflt_global_vsigma = uvnr.hiflt_global_vsigma;
pCnr->hiflt_cur_wgt = uvnr.hiflt_cur_wgt;
pCnr->adj_offset = uvnr.adj_offset;
pCnr->adj_scale = uvnr.adj_scale;
for (int i = 0; i < 13; i++) {
pCnr->sgm_ratio[i] = uvnr.sgm_ratio[i];
}
pCnr->loflt_global_sgm_ratio = uvnr.loflt_global_sgm_ratio;
pCnr->loflt_global_sgm_ratio_alpha = uvnr.loflt_global_sgm_ratio_alpha;
for (int i = 0; i < 13; i++) {
pCnr->cur_wgt[i] = uvnr.cur_wgt[i];
}
for (int i = 0; i < 8; i++) {
pCnr->hiflt_vsigma_idx[i] = uvnr.hiflt_vsigma_idx[i];
pCnr->hiflt_vsigma[i] = uvnr.hiflt_vsigma[i];
}
LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
}
#endif
#endif
#if RKAIQ_HAVE_DEBAYER_V3
void Isp39Params::convertAiqAdebayerToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_debayer_v39_t & debayer)
{
if (debayer.updatecfg) {
if (debayer.enable) {
isp_cfg.module_ens |= ISP2X_MODULE_DEBAYER;
isp_cfg.module_en_update |= ISP2X_MODULE_DEBAYER;
isp_cfg.module_cfg_update |= ISP2X_MODULE_DEBAYER;
} else {
isp_cfg.module_ens &= ~ISP2X_MODULE_DEBAYER;
isp_cfg.module_en_update |= ISP2X_MODULE_DEBAYER;
}
} else {
return;
}
/* CONTROL */
isp_cfg.others.debayer_cfg.filter_c_en = debayer.filter_c_en;
isp_cfg.others.debayer_cfg.filter_g_en = debayer.filter_g_en;
/* LUMA_DX */
isp_cfg.others.debayer_cfg.luma_dx[0] = debayer.luma_dx[0];
isp_cfg.others.debayer_cfg.luma_dx[1] = debayer.luma_dx[1];
isp_cfg.others.debayer_cfg.luma_dx[2] = debayer.luma_dx[2];
isp_cfg.others.debayer_cfg.luma_dx[3] = debayer.luma_dx[3];
isp_cfg.others.debayer_cfg.luma_dx[4] = debayer.luma_dx[4];
isp_cfg.others.debayer_cfg.luma_dx[5] = debayer.luma_dx[5];
isp_cfg.others.debayer_cfg.luma_dx[6] = debayer.luma_dx[6];
/* G_INTERP */
isp_cfg.others.debayer_cfg.clip_en = debayer.clip_en;
isp_cfg.others.debayer_cfg.dist_scale = debayer.dist_scale;
isp_cfg.others.debayer_cfg.thed0 = debayer.thed0;
isp_cfg.others.debayer_cfg.thed1 = debayer.thed1;
isp_cfg.others.debayer_cfg.select_thed = debayer.select_thed;
isp_cfg.others.debayer_cfg.max_ratio = debayer.max_ratio;
/* G_INTERP_FILTER1 */
isp_cfg.others.debayer_cfg.filter1_coe1 = debayer.filter1_coe1;
isp_cfg.others.debayer_cfg.filter1_coe2 = debayer.filter1_coe2;
isp_cfg.others.debayer_cfg.filter1_coe3 = debayer.filter1_coe3;
isp_cfg.others.debayer_cfg.filter1_coe4 = debayer.filter1_coe4;
/* G_INTERP_FILTER2 */
isp_cfg.others.debayer_cfg.filter2_coe1 = debayer.filter2_coe1;
isp_cfg.others.debayer_cfg.filter2_coe2 = debayer.filter2_coe2;
isp_cfg.others.debayer_cfg.filter2_coe3 = debayer.filter2_coe3;
isp_cfg.others.debayer_cfg.filter2_coe4 = debayer.filter2_coe4;
/* G_INTERP_OFFSET_ALPHA */
isp_cfg.others.debayer_cfg.gain_offset = debayer.gain_offset;
isp_cfg.others.debayer_cfg.gradloflt_alpha = debayer.gradloflt_alpha;
isp_cfg.others.debayer_cfg.wgt_alpha = debayer.wgt_alpha;
/* G_INTERP_DRCT_OFFSET */
for (int i = 0; i < RK_DEBAYER_V31_LUMA_POINT_NUM; i++) {
isp_cfg.others.debayer_cfg.drct_offset[i] = debayer.drct_offset[i];
}
/* G_FILTER_MODE_OFFSET */
isp_cfg.others.debayer_cfg.gfilter_mode = debayer.gfilter_mode;
isp_cfg.others.debayer_cfg.bf_ratio = debayer.bf_ratio;
isp_cfg.others.debayer_cfg.offset = debayer.offset;
/* G_FILTER_FILTER */
isp_cfg.others.debayer_cfg.filter_coe0 = debayer.filter_coe0;
isp_cfg.others.debayer_cfg.filter_coe1 = debayer.filter_coe1;
isp_cfg.others.debayer_cfg.filter_coe2 = debayer.filter_coe2;
/* G_FILTER_VSIGMA */
for(int i = 0; i < RK_DEBAYER_V31_LUMA_POINT_NUM; i++)
{
isp_cfg.others.debayer_cfg.vsigma[i] = debayer.vsigma[i];
}
/* C_FILTER_GUIDE_GAUS */
isp_cfg.others.debayer_cfg.guid_gaus_coe0 = debayer.guid_gaus_coe0;
isp_cfg.others.debayer_cfg.guid_gaus_coe1 = debayer.guid_gaus_coe1;
isp_cfg.others.debayer_cfg.guid_gaus_coe2 = debayer.guid_gaus_coe2;
/* C_FILTER_CE_GAUS */
isp_cfg.others.debayer_cfg.ce_gaus_coe0 = debayer.ce_gaus_coe0;
isp_cfg.others.debayer_cfg.ce_gaus_coe1 = debayer.ce_gaus_coe1;
isp_cfg.others.debayer_cfg.ce_gaus_coe2 = debayer.ce_gaus_coe2;
/* C_FILTER_ALPHA_GAUS */
isp_cfg.others.debayer_cfg.alpha_gaus_coe0 = debayer.alpha_gaus_coe0;
isp_cfg.others.debayer_cfg.alpha_gaus_coe1 = debayer.alpha_gaus_coe1;
isp_cfg.others.debayer_cfg.alpha_gaus_coe2 = debayer.alpha_gaus_coe2;
/* C_FILTER_IIR */
isp_cfg.others.debayer_cfg.ce_sgm = debayer.ce_sgm;
isp_cfg.others.debayer_cfg.exp_shift = debayer.exp_shift;
isp_cfg.others.debayer_cfg.wgtslope = debayer.wgtslope;
isp_cfg.others.debayer_cfg.wet_clip = debayer.wet_clip;
isp_cfg.others.debayer_cfg.wet_ghost = debayer.wet_ghost;
/* C_FILTER_BF */
isp_cfg.others.debayer_cfg.bf_clip = debayer.bf_clip;
isp_cfg.others.debayer_cfg.bf_curwgt = debayer.bf_curwgt;
isp_cfg.others.debayer_cfg.bf_sgm = debayer.bf_sgm;
/* C_FILTER_LOG_OFFSET */
isp_cfg.others.debayer_cfg.log_en = debayer.log_en;
isp_cfg.others.debayer_cfg.loghf_offset = debayer.loghf_offset;
isp_cfg.others.debayer_cfg.loggd_offset = debayer.loggd_offset;
/* C_FILTER_ALPHA */
isp_cfg.others.debayer_cfg.alpha_offset = debayer.alpha_offset;
isp_cfg.others.debayer_cfg.alpha_scale = debayer.alpha_scale;
/* C_FILTER_EDGE */
isp_cfg.others.debayer_cfg.edge_offset = debayer.edge_offset;
isp_cfg.others.debayer_cfg.edge_scale = debayer.edge_scale;
}
#endif
#if RKAIQ_HAVE_MERGE_V12
void Isp39Params::convertAiqMergeToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
const rk_aiq_isp_merge_v32_t& amerge_data) {
isp_cfg.module_en_update |= 1LL << RK_ISP2X_HDRMGE_ID;
isp_cfg.module_ens |= 1LL << RK_ISP2X_HDRMGE_ID;
isp_cfg.module_cfg_update |= 1LL << RK_ISP2X_HDRMGE_ID;
isp_cfg.others.hdrmge_cfg.mode = amerge_data.Merge_v12.mode;
isp_cfg.others.hdrmge_cfg.gain0_inv = amerge_data.Merge_v12.gain0_inv;
isp_cfg.others.hdrmge_cfg.gain0 = amerge_data.Merge_v12.gain0;
isp_cfg.others.hdrmge_cfg.gain1_inv = amerge_data.Merge_v12.gain1_inv;
isp_cfg.others.hdrmge_cfg.gain1 = amerge_data.Merge_v12.gain1;
isp_cfg.others.hdrmge_cfg.gain2 = amerge_data.Merge_v12.gain2;
isp_cfg.others.hdrmge_cfg.lm_dif_0p15 = amerge_data.Merge_v12.lm_dif_0p15;
isp_cfg.others.hdrmge_cfg.lm_dif_0p9 = amerge_data.Merge_v12.lm_dif_0p9;
isp_cfg.others.hdrmge_cfg.ms_diff_0p15 = amerge_data.Merge_v12.ms_dif_0p15;
isp_cfg.others.hdrmge_cfg.ms_dif_0p8 = amerge_data.Merge_v12.ms_dif_0p8;
for (int i = 0; i < ISP3X_HDRMGE_L_CURVE_NUM; i++) {
isp_cfg.others.hdrmge_cfg.curve.curve_0[i] = amerge_data.Merge_v12.l0_y[i];
isp_cfg.others.hdrmge_cfg.curve.curve_1[i] = amerge_data.Merge_v12.l1_y[i];
}
for (int i = 0; i < ISP3X_HDRMGE_E_CURVE_NUM; i++)
isp_cfg.others.hdrmge_cfg.e_y[i] = amerge_data.Merge_v12.e_y[i];
// merge v11 add
isp_cfg.others.hdrmge_cfg.s_base = amerge_data.Merge_v12.s_base;
isp_cfg.others.hdrmge_cfg.ms_thd0 = amerge_data.Merge_v12.ms_thd0;
isp_cfg.others.hdrmge_cfg.ms_thd1 = amerge_data.Merge_v12.ms_thd1;
isp_cfg.others.hdrmge_cfg.ms_scl = amerge_data.Merge_v12.ms_scl;
isp_cfg.others.hdrmge_cfg.lm_thd0 = amerge_data.Merge_v12.lm_thd0;
isp_cfg.others.hdrmge_cfg.lm_thd1 = amerge_data.Merge_v12.lm_thd1;
isp_cfg.others.hdrmge_cfg.lm_scl = amerge_data.Merge_v12.lm_scl;
// merge v12 add
isp_cfg.others.hdrmge_cfg.each_raw_en = amerge_data.Merge_v12.each_raw_en;
isp_cfg.others.hdrmge_cfg.each_raw_gain0 = amerge_data.Merge_v12.each_raw_gain0;
isp_cfg.others.hdrmge_cfg.each_raw_gain1 = amerge_data.Merge_v12.each_raw_gain1;
for (int i = 0; i < ISP3X_HDRMGE_E_CURVE_NUM; i++) {
isp_cfg.others.hdrmge_cfg.l_raw0[i] = amerge_data.Merge_v12.l_raw0[i];
isp_cfg.others.hdrmge_cfg.l_raw1[i] = amerge_data.Merge_v12.l_raw1[i];
}
#if 0
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain0_inv %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain0_inv);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain0 %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain0);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain1_inv %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain1_inv);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain1 %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain1);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain2 %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain2);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_dif_0p15 %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_dif_0p15);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_dif_0p9 %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_dif_0p9);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_diff_0p15 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_diff_0p15);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_dif_0p8 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_dif_0p8);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: s_base %d", __LINE__, isp_cfg.others.hdrmge_cfg.s_base);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: sw_hdrmge_ms_thd0 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_thd0);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_thd0 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_thd0);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_thd1 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_thd1);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_scl %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_scl);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_thd0 %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_thd0);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_thd1 %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_thd1);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_scl %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_scl);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: each_raw_en 0x%x each_raw_gain0 0x%x each_raw_gain1 0x%x\n", __LINE__, isp_cfg.others.hdrmge_cfg.each_raw_en,
isp_cfg.others.hdrmge_cfg.each_raw_gain0, isp_cfg.others.hdrmge_cfg.each_raw_gain1);
for(int i = 0 ; i < 17; i++)
{
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: curve_0[%d] %d", __LINE__, i, isp_cfg.others.hdrmge_cfg.curve.curve_0[i]);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: curve_1[%d] %d", __LINE__, i, isp_cfg.others.hdrmge_cfg.curve.curve_1[i]);
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: e_y[%d] %d", __LINE__, i, isp_cfg.others.hdrmge_cfg.e_y[i]);
}
#endif
}
#endif
#if RKAIQ_HAVE_DEHAZE_V14
#ifdef USE_NEWSTRUCT
void Isp39Params::convertAiqDehazeToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_dehaze_params_t* dehaze_attr) {
//hwi_api_dehaze23_params_check(&dehaze_attr->result);
if (dehaze_attr->en) {
isp_cfg.module_en_update |= ISP2X_MODULE_DHAZ;
isp_cfg.module_ens |= ISP2X_MODULE_DHAZ;
isp_cfg.module_cfg_update |= ISP2X_MODULE_DHAZ;
} else {
isp_cfg.module_en_update |= ISP2X_MODULE_DHAZ;
isp_cfg.module_ens &= ~(ISP2X_MODULE_DHAZ);
isp_cfg.module_cfg_update &= ~(ISP2X_MODULE_DHAZ);
return;
}
//hwi_api_dehaze23_params_cvt(&dehaze_attr->result, &isp_cfg);
//hwi_api_dehaze23_params_dump(&dehaze_attr->result, &isp_cfg.others.dhaz_cfg);
}
#else
void Isp39Params::convertAiqAdehazeToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
const rk_aiq_isp_dehaze_v39_t& dhaze) {
if (dhaze.enable) {
isp_cfg.module_en_update |= ISP2X_MODULE_DHAZ;
isp_cfg.module_ens |= ISP2X_MODULE_DHAZ;
isp_cfg.module_cfg_update |= ISP2X_MODULE_DHAZ;
} else {
isp_cfg.module_en_update |= ISP2X_MODULE_DHAZ;
isp_cfg.module_ens &= ~(ISP2X_MODULE_DHAZ);
isp_cfg.module_cfg_update &= ~(ISP2X_MODULE_DHAZ);
return;
}
struct isp39_dhaz_cfg* cfg = &isp_cfg.others.dhaz_cfg;
cfg->dc_en = dhaze.ProcResV14.dc_en;
cfg->hist_en = dhaze.ProcResV14.hist_en;
cfg->map_mode = dhaze.ProcResV14.map_mode;
cfg->mem_mode = dhaze.ProcResV14.mem_mode;
cfg->mem_force = dhaze.ProcResV14.mem_force;
cfg->air_lc_en = dhaze.ProcResV14.air_lc_en;
cfg->enhance_en = dhaze.ProcResV14.enhance_en;
cfg->soft_wr_en = dhaze.ProcResV14.soft_wr_en;
cfg->round_en = dhaze.ProcResV14.round_en;
cfg->color_deviate_en = dhaze.ProcResV14.color_deviate_en;
cfg->enh_luma_en = dhaze.ProcResV14.enh_luma_en;
cfg->dc_min_th = dhaze.ProcResV14.dc_min_th;
cfg->dc_max_th = dhaze.ProcResV14.dc_max_th;
cfg->yhist_th = dhaze.ProcResV14.yhist_th;
cfg->yblk_th = dhaze.ProcResV14.yblk_th;
cfg->bright_min = dhaze.ProcResV14.bright_min;
cfg->bright_max = dhaze.ProcResV14.bright_max;
cfg->wt_max = dhaze.ProcResV14.wt_max;
cfg->air_min = dhaze.ProcResV14.air_min;
cfg->air_max = dhaze.ProcResV14.air_max;
cfg->dark_th = dhaze.ProcResV14.dark_th;
cfg->tmax_base = dhaze.ProcResV14.tmax_base;
cfg->tmax_off = dhaze.ProcResV14.tmax_off;
cfg->tmax_max = dhaze.ProcResV14.tmax_max;
cfg->enhance_chroma = dhaze.ProcResV14.enhance_chroma;
cfg->enhance_value = dhaze.ProcResV14.enhance_value;
cfg->stab_fnum = dhaze.ProcResV14.stab_fnum;
cfg->iir_sigma = dhaze.ProcResV14.iir_sigma;
cfg->iir_wt_sigma = dhaze.ProcResV14.iir_wt_sigma;
cfg->iir_air_sigma = dhaze.ProcResV14.iir_air_sigma;
cfg->iir_tmax_sigma = dhaze.ProcResV14.iir_tmax_sigma;
cfg->iir_pre_wet = dhaze.ProcResV14.iir_pre_wet;
cfg->cfg_alpha = dhaze.ProcResV14.cfg_alpha;
cfg->cfg_air = dhaze.ProcResV14.cfg_air;
cfg->cfg_wt = dhaze.ProcResV14.cfg_wt;
cfg->cfg_tmax = dhaze.ProcResV14.cfg_tmax;
cfg->space_sigma_cur = dhaze.ProcResV14.space_sigma_cur;
cfg->space_sigma_pre = dhaze.ProcResV14.space_sigma_pre;
cfg->range_sima = dhaze.ProcResV14.range_sima;
cfg->bf_weight = dhaze.ProcResV14.bf_weight;
cfg->dc_weitcur = dhaze.ProcResV14.dc_weitcur;
cfg->gaus_h0 = dhaze.ProcResV14.gaus_h0;
cfg->gaus_h1 = dhaze.ProcResV14.gaus_h1;
cfg->gaus_h2 = dhaze.ProcResV14.gaus_h2;
cfg->adp_wt_wr = dhaze.ProcResV14.adp_wt_wr;
cfg->adp_air_wr = dhaze.ProcResV14.adp_air_wr;
cfg->adp_tmax_wr = dhaze.ProcResV14.adp_tmax_wr;
cfg->hist_k = dhaze.ProcResV14.hist_k;
cfg->hist_th_off = dhaze.ProcResV14.hist_th_off;
cfg->hist_min = dhaze.ProcResV14.hist_min;
cfg->blk_het = dhaze.ProcResV14.blk_het;
cfg->blk_wid = dhaze.ProcResV14.blk_wid;
cfg->thumb_row = dhaze.ProcResV14.thumb_row;
cfg->thumb_col = dhaze.ProcResV14.thumb_col;
cfg->cfg_k_alpha = dhaze.ProcResV14.cfg_k_alpha;
cfg->cfg_k = dhaze.ProcResV14.cfg_k;
cfg->k_gain = dhaze.ProcResV14.k_gain;
cfg->gain_fuse_alpha = dhaze.ProcResV14.gain_fuse_alpha;
for (int i = 0; i < ISP39_DHAZ_SIGMA_IDX_NUM; i++)
cfg->sigma_idx[i] = dhaze.ProcResV14.sigma_idx[i];
for (int i = 0; i < ISP39_DHAZ_SIGMA_LUT_NUM; i++)
cfg->sigma_lut[i] = dhaze.ProcResV14.sigma_lut[i];
for (int i = 0; i < ISP39_DHAZ_ENH_CURVE_NUM; i++)
cfg->enh_curve[i] = dhaze.ProcResV14.enh_curve[i];
for (int i = 0; i < ISP39_DHAZ_ENH_LUMA_NUM; i++)
cfg->enh_luma[i] = dhaze.ProcResV14.enh_luma[i];
for (int i = 0; i < ISP39_DHAZ_BLEND_WET_NUM; i++)
cfg->blend_wet[i] = dhaze.ProcResV14.blend_wet[i];
for (int i = 0; i < ISP39_DHAZ_HIST_IIR_BLK_MAX; i++)
for (int j = 0; j < ISP39_DHAZ_HIST_IIR_NUM; j++)
cfg->hist_iir[i][j] = dhaze.ProcResV14.hist_iir[i][j];
// set hist_iir_wr 0x0 for now, do not need for now
cfg->hist_iir_wr = 0x0;
#if 0
LOGE_ADEHAZE("%s(%d) dehaze local gain IDX(0~5): 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", __func__, __LINE__, cfg->sigma_idx[0], cfg->sigma_idx[1],
cfg->sigma_idx[2], cfg->sigma_idx[3], cfg->sigma_idx[4], cfg->sigma_idx[5]);
LOGE_ADEHAZE("%s(%d) dehaze local gain LUT(0~5): 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", __func__, __LINE__, cfg->sigma_lut[0], cfg->sigma_lut[1],
cfg->sigma_lut[2], cfg->sigma_lut[3], cfg->sigma_lut[4], cfg->sigma_lut[5]);
LOGE_ADEHAZE("%s(%d) enh_luma(0~5): 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", __func__, __LINE__, cfg->enh_luma[0], cfg->enh_luma[1],
cfg->enh_luma[2], cfg->enh_luma[3], cfg->enh_luma[4], cfg->enh_luma[5]);
#endif
}
#endif
#endif
#if RKAIQ_HAVE_DRC_V20
#ifdef USE_NEWSTRUCT
void Isp39Params::convertAiqDrcToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_drc_params_t* drc_attr) {
//hwi_api_drc40_params_check(&drc_attr->result);
if (drc_attr->en) {
isp_cfg.module_en_update |= 1LL << Rk_ISP21_DRC_ID;
isp_cfg.module_ens |= 1LL << Rk_ISP21_DRC_ID;
isp_cfg.module_cfg_update |= 1LL << Rk_ISP21_DRC_ID;
} else {
isp_cfg.module_en_update |= 1LL << Rk_ISP21_DRC_ID;
isp_cfg.module_ens &= ~(1LL << Rk_ISP21_DRC_ID);
// need to update cmps_byp_en when drc en off
isp_cfg.module_cfg_update |= (1LL << Rk_ISP21_DRC_ID);
}
rk_aiq_drc40_params_cvt(&drc_attr->result, &isp_cfg, &mCommonCvtInfo);
//hwi_api_drc40_params_cvt(&drc_attr->result, &isp_cfg);
//hwi_api_drc40_params_dump(&drc_attr->result, &isp_cfg.others.drc_cfg);
}
#else
void Isp39Params::convertAiqDrcToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_drc_v39_t& adrc_data) {
// cmps_byp_en is not related to drc en
isp_cfg.others.drc_cfg.cmps_byp_en = adrc_data.DrcProcRes.Drc_v20.cmps_byp_en;
if (adrc_data.bDrcEn) {
isp_cfg.module_en_update |= 1LL << Rk_ISP21_DRC_ID;
isp_cfg.module_ens |= 1LL << Rk_ISP21_DRC_ID;
isp_cfg.module_cfg_update |= 1LL << Rk_ISP21_DRC_ID;
} else {
isp_cfg.module_en_update |= 1LL << Rk_ISP21_DRC_ID;
isp_cfg.module_ens &= ~(1LL << Rk_ISP21_DRC_ID);
// need to update cmps_byp_en when drc en off
isp_cfg.module_cfg_update |= 1LL << Rk_ISP21_DRC_ID;
return;
}
isp_cfg.others.drc_cfg.bypass_en = adrc_data.DrcProcRes.Drc_v20.bypass_en;
isp_cfg.others.drc_cfg.gainx32_en = adrc_data.DrcProcRes.Drc_v20.gainx32_en;
isp_cfg.others.drc_cfg.raw_dly_dis = adrc_data.DrcProcRes.Drc_v20.raw_dly_dis;
isp_cfg.others.drc_cfg.position = adrc_data.DrcProcRes.Drc_v20.position;
isp_cfg.others.drc_cfg.compres_scl = adrc_data.DrcProcRes.Drc_v20.compres_scl;
isp_cfg.others.drc_cfg.offset_pow2 = adrc_data.DrcProcRes.Drc_v20.offset_pow2;
isp_cfg.others.drc_cfg.lpdetail_ratio = adrc_data.DrcProcRes.Drc_v20.lpdetail_ratio;
isp_cfg.others.drc_cfg.hpdetail_ratio = adrc_data.DrcProcRes.Drc_v20.hpdetail_ratio;
isp_cfg.others.drc_cfg.delta_scalein = adrc_data.DrcProcRes.Drc_v20.delta_scalein;
isp_cfg.others.drc_cfg.bilat_wt_off = adrc_data.DrcProcRes.Drc_v20.bilat_wt_off;
isp_cfg.others.drc_cfg.thumb_thd_neg = adrc_data.DrcProcRes.Drc_v20.thumb_thd_neg;
isp_cfg.others.drc_cfg.thumb_thd_enable = adrc_data.DrcProcRes.Drc_v20.thumb_thd_enable;
isp_cfg.others.drc_cfg.weicur_pix = adrc_data.DrcProcRes.Drc_v20.weicur_pix;
isp_cfg.others.drc_cfg.cmps_offset_bits_int = adrc_data.DrcProcRes.Drc_v20.cmps_offset_bits_int;
isp_cfg.others.drc_cfg.cmps_fixbit_mode = adrc_data.DrcProcRes.Drc_v20.cmps_fixbit_mode;
isp_cfg.others.drc_cfg.drc_gas_t = adrc_data.DrcProcRes.Drc_v20.drc_gas_t;
isp_cfg.others.drc_cfg.thumb_clip = adrc_data.DrcProcRes.Drc_v20.thumb_clip;
isp_cfg.others.drc_cfg.thumb_scale = adrc_data.DrcProcRes.Drc_v20.thumb_scale;
isp_cfg.others.drc_cfg.range_sgm_inv0 = adrc_data.DrcProcRes.Drc_v20.range_sgm_inv0;
isp_cfg.others.drc_cfg.range_sgm_inv1 = adrc_data.DrcProcRes.Drc_v20.range_sgm_inv1;
isp_cfg.others.drc_cfg.weig_bilat = adrc_data.DrcProcRes.Drc_v20.weig_bilat;
isp_cfg.others.drc_cfg.weight_8x8thumb = adrc_data.DrcProcRes.Drc_v20.weight_8x8thumb;
isp_cfg.others.drc_cfg.bilat_soft_thd = adrc_data.DrcProcRes.Drc_v20.bilat_soft_thd;
isp_cfg.others.drc_cfg.enable_soft_thd = adrc_data.DrcProcRes.Drc_v20.enable_soft_thd;
isp_cfg.others.drc_cfg.min_ogain = adrc_data.DrcProcRes.Drc_v20.min_ogain;
for (int i = 0; i < ISP39_DRC_Y_NUM; i++) {
isp_cfg.others.drc_cfg.gain_y[i] = adrc_data.DrcProcRes.Drc_v20.gain_y[i];
isp_cfg.others.drc_cfg.compres_y[i] = adrc_data.DrcProcRes.Drc_v20.compres_y[i];
isp_cfg.others.drc_cfg.scale_y[i] = adrc_data.DrcProcRes.Drc_v20.scale_y[i];
isp_cfg.others.drc_cfg.sfthd_y[i] = adrc_data.DrcProcRes.Drc_v20.sfthd_y[i];
}
LOG1_ATMO(
"%s: bypass_en:%d gainx32_en:%d raw_dly_dis:%d sw_drc_position:%d sw_drc_compres_scl:%d "
"sw_drc_offset_pow2:%d\n",
__FUNCTION__, isp_cfg.others.drc_cfg.bypass_en, isp_cfg.others.drc_cfg.gainx32_en,
isp_cfg.others.drc_cfg.raw_dly_dis, isp_cfg.others.drc_cfg.position,
isp_cfg.others.drc_cfg.compres_scl, isp_cfg.others.drc_cfg.offset_pow2);
LOG1_ATMO("%s: sw_drc_lpdetail_ratio:%d sw_drc_hpdetail_ratio:%d sw_drc_delta_scalein:%d\n",
__FUNCTION__, isp_cfg.others.drc_cfg.lpdetail_ratio,
isp_cfg.others.drc_cfg.hpdetail_ratio, isp_cfg.others.drc_cfg.delta_scalein);
LOG1_ATMO(
"%s: sw_drc_bilat_wt_off:%d thumb_thd_neg:%d thumb_thd_enable:%d sw_drc_weicur_pix:%d\n",
__FUNCTION__, isp_cfg.others.drc_cfg.bilat_wt_off, isp_cfg.others.drc_cfg.thumb_thd_neg,
isp_cfg.others.drc_cfg.thumb_thd_enable, isp_cfg.others.drc_cfg.weicur_pix);
LOG1_ATMO(
"%s: cmps_byp_en:%d cmps_offset_bits_int:%d cmps_fixbit_mode:%d drc_gas_t:%d thumb_clip:%d "
"thumb_scale:%d "
"\n",
__FUNCTION__, isp_cfg.others.drc_cfg.cmps_byp_en,
isp_cfg.others.drc_cfg.cmps_offset_bits_int, isp_cfg.others.drc_cfg.cmps_fixbit_mode,
isp_cfg.others.drc_cfg.drc_gas_t, isp_cfg.others.drc_cfg.thumb_clip,
isp_cfg.others.drc_cfg.thumb_scale);
LOG1_ATMO(
"%s: sw_drc_range_sgm_inv0:%d sw_drc_range_sgm_inv1:%d weig_bilat:%d weight_8x8thumb:%d\n",
__FUNCTION__, isp_cfg.others.drc_cfg.range_sgm_inv0, isp_cfg.others.drc_cfg.range_sgm_inv1,
isp_cfg.others.drc_cfg.weig_bilat, isp_cfg.others.drc_cfg.weight_8x8thumb);
LOG1_ATMO(
"%s: sw_drc_bilat_soft_thd:%d "
"sw_drc_enable_soft_thd:%d sw_drc_min_ogain:%d\n",
__FUNCTION__, isp_cfg.others.drc_cfg.bilat_soft_thd, isp_cfg.others.drc_cfg.enable_soft_thd,
isp_cfg.others.drc_cfg.min_ogain);
LOG1_ATMO("%s: sw_drc_gain_y: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
__FUNCTION__, isp_cfg.others.drc_cfg.gain_y[0], isp_cfg.others.drc_cfg.gain_y[1],
isp_cfg.others.drc_cfg.gain_y[2], isp_cfg.others.drc_cfg.gain_y[3],
isp_cfg.others.drc_cfg.gain_y[4], isp_cfg.others.drc_cfg.gain_y[5],
isp_cfg.others.drc_cfg.gain_y[6], isp_cfg.others.drc_cfg.gain_y[7],
isp_cfg.others.drc_cfg.gain_y[8], isp_cfg.others.drc_cfg.gain_y[9],
isp_cfg.others.drc_cfg.gain_y[10], isp_cfg.others.drc_cfg.gain_y[11],
isp_cfg.others.drc_cfg.gain_y[12], isp_cfg.others.drc_cfg.gain_y[13],
isp_cfg.others.drc_cfg.gain_y[14], isp_cfg.others.drc_cfg.gain_y[15],
isp_cfg.others.drc_cfg.gain_y[16]);
LOG1_ATMO("%s: sw_drc_scale_y: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
__FUNCTION__, isp_cfg.others.drc_cfg.scale_y[0], isp_cfg.others.drc_cfg.scale_y[1],
isp_cfg.others.drc_cfg.scale_y[2], isp_cfg.others.drc_cfg.scale_y[3],
isp_cfg.others.drc_cfg.scale_y[4], isp_cfg.others.drc_cfg.scale_y[5],
isp_cfg.others.drc_cfg.scale_y[6], isp_cfg.others.drc_cfg.scale_y[7],
isp_cfg.others.drc_cfg.scale_y[8], isp_cfg.others.drc_cfg.scale_y[9],
isp_cfg.others.drc_cfg.scale_y[10], isp_cfg.others.drc_cfg.scale_y[11],
isp_cfg.others.drc_cfg.scale_y[12], isp_cfg.others.drc_cfg.scale_y[13],
isp_cfg.others.drc_cfg.scale_y[14], isp_cfg.others.drc_cfg.scale_y[15],
isp_cfg.others.drc_cfg.scale_y[16]);
LOG1_ATMO(
"%s: sw_drc_compres_y: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d "
"%d\n",
__FUNCTION__, isp_cfg.others.drc_cfg.compres_y[0], isp_cfg.others.drc_cfg.compres_y[1],
isp_cfg.others.drc_cfg.compres_y[2], isp_cfg.others.drc_cfg.compres_y[3],
isp_cfg.others.drc_cfg.compres_y[4], isp_cfg.others.drc_cfg.compres_y[5],
isp_cfg.others.drc_cfg.compres_y[6], isp_cfg.others.drc_cfg.compres_y[7],
isp_cfg.others.drc_cfg.compres_y[8], isp_cfg.others.drc_cfg.compres_y[9],
isp_cfg.others.drc_cfg.compres_y[10], isp_cfg.others.drc_cfg.compres_y[11],
isp_cfg.others.drc_cfg.compres_y[12], isp_cfg.others.drc_cfg.compres_y[13],
isp_cfg.others.drc_cfg.compres_y[14], isp_cfg.others.drc_cfg.compres_y[15],
isp_cfg.others.drc_cfg.compres_y[16]);
LOG1_ATMO(
"%s: sfthd_y: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d "
"%d\n",
__FUNCTION__, isp_cfg.others.drc_cfg.sfthd_y[0], isp_cfg.others.drc_cfg.sfthd_y[1],
isp_cfg.others.drc_cfg.sfthd_y[2], isp_cfg.others.drc_cfg.sfthd_y[3],
isp_cfg.others.drc_cfg.sfthd_y[4], isp_cfg.others.drc_cfg.sfthd_y[5],
isp_cfg.others.drc_cfg.sfthd_y[6], isp_cfg.others.drc_cfg.sfthd_y[7],
isp_cfg.others.drc_cfg.sfthd_y[8], isp_cfg.others.drc_cfg.sfthd_y[9],
isp_cfg.others.drc_cfg.sfthd_y[10], isp_cfg.others.drc_cfg.sfthd_y[11],
isp_cfg.others.drc_cfg.sfthd_y[12], isp_cfg.others.drc_cfg.sfthd_y[13],
isp_cfg.others.drc_cfg.sfthd_y[14], isp_cfg.others.drc_cfg.sfthd_y[15],
isp_cfg.others.drc_cfg.sfthd_y[16]);
}
#endif
#endif
#if RKAIQ_HAVE_RGBIR_REMOSAIC_V10
void Isp39Params::convertAiqRgbirToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_rgbir_v39_t& argbir_data) {
if (argbir_data.bRgbirEn) {
isp_cfg.module_ens |= ISP39_MODULE_RGBIR;
isp_cfg.module_en_update |= ISP39_MODULE_RGBIR;
isp_cfg.module_cfg_update |= ISP39_MODULE_RGBIR;
} else {
isp_cfg.module_ens &= ~ISP39_MODULE_RGBIR;
isp_cfg.module_en_update |= ISP39_MODULE_RGBIR;
isp_cfg.module_cfg_update |= ISP39_MODULE_RGBIR;
return;
}
isp_cfg.others.rgbir_cfg.coe_delta = argbir_data.RgbirProcRes.rgbir_v10.coe_delta;
isp_cfg.others.rgbir_cfg.coe_theta = argbir_data.RgbirProcRes.rgbir_v10.coe_theta;
for (int i = 0; i < ISP39_RGBIR_SCALE_NUM; i++)
isp_cfg.others.rgbir_cfg.scale[i] = argbir_data.RgbirProcRes.rgbir_v10.scale[i];
for (int i = 0; i < ISP39_RGBIR_LUMA_POINT_NUM; i++) {
isp_cfg.others.rgbir_cfg.luma_point[i] = argbir_data.RgbirProcRes.rgbir_v10.luma_point[i];
isp_cfg.others.rgbir_cfg.scale_map[i] = argbir_data.RgbirProcRes.rgbir_v10.scale_map[i];
}
LOGV_ARGBIR(
"%s: edge_aware_coef:%d ir_black_level:%d b_scale_coef:%d gb_scale_coef:%d "
"gr_scale_coef:%d r_scale_coef:%d\n",
__FUNCTION__, isp_cfg.others.rgbir_cfg.coe_delta, isp_cfg.others.rgbir_cfg.coe_theta,
isp_cfg.others.rgbir_cfg.scale[3], isp_cfg.others.rgbir_cfg.scale[2],
isp_cfg.others.rgbir_cfg.scale[1], isp_cfg.others.rgbir_cfg.scale[0]);
LOGV_ARGBIR("%s: luma_point: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
__FUNCTION__, isp_cfg.others.rgbir_cfg.luma_point[0],
isp_cfg.others.rgbir_cfg.luma_point[1], isp_cfg.others.rgbir_cfg.luma_point[2],
isp_cfg.others.rgbir_cfg.luma_point[3], isp_cfg.others.rgbir_cfg.luma_point[4],
isp_cfg.others.rgbir_cfg.luma_point[5], isp_cfg.others.rgbir_cfg.luma_point[6],
isp_cfg.others.rgbir_cfg.luma_point[7], isp_cfg.others.rgbir_cfg.luma_point[8],
isp_cfg.others.rgbir_cfg.luma_point[9], isp_cfg.others.rgbir_cfg.luma_point[10],
isp_cfg.others.rgbir_cfg.luma_point[11], isp_cfg.others.rgbir_cfg.luma_point[12],
isp_cfg.others.rgbir_cfg.luma_point[13], isp_cfg.others.rgbir_cfg.luma_point[14],
isp_cfg.others.rgbir_cfg.luma_point[15], isp_cfg.others.rgbir_cfg.luma_point[16]);
LOGV_ARGBIR("%s: scale_map: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", __FUNCTION__,
isp_cfg.others.rgbir_cfg.scale_map[0], isp_cfg.others.rgbir_cfg.scale_map[1],
isp_cfg.others.rgbir_cfg.scale_map[2], isp_cfg.others.rgbir_cfg.scale_map[3],
isp_cfg.others.rgbir_cfg.scale_map[4], isp_cfg.others.rgbir_cfg.scale_map[5],
isp_cfg.others.rgbir_cfg.scale_map[6], isp_cfg.others.rgbir_cfg.scale_map[7],
isp_cfg.others.rgbir_cfg.scale_map[8], isp_cfg.others.rgbir_cfg.scale_map[9],
isp_cfg.others.rgbir_cfg.scale_map[10], isp_cfg.others.rgbir_cfg.scale_map[11],
isp_cfg.others.rgbir_cfg.scale_map[12], isp_cfg.others.rgbir_cfg.scale_map[13],
isp_cfg.others.rgbir_cfg.scale_map[14], isp_cfg.others.rgbir_cfg.scale_map[15],
isp_cfg.others.rgbir_cfg.scale_map[16]);
}
#endif
#if RKAIQ_HAVE_CCM_V3
void Isp39Params::convertAiqCcmToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
const rk_aiq_ccm_cfg_v2_t& ccm) {
if (ccm.ccmEnable) {
isp_cfg.module_ens |= ISP3X_MODULE_CCM;
}
isp_cfg.module_en_update |= ISP3X_MODULE_CCM;
isp_cfg.module_cfg_update |= ISP3X_MODULE_CCM;
struct isp39_ccm_cfg* cfg = &isp_cfg.others.ccm_cfg;
const float* coeff = ccm.matrix;
const float* offset = ccm.offs;
cfg->coeff0_r = (coeff[0] - 1) > 0 ? (short)((coeff[0] - 1) * 128 + 0.5)
: (short)((coeff[0] - 1) * 128 - 0.5); // check -128?
cfg->coeff1_r = coeff[1] > 0 ? (short)(coeff[1] * 128 + 0.5) : (short)(coeff[1] * 128 - 0.5);
cfg->coeff2_r = coeff[2] > 0 ? (short)(coeff[2] * 128 + 0.5) : (short)(coeff[2] * 128 - 0.5);
cfg->coeff0_g = coeff[3] > 0 ? (short)(coeff[3] * 128 + 0.5) : (short)(coeff[3] * 128 - 0.5);
cfg->coeff1_g = (coeff[4] - 1) > 0 ? (short)((coeff[4] - 1) * 128 + 0.5)
: (short)((coeff[4] - 1) * 128 - 0.5);
cfg->coeff2_g = coeff[5] > 0 ? (short)(coeff[5] * 128 + 0.5) : (short)(coeff[5] * 128 - 0.5);
cfg->coeff0_b = coeff[6] > 0 ? (short)(coeff[6] * 128 + 0.5) : (short)(coeff[6] * 128 - 0.5);
cfg->coeff1_b = coeff[7] > 0 ? (short)(coeff[7] * 128 + 0.5) : (short)(coeff[7] * 128 - 0.5);
cfg->coeff2_b = (coeff[8] - 1) > 0 ? (short)((coeff[8] - 1) * 128 + 0.5)
: (short)((coeff[8] - 1) * 128 - 0.5);
cfg->offset_r =
offset[0] > 0 ? (short)(offset[0] + 0.5) : (short)(offset[0] - 0.5); // for 12bit
cfg->offset_g = offset[1] > 0 ? (short)(offset[1] + 0.5) : (int)(offset[1] - 0.5);
cfg->offset_b = offset[2] > 0 ? (short)(offset[2] + 0.5) : (short)(offset[2] - 0.5);
cfg->coeff0_y = (u16)ccm.rgb2y_para[0];
cfg->coeff1_y = (u16)ccm.rgb2y_para[1];
cfg->coeff2_y = (u16)ccm.rgb2y_para[2];
cfg->bound_bit = (u8)ccm.bound_bit; // check
cfg->right_bit = (u8)ccm.right_bit;
cfg->highy_adjust_dis = (u8)(ccm.highy_adj_en ? 0 : 1);
for (int i = 0; i < ISP32_CCM_CURVE_NUM; i++) {
cfg->alp_y[i] = (u16)(ccm.alp_y[i]);
}
cfg->enh_adj_en = (u8)(ccm.enh_adj_en);
cfg->asym_adj_en = (u8)(ccm.asym_adj_en ? 1 : 0);
cfg->color_coef0_r2y = (u16)ccm.enh_rgb2y_para[0];
cfg->color_coef1_g2y = (u16)ccm.enh_rgb2y_para[1];
cfg->color_coef2_b2y = (u16)ccm.enh_rgb2y_para[2];
cfg->color_enh_rat_max = (u16)(ccm.enh_rat_max * 1024);
cfg->sat_decay_en = ccm.sat_decay_en;
cfg->hf_low = ccm.hf_low;
cfg->hf_up = ccm.hf_up;
cfg->hf_scale = ccm.hf_scale;
for (int i = 0; i < ISP39_CCM_HF_FACTOR_NUM; i++) {
cfg->hf_factor[i] = ccm.hf_factor[i];
}
}
#endif
#if (RKAIQ_HAVE_SHARP_V34)
#if USE_NEWSTRUCT
void Isp39Params::convertAiqSharpToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_sharp_params_t *attr) {
isp_cfg.module_ens |= ISP3X_MODULE_SHARP;
isp_cfg.module_en_update |= ISP3X_MODULE_SHARP;
isp_cfg.module_cfg_update |= ISP3X_MODULE_SHARP;
struct isp39_sharp_cfg* pSharp = &isp_cfg.others.sharp_cfg;
rk_aiq_sharp34_params_cvt(&attr->result, &isp_cfg, &mCommonCvtInfo);
}
#else
void Isp39Params::convertAiqSharpenToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_sharp_v39_t& sharp) {
bool enable = !sharp.bypass;
isp_cfg.module_en_update |= ISP3X_MODULE_SHARP;
isp_cfg.module_ens |= ISP3X_MODULE_SHARP;
isp_cfg.module_cfg_update |= ISP3X_MODULE_SHARP;
struct isp39_sharp_cfg* pSharp = &isp_cfg.others.sharp_cfg;
pSharp->bypass = sharp.bypass;
pSharp->center_mode = sharp.center_mode;
pSharp->local_gain_bypass = sharp.local_gain_bypass;
pSharp->radius_step_mode = sharp.radius_step_mode;
pSharp->noise_clip_mode = sharp.noise_clip_mode;
pSharp->clipldx_sel = sharp.clipldx_sel;
pSharp->baselmg_sel = sharp.baselmg_sel;
pSharp->noise_filt_sel = sharp.noise_filt_sel;
pSharp->tex2wgt_en = sharp.tex2wgt_en;
LOGV_ASHARP(
"%s:%d bypass:0x%x center_mode:0x%x local_gain_bypass:0x%x radius_ds_mode:0x%x "
"noiseclip_mode:0x%x clip_hf_mode:0x%x add_mode:0x%x\n",
__FUNCTION__, __LINE__, pSharp->bypass, pSharp->center_mode, pSharp->local_gain_bypass,
pSharp->radius_step_mode, pSharp->noise_clip_mode, pSharp->clipldx_sel,
pSharp->baselmg_sel);
pSharp->pre_bifilt_alpha = sharp.pre_bifilt_alpha;
pSharp->guide_filt_alpha = sharp.guide_filt_alpha;
pSharp->detail_bifilt_alpha = sharp.detail_bifilt_alpha;
pSharp->global_sharp_strg = sharp.global_sharp_strg;
LOGV_ASHARP(
"%s:%d tex_mean_mode:0x%x tex_lut_en:0x%x pbf_ratio:0x%x gaus_ratio:0x%x bf_ratio:0x%x\n",
__FUNCTION__, __LINE__, pSharp->noise_filt_sel, pSharp->tex2wgt_en,
pSharp->pre_bifilt_alpha, pSharp->guide_filt_alpha, pSharp->detail_bifilt_alpha,
pSharp->global_sharp_strg);
for (int i = 0; i < ISP39_SHARP_X_NUM; i++) pSharp->luma2table_idx[i] = sharp.luma2table_idx[i];
LOGV_ASHARP("%s:%d luma2table_idx[0~6]:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x \n", __FUNCTION__,
__LINE__, pSharp->luma2table_idx[0], pSharp->luma2table_idx[1],
pSharp->luma2table_idx[2], pSharp->luma2table_idx[3], pSharp->luma2table_idx[4],
pSharp->luma2table_idx[5], pSharp->luma2table_idx[6]);
for (int i = 0; i < ISP39_SHARP_Y_NUM; i++) pSharp->pbf_sigma_inv[i] = sharp.pbf_sigma_inv[i];
LOGV_ASHARP("%s:%d pbf_sigma_inv[0~7]:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x \n",
__FUNCTION__, __LINE__, pSharp->pbf_sigma_inv[0], pSharp->pbf_sigma_inv[1],
pSharp->pbf_sigma_inv[2], pSharp->pbf_sigma_inv[3], pSharp->pbf_sigma_inv[4],
pSharp->pbf_sigma_inv[5], pSharp->pbf_sigma_inv[6], pSharp->pbf_sigma_inv[7]);
for (int i = 0; i < ISP39_SHARP_Y_NUM; i++) pSharp->bf_sigma_inv[i] = sharp.bf_sigma_inv[i];
LOGV_ASHARP("%s:%d bf_sigma_inv[0~7]:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x \n", __FUNCTION__,
__LINE__, pSharp->bf_sigma_inv[0], pSharp->bf_sigma_inv[1], pSharp->bf_sigma_inv[2],
pSharp->bf_sigma_inv[3], pSharp->bf_sigma_inv[4], pSharp->bf_sigma_inv[5],
pSharp->bf_sigma_inv[6], pSharp->bf_sigma_inv[7]);
pSharp->bf_sigma_shift = sharp.bf_sigma_shift;
pSharp->pbf_sigma_shift = sharp.pbf_sigma_shift;
LOGV_ASHARP("%s:%d bf_sigma_shift:0x%x pbf_sigma_shift:0x%x\n", __FUNCTION__, __LINE__,
pSharp->bf_sigma_shift, pSharp->pbf_sigma_shift);
for (int i = 0; i < ISP39_SHARP_Y_NUM; i++) pSharp->luma2strg_val[i] = sharp.luma2strg_val[i];
LOGV_ASHARP("%s:%d luma2strg_val[0~7]:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x \n",
__FUNCTION__, __LINE__, pSharp->luma2strg_val[0], pSharp->luma2strg_val[1],
pSharp->luma2strg_val[2], pSharp->luma2strg_val[3], pSharp->luma2strg_val[4],
pSharp->luma2strg_val[5], pSharp->luma2strg_val[6], pSharp->luma2strg_val[7]);
for (int i = 0; i < ISP39_SHARP_Y_NUM; i++)
pSharp->luma2posclip_val[i] = sharp.luma2posclip_val[i];
LOGV_ASHARP("%s:%d clip_hf[0~7]:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x \n", __FUNCTION__,
__LINE__, pSharp->luma2posclip_val[0], pSharp->luma2posclip_val[1],
pSharp->luma2posclip_val[2], pSharp->luma2posclip_val[3],
pSharp->luma2posclip_val[4], pSharp->luma2posclip_val[5],
pSharp->luma2posclip_val[6], pSharp->luma2posclip_val[7]);
pSharp->pbf_coef2 = sharp.pbf_coef2;
pSharp->pbf_coef1 = sharp.pbf_coef1;
pSharp->pbf_coef0 = sharp.pbf_coef0;
pSharp->bf_coef2 = sharp.bf_coef2;
pSharp->bf_coef1 = sharp.bf_coef1;
pSharp->bf_coef0 = sharp.bf_coef0;
LOGV_ASHARP("%s:%d pbf_coef0~2:0x%x 0x%x 0x%x bf_coef0~2:0x%x 0x%x 0x%x\n", __FUNCTION__,
__LINE__, pSharp->pbf_coef0, pSharp->pbf_coef1, pSharp->pbf_coef2, pSharp->bf_coef0,
pSharp->bf_coef1, pSharp->bf_coef2);
for (int i = 0; i < ISP39_SHARP_GAUS_COEF_NUM; i++)
pSharp->img_lpf_coeff[i] = sharp.img_lpf_coeff[i];
LOGV_ASHARP("%s:%d img_lpf_coeff[0~5]:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x \n", __FUNCTION__,
__LINE__, pSharp->img_lpf_coeff[0], pSharp->img_lpf_coeff[1],
pSharp->img_lpf_coeff[2], pSharp->img_lpf_coeff[3], pSharp->img_lpf_coeff[4],
pSharp->img_lpf_coeff[5]);
pSharp->global_gain = sharp.global_gain;
pSharp->gain_merge_alpha = sharp.gain_merge_alpha;
pSharp->local_gain_scale = sharp.local_gain_scale;
LOGV_ASHARP("%s:%d global_gain:0x%x gain_merge_alpha:0x%x local_gain_scale:0x%x\n",
__FUNCTION__, __LINE__, pSharp->global_gain, pSharp->gain_merge_alpha,
pSharp->local_gain_scale);
for (int i = 0; i < ISP39_SHARP_GAIN_ADJ_NUM; i++)
pSharp->gain2strg_val[i] = sharp.gain2strg_val[i];
LOGV_ASHARP(
"%s:%d gain2strg_val[0~13]:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x "
"0x%x "
"0x%x\n",
__FUNCTION__, __LINE__, pSharp->gain2strg_val[0], pSharp->gain2strg_val[1],
pSharp->gain2strg_val[2], pSharp->gain2strg_val[3], pSharp->gain2strg_val[4],
pSharp->gain2strg_val[5], pSharp->gain2strg_val[6], pSharp->gain2strg_val[7],
pSharp->gain2strg_val[8], pSharp->gain2strg_val[9], pSharp->gain2strg_val[10],
pSharp->gain2strg_val[11], pSharp->gain2strg_val[12], pSharp->gain2strg_val[13]);
pSharp->center_x = sharp.center_x;
pSharp->center_y = sharp.center_y;
LOGV_ASHARP("%s:%d center_x:0x%x center_y:0x%x\n", __FUNCTION__, __LINE__, pSharp->center_x,
pSharp->center_y);
for (int i = 0; i < ISP39_SHARP_STRENGTH_NUM; i++)
pSharp->distance2strg_val[i] = sharp.distance2strg_val[i];
LOGV_ASHARP(
"%s:%d distance2strg_val[0~21]:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x "
"0x%x 0x%x "
"0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n",
__FUNCTION__, __LINE__, pSharp->distance2strg_val[0], pSharp->distance2strg_val[1],
pSharp->distance2strg_val[2], pSharp->distance2strg_val[3], pSharp->distance2strg_val[4],
pSharp->distance2strg_val[5], pSharp->distance2strg_val[6], pSharp->distance2strg_val[7],
pSharp->distance2strg_val[8], pSharp->distance2strg_val[9], pSharp->distance2strg_val[10],
pSharp->distance2strg_val[11], pSharp->distance2strg_val[12], pSharp->distance2strg_val[13],
pSharp->distance2strg_val[14], pSharp->distance2strg_val[15], pSharp->distance2strg_val[16],
pSharp->distance2strg_val[17], pSharp->distance2strg_val[18], pSharp->distance2strg_val[19],
pSharp->distance2strg_val[20], pSharp->distance2strg_val[21]);
for (int i = 0; i < ISP39_SHARP_Y_NUM; i++)
pSharp->luma2neg_clip_val[i] = sharp.luma2neg_clip_val[i];
LOGV_ASHARP("%s:%d luma2neg_clip_val[0~7]:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x \n",
__FUNCTION__, __LINE__, pSharp->luma2neg_clip_val[0], pSharp->luma2neg_clip_val[1],
pSharp->luma2neg_clip_val[2], pSharp->luma2neg_clip_val[3],
pSharp->luma2neg_clip_val[4], pSharp->luma2neg_clip_val[5],
pSharp->luma2neg_clip_val[6], pSharp->luma2neg_clip_val[7]);
pSharp->noise_max_limit = sharp.noise_max_limit;
pSharp->tex_reserve_level = sharp.tex_reserve_level;
pSharp->tex_wet_scale = sharp.tex_wet_scale;
pSharp->noise_norm_bit = sharp.noise_norm_bit;
pSharp->tex_wgt_mode = sharp.tex_wgt_mode;
pSharp->noise_strg = sharp.noise_strg;
LOGV_ASHARP("%s:%d noise_max_limit:0x%x tex_reserve_level:0x%x noise_strg:0x%x\n",
__FUNCTION__, __LINE__, pSharp->noise_max_limit, pSharp->tex_reserve_level,
pSharp->noise_strg);
LOGV_ASHARP("%s:%d tex_wet_scale:0x%x noise_norm_bit:0x%x tex_wgt_mode:0x%x\n", __FUNCTION__,
__LINE__, pSharp->tex_wet_scale, pSharp->noise_norm_bit, pSharp->tex_wgt_mode);
for (int i = 0; i < ISP39_SHARP_TEX_WET_LUT_NUM; i++)
pSharp->tex2wgt_val[i] = sharp.tex2wgt_val[i];
LOGV_ASHARP(
"%s:%d tex2wgt_val[0~16]:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x "
"0x%x 0x%x 0x%x 0x%x\n",
__FUNCTION__, __LINE__, pSharp->tex2wgt_val[0], pSharp->tex2wgt_val[1],
pSharp->tex2wgt_val[2], pSharp->tex2wgt_val[3], pSharp->tex2wgt_val[4],
pSharp->tex2wgt_val[5], pSharp->tex2wgt_val[6], pSharp->tex2wgt_val[7],
pSharp->tex2wgt_val[8], pSharp->tex2wgt_val[9], pSharp->tex2wgt_val[10],
pSharp->tex2wgt_val[11], pSharp->tex2wgt_val[12], pSharp->tex2wgt_val[13],
pSharp->tex2wgt_val[14], pSharp->tex2wgt_val[15], pSharp->tex2wgt_val[16]);
for (int i = 0; i < ISP39_SHARP_DETAIL_STRG_NUM; i++)
pSharp->detail2strg_val[i] = sharp.detail2strg_val[i];
LOGV_ASHARP(
"%s:%d detail2strg_val[0~16]:0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x "
"0x%x "
"0x%x 0x%x 0x%x 0x%x\n",
__FUNCTION__, __LINE__, pSharp->detail2strg_val[0], pSharp->detail2strg_val[1],
pSharp->detail2strg_val[2], pSharp->detail2strg_val[3], pSharp->detail2strg_val[4],
pSharp->detail2strg_val[5], pSharp->detail2strg_val[6], pSharp->detail2strg_val[7],
pSharp->detail2strg_val[8], pSharp->detail2strg_val[9], pSharp->detail2strg_val[10],
pSharp->detail2strg_val[11], pSharp->detail2strg_val[12], pSharp->detail2strg_val[13],
pSharp->detail2strg_val[14], pSharp->detail2strg_val[15], pSharp->detail2strg_val[16]);
LOG1_ASHARP("%s:%d exit!\n", __FUNCTION__, __LINE__);
}
#endif
#endif
#if USE_NEWSTRUCT
void Isp39Params::convertAiqBlcToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_blc_params_t* blc_attr) {
if (blc_attr->en) {
isp_cfg.module_ens |= ISP2X_MODULE_BLS;
isp_cfg.module_en_update |= ISP2X_MODULE_BLS;
isp_cfg.module_cfg_update |= ISP2X_MODULE_BLS;
} else {
isp_cfg.module_ens &= ~ISP2X_MODULE_BLS;
isp_cfg.module_en_update |= ISP2X_MODULE_BLS;
return;
}
rk_aiq_blc30_params_cvt(&blc_attr->result, &isp_cfg, &mCommonCvtInfo);
}
#else
void Isp39Params::convertAiqBlcToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_blc_v32_t& blc) {
LOGD_ABLC("%s:(%d) enter enable:%d\n", __FUNCTION__, __LINE__, blc.enable);
if (blc.enable) {
isp_cfg.module_ens |= ISP3X_MODULE_BLS;
} else {
isp_cfg.module_ens &= ~ISP3X_MODULE_BLS;
}
isp_cfg.module_en_update |= ISP3X_MODULE_BLS;
isp_cfg.module_cfg_update |= ISP3X_MODULE_BLS;
#if 1
isp_cfg.others.bls_cfg.enable_auto = 0;
isp_cfg.others.bls_cfg.en_windows = 0;
isp_cfg.others.bls_cfg.bls_window1.h_offs = 0;
isp_cfg.others.bls_cfg.bls_window1.v_offs = 0;
isp_cfg.others.bls_cfg.bls_window1.h_size = 0;
isp_cfg.others.bls_cfg.bls_window1.v_size = 0;
isp_cfg.others.bls_cfg.bls_window2.h_offs = 0;
isp_cfg.others.bls_cfg.bls_window2.v_offs = 0;
isp_cfg.others.bls_cfg.bls_window2.h_size = 0;
isp_cfg.others.bls_cfg.bls_window2.v_size = 0;
isp_cfg.others.bls_cfg.bls_samples = 0;
// blc0
isp_cfg.others.bls_cfg.fixed_val.r = blc.blc_r;
isp_cfg.others.bls_cfg.fixed_val.gr = blc.blc_gr;
isp_cfg.others.bls_cfg.fixed_val.gb = blc.blc_gb;
isp_cfg.others.bls_cfg.fixed_val.b = blc.blc_b;
if (blc.isp_ob_predgain != 0 ) {
isp_cfg.others.bls_cfg.bls1_val.r = CLIP((int)(blc.blc1_r * blc.isp_ob_predgain), 0, 32767);
isp_cfg.others.bls_cfg.bls1_val.gr = CLIP((int)(blc.blc1_gr * blc.isp_ob_predgain), 0, 32767);
isp_cfg.others.bls_cfg.bls1_val.gb = CLIP((int)(blc.blc1_gb * blc.isp_ob_predgain), 0, 32767);
isp_cfg.others.bls_cfg.bls1_val.b = CLIP((int)(blc.blc1_b * blc.isp_ob_predgain), 0, 32767);
} else {
isp_cfg.others.bls_cfg.bls1_val.r = (int)blc.blc1_r;
isp_cfg.others.bls_cfg.bls1_val.gr = (int)blc.blc1_gr;
isp_cfg.others.bls_cfg.bls1_val.gb = (int)blc.blc1_gb;
isp_cfg.others.bls_cfg.bls1_val.b = (int)blc.blc1_b;
}
// TODO bls1 params
isp_cfg.others.bls_cfg.bls1_en = blc.blc1_enable;
// blc_ob
isp_cfg.others.bls_cfg.isp_ob_offset = CLIP((int)blc.isp_ob_offset, 0, 511);
isp_cfg.others.bls_cfg.isp_ob_predgain = CLIP((int)(blc.isp_ob_predgain * (1 << 8)), 0, 65535);
isp_cfg.others.bls_cfg.isp_ob_max = CLIP(blc.isp_ob_max, 0, 1048575);
#if defined(ISP_HW_V39)
mLatestBlsCfg = isp_cfg.others.bls_cfg;
#endif
LOGD_ABLC("isp_ob_offset = 0x%x ,isp_ob_predgain = 0x%x, isp_ob_max = %x \n",
isp_cfg.others.bls_cfg.isp_ob_offset, isp_cfg.others.bls_cfg.isp_ob_predgain,
isp_cfg.others.bls_cfg.isp_ob_max);
#endif
LOGD_ABLC("%s:(%d) exit \n", __FUNCTION__, __LINE__);
}
#endif
void Isp39Params::convertAiqAldchToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
const rk_aiq_isp_ldch_v21_t& ldch_cfg)
{
struct isp39_ldch_cfg *pLdchCfg = &isp_cfg.others.ldch_cfg;
// TODO: add update flag for ldch
if (ldch_cfg.base.sw_ldch_en) {
isp_cfg.module_ens |= ISP39_MODULE_LDCH;
isp_cfg.module_en_update |= ISP39_MODULE_LDCH;
isp_cfg.module_cfg_update |= ISP39_MODULE_LDCH;
pLdchCfg->hsize = ldch_cfg.base.lut_h_size;
pLdchCfg->vsize = ldch_cfg.base.lut_v_size;
pLdchCfg->buf_fd = ldch_cfg.base.lut_mapxy_buf_fd[0];
pLdchCfg->frm_end_dis = ldch_cfg.frm_end_dis;
pLdchCfg->sample_avr_en = ldch_cfg.sample_avr_en;
pLdchCfg->bic_mode_en = ldch_cfg.bic_mode_en;
memcpy(pLdchCfg->bicubic, ldch_cfg.bicubic, sizeof(ldch_cfg.bicubic));
LOGV_CAMHW_SUBM(ISP20PARAM_SUBM, "enable ldch h/v size: %dx%d, buf_fd: %d",
pLdchCfg->hsize, pLdchCfg->vsize, pLdchCfg->buf_fd);
} else {
isp_cfg.module_ens &= ~ISP39_MODULE_LDCH;
isp_cfg.module_en_update |= ISP39_MODULE_LDCH;
}
}
void Isp39Params::convertAiqExpIspDgainToIsp39Params(struct isp39_isp_params_cfg& isp_cfg, RKAiqAecExpInfo_t ae_exp)
{
// TODO
struct isp32_awb_gain_cfg * cfg = &mLatestWbGainCfg;
struct isp32_awb_gain_cfg * dest_cfg = &isp_cfg.others.awb_gain_cfg;
uint16_t max_wb_gain = (1 << (ISP2X_WBGAIN_FIXSCALE_BIT + ISP3X_WBGAIN_INTSCALE_BIT)) - 1;
if(_working_mode == RK_AIQ_WORKING_MODE_NORMAL) {
float isp_dgain = MAX(1.0f, ae_exp.LinearExp.exp_real_params.isp_dgain);
if (isp_dgain < 1.0000001f)
return;
dest_cfg->gain0_red = MIN(cfg->gain0_red * isp_dgain + 0.5, max_wb_gain);
dest_cfg->gain0_green_r = MIN(cfg->gain0_green_r * isp_dgain + 0.5, max_wb_gain);
dest_cfg->gain0_green_b = MIN(cfg->gain0_green_b * isp_dgain + 0.5, max_wb_gain);
dest_cfg->gain0_blue = MIN(cfg->gain0_blue * isp_dgain + 0.5, max_wb_gain);
dest_cfg->gain1_red = MIN(cfg->gain1_red * isp_dgain + 0.5, max_wb_gain);
dest_cfg->gain1_green_r = MIN(cfg->gain1_green_r * isp_dgain + 0.5, max_wb_gain);
dest_cfg->gain1_green_b = MIN(cfg->gain1_green_b * isp_dgain + 0.5, max_wb_gain);
dest_cfg->gain1_blue = MIN(cfg->gain1_blue * isp_dgain + 0.5, max_wb_gain);
dest_cfg->gain2_red = MIN(cfg->gain2_red * isp_dgain + 0.5, max_wb_gain);
dest_cfg->gain2_green_r = MIN(cfg->gain2_green_r * isp_dgain + 0.5, max_wb_gain);
dest_cfg->gain2_green_b = MIN(cfg->gain2_green_b * isp_dgain + 0.5, max_wb_gain);
dest_cfg->gain2_blue = MIN(cfg->gain2_blue * isp_dgain + 0.5, max_wb_gain);
isp_cfg.module_cfg_update |= 1LL << RK_ISP2X_AWB_GAIN_ID;
} else {
float isp_dgain0 = MAX(1.0f, ae_exp.HdrExp[0].exp_real_params.isp_dgain);
float isp_dgain1 = MAX(1.0f, ae_exp.HdrExp[1].exp_real_params.isp_dgain);
float isp_dgain2 = MAX(1.0f, ae_exp.HdrExp[2].exp_real_params.isp_dgain);
if (isp_dgain0 < 1.0000001f &&
isp_dgain1 < 1.0000001f &&
isp_dgain2 < 1.0000001f )
return;
dest_cfg->gain0_red = MIN(cfg->gain0_red * isp_dgain0 + 0.5, max_wb_gain);
dest_cfg->gain0_green_r = MIN(cfg->gain0_green_r * isp_dgain0 + 0.5, max_wb_gain);
dest_cfg->gain0_green_b = MIN(cfg->gain0_green_b * isp_dgain0 + 0.5, max_wb_gain);
dest_cfg->gain0_blue = MIN(cfg->gain0_blue * isp_dgain0 + 0.5, max_wb_gain);
dest_cfg->gain1_red = MIN(cfg->gain1_red * isp_dgain1 + 0.5, max_wb_gain);
dest_cfg->gain1_green_r = MIN(cfg->gain1_green_r * isp_dgain1 + 0.5, max_wb_gain);
dest_cfg->gain1_green_b = MIN(cfg->gain1_green_b * isp_dgain1 + 0.5, max_wb_gain);
dest_cfg->gain1_blue = MIN(cfg->gain1_blue * isp_dgain1 + 0.5, max_wb_gain);
dest_cfg->gain2_red = MIN(cfg->gain2_red * isp_dgain2 + 0.5, max_wb_gain);
dest_cfg->gain2_green_r = MIN(cfg->gain2_green_r * isp_dgain2 + 0.5, max_wb_gain);
dest_cfg->gain2_green_b = MIN(cfg->gain2_green_b * isp_dgain2 + 0.5, max_wb_gain);
dest_cfg->gain2_blue = MIN(cfg->gain2_blue * isp_dgain2 + 0.5, max_wb_gain);
isp_cfg.module_cfg_update |= 1LL << RK_ISP2X_AWB_GAIN_ID;
}
}
#if (RKAIQ_HAVE_YUVME_V1)
void Isp39Params::convertAiqYuvmeToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_yuvme_v39_t& yuvme) {
LOGD_ANR("%s:%d enter! enable:%d tnr_wgt0_en:%d \n",
__FUNCTION__, __LINE__, !yuvme.bypass, yuvme.tnr_wgt0_en);
if (yuvme.bypass) {
isp_cfg.module_ens |= ISP39_MODULE_YUVME;
} else {
isp_cfg.module_ens |= ISP39_MODULE_YUVME;
}
isp_cfg.module_en_update |= ISP39_MODULE_YUVME;
isp_cfg.module_cfg_update |= ISP39_MODULE_YUVME;
struct isp39_yuvme_cfg* pYuvme = &isp_cfg.others.yuvme_cfg;
pYuvme->bypass = yuvme.bypass;
pYuvme->tnr_wgt0_en = yuvme.tnr_wgt0_en;
pYuvme->global_nr_strg = yuvme.global_nr_strg;
pYuvme->wgt_fact3 = yuvme.wgt_fact3;
pYuvme->search_range_mode = yuvme.search_range_mode;
pYuvme->static_detect_thred = yuvme.static_detect_thred;
pYuvme->time_relevance_offset = yuvme.time_relevance_offset;
pYuvme->space_relevance_offset = yuvme.space_relevance_offset;
pYuvme->nr_diff_scale = yuvme.nr_diff_scale;
pYuvme->nr_fusion_limit = yuvme.nr_fusion_limit;
pYuvme->nr_static_scale = yuvme.nr_static_scale;
pYuvme->nr_motion_scale = yuvme.nr_motion_scale;
pYuvme->nr_fusion_mode = yuvme.nr_fusion_mode;
pYuvme->cur_weight_limit = yuvme.cur_weight_limit;
for(int i = 0; i < ISP39_YUVME_SIGMA_NUM; i++) {
pYuvme->nr_luma2sigma_val[i] = yuvme.nr_luma2sigma_val[i];
}
}
#endif
#if RKAIQ_HAVE_DPCC_V2
#ifdef USE_NEWSTRUCT
void Isp39Params::convertAiqDpccToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
rk_aiq_isp_dpcc_params_t* dpcc_attr){
// hwi_api_dpcc20_params_check(&dpcc_attr->result);
if (dpcc_attr->en) {
isp_cfg.module_ens |= ISP2X_MODULE_DPCC;
isp_cfg.module_en_update |= ISP2X_MODULE_DPCC;
isp_cfg.module_cfg_update |= ISP2X_MODULE_DPCC;
} else {
isp_cfg.module_ens &= ~ISP2X_MODULE_DPCC;
isp_cfg.module_en_update |= ISP2X_MODULE_DPCC;
return;
}
rk_aiq_dpcc21_params_cvt(&dpcc_attr->result, &isp_cfg);
// hwi_api_dpcc20_params_cvt(&dpcc_attr->result, &isp_cfg);
// hwi_api_dpcc20_params_dump(&dpcc_attr->result, &isp_cfg.others.dpcc_cfg);
}
#endif
#endif
#if RKAIQ_HAVE_GIC_V2
void Isp39Params::convertAiqAgicToIsp39Params(struct isp39_isp_params_cfg& isp_cfg,
const rk_aiq_isp_gic_v21_t& agic)
{
bool enable = agic.gic_en;
if (enable) {
isp_cfg.module_en_update |= 1LL << RK_ISP2X_GIC_ID;
isp_cfg.module_ens |= 1LL << RK_ISP2X_GIC_ID;
isp_cfg.module_cfg_update |= 1LL << RK_ISP2X_GIC_ID;
} else {
isp_cfg.module_en_update |= 1LL << RK_ISP2X_GIC_ID;
isp_cfg.module_ens &= ~(1LL << RK_ISP2X_GIC_ID);
isp_cfg.module_cfg_update &= ~(1LL << RK_ISP2X_GIC_ID);
}
isp_cfg.others.gic_cfg.bypass_en = 0;
isp_cfg.others.gic_cfg.regmingradthrdark2 = agic.ProcResV21.regmingradthrdark2;
isp_cfg.others.gic_cfg.regmingradthrdark1 = agic.ProcResV21.regmingradthrdark1;
isp_cfg.others.gic_cfg.regminbusythre = agic.ProcResV21.regminbusythre;
isp_cfg.others.gic_cfg.regdarkthre = agic.ProcResV21.regdarkthre;
isp_cfg.others.gic_cfg.regmaxcorvboth = agic.ProcResV21.regmaxcorvboth;
isp_cfg.others.gic_cfg.regdarktthrehi = agic.ProcResV21.regdarktthrehi;
isp_cfg.others.gic_cfg.regkgrad2dark = agic.ProcResV21.regkgrad2dark;
isp_cfg.others.gic_cfg.regkgrad1dark = agic.ProcResV21.regkgrad1dark;
isp_cfg.others.gic_cfg.regstrengthglobal_fix = agic.ProcResV21.regstrengthglobal_fix;
isp_cfg.others.gic_cfg.regdarkthrestep = agic.ProcResV21.regdarkthrestep;
isp_cfg.others.gic_cfg.regkgrad2 = agic.ProcResV21.regkgrad2;
isp_cfg.others.gic_cfg.regkgrad1 = agic.ProcResV21.regkgrad1;
isp_cfg.others.gic_cfg.reggbthre = agic.ProcResV21.reggbthre;
isp_cfg.others.gic_cfg.regmaxcorv = agic.ProcResV21.regmaxcorv;
isp_cfg.others.gic_cfg.regmingradthr2 = agic.ProcResV21.regmingradthr2;
isp_cfg.others.gic_cfg.regmingradthr1 = agic.ProcResV21.regmingradthr1;
isp_cfg.others.gic_cfg.gr_ratio = agic.ProcResV21.gr_ratio;
isp_cfg.others.gic_cfg.noise_scale = agic.ProcResV21.noise_scale;
isp_cfg.others.gic_cfg.noise_base = agic.ProcResV21.noise_base;
isp_cfg.others.gic_cfg.diff_clip = agic.ProcResV21.diff_clip;
for (int i = 0; i < 15; i++) isp_cfg.others.gic_cfg.sigma_y[i] = agic.ProcResV21.sigma_y[i];
}
#endif
bool Isp39Params::convert3aResultsToIspCfg(SmartPtr<cam3aResult>& result, void* isp_cfg_p, bool is_multi_isp) {
struct isp39_isp_params_cfg& isp_cfg = *(struct isp39_isp_params_cfg*)isp_cfg_p;
if (result.ptr() == NULL) {
LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "3A result empty");
return false;
}
int32_t type = result->getType();
//LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%s, module (0x%x) convert params!\n", __FUNCTION__, type);
switch (type) {
case RESULT_TYPE_EXPOSURE_PARAM:
{
RkAiqSensorExpParamsProxy* expParams =
result.get_cast_ptr<RkAiqSensorExpParamsProxy>();
if (expParams)
convertAiqExpIspDgainToIsp39Params(isp_cfg,
expParams->data()->aecExpInfo);
}
break;
case RESULT_TYPE_AWBGAIN_PARAM: {
RkAiqIspAwbGainParamsProxy* awb_gain =
result.get_cast_ptr<RkAiqIspAwbGainParamsProxy>();
if (awb_gain) {
convertAiqAwbGainToIsp39Params(isp_cfg, awb_gain->data()->result, true);
}
}
break;
case RESULT_TYPE_AWB_PARAM: {
#if RKAIQ_HAVE_AWB_V32
mAwbParams = result.ptr();
RkAiqIspAwbParamsProxy* params =
result.get_cast_ptr<RkAiqIspAwbParamsProxy>();
if (params) convertAiqAwbToIsp39Params(isp_cfg, params->data()->result, true);
#endif
}
break;
case RESULT_TYPE_GIC_PARAM: {
#if RKAIQ_HAVE_GIC_V2
RkAiqIspGicParamsProxy* params =
result.get_cast_ptr<RkAiqIspGicParamsProxy>();
if (params) convertAiqAgicToIsp39Params(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_LSC_PARAM: {
#if RKAIQ_HAVE_LSC_V3
RkAiqIspLscParamsProxy* params =
result.get_cast_ptr<RkAiqIspLscParamsProxy>();
if (params) convertAiqLscToIsp20Params(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_AF_PARAM: {
#if RKAIQ_HAVE_AF_V33 || RKAIQ_ONLY_AF_STATS_V33
RkAiqIspAfParamsProxy* params =
result.get_cast_ptr<RkAiqIspAfParamsProxy>();
if (params) convertAiqAfToIsp39Params(isp_cfg, params->data()->result, true);
#endif
}
break;
case RESULT_TYPE_CCM_PARAM: {
#if RKAIQ_HAVE_CCM_V3
RkAiqIspCcmParamsProxy* params =
result.get_cast_ptr<RkAiqIspCcmParamsProxy>();
if (params) convertAiqCcmToIsp39Params(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_CAC_PARAM: {
#if RKAIQ_HAVE_CAC_V11
RkAiqIspCacParamsProxy* params =
result.get_cast_ptr<RkAiqIspCacParamsProxy>();
if (params)
convertAiqCacToIsp39Params(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_DEBAYER_PARAM: {
#if RKAIQ_HAVE_DEBAYER_V3
RkAiqIspDebayerParamsProxy* params =
result.get_cast_ptr<RkAiqIspDebayerParamsProxy>();
if (params) {
convertAiqAdebayerToIsp39Params(isp_cfg, params->data()->result);
}
#endif
}
break;
case RESULT_TYPE_AEC_PARAM: {
#ifdef ISP_HW_V39
RkAiqIspAecParamsProxy* params =
result.get_cast_ptr<RkAiqIspAecParamsProxy>();
if (params) {
convertAiqAeToIsp20Params(isp_cfg, params->data()->result);
}
#endif
}
break;
case RESULT_TYPE_HIST_PARAM: {
#ifdef ISP_HW_V39
RkAiqIspHistParamsProxy* params =
result.get_cast_ptr<RkAiqIspHistParamsProxy>();
if (params) convertAiqHistToIsp20Params(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_AGAMMA_PARAM: {
#if RKAIQ_HAVE_GAMMA_V11
RkAiqIspAgammaParamsProxy* params =
result.get_cast_ptr<RkAiqIspAgammaParamsProxy>();
if (params) convertAiqAgammaToIsp3xParams(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_MERGE_PARAM: {
#if RKAIQ_HAVE_MERGE_V12
RkAiqIspMergeParamsProxy* params =
result.get_cast_ptr<RkAiqIspMergeParamsProxy>();
if (params) convertAiqMergeToIsp39Params(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_DEHAZE_PARAM: {
#if RKAIQ_HAVE_DEHAZE_V14
#ifdef USE_NEWSTRUCT
RkAiqIspDehazeParamsProxy* params =
result.get_cast_ptr<RkAiqIspDehazeParamsProxy>();
if (params) convertAiqDehazeToIsp39Params(isp_cfg, params->data().ptr());
#else
RkAiqIspDehazeParamsProxy* params =
result.get_cast_ptr<RkAiqIspDehazeParamsProxy>();
if (params) convertAiqAdehazeToIsp39Params(isp_cfg, params->data()->result);
#endif
#endif
}
break;
case RESULT_TYPE_DRC_PARAM: {
#if RKAIQ_HAVE_DRC_V20
#ifdef USE_NEWSTRUCT
RkAiqIspDrcParamsProxy* params = result.get_cast_ptr<RkAiqIspDrcParamsProxy>();
if (params) convertAiqDrcToIsp39Params(isp_cfg, params->data().ptr());
#else
RkAiqIspDrcParamsProxy* params = result.get_cast_ptr<RkAiqIspDrcParamsProxy>();
if (params) convertAiqDrcToIsp39Params(isp_cfg, params->data()->result);
#endif
#endif
}
break;
case RESULT_TYPE_LUT3D_PARAM: {
#if RKAIQ_HAVE_3DLUT_V1
RkAiqIspLut3dParamsProxy* params =
result.get_cast_ptr<RkAiqIspLut3dParamsProxy>();
if (params) convertAiqA3dlutToIsp20Params(isp_cfg, params->data()->result);
#endif
}
break;
#if RKAIQ_HAVE_DPCC_V2
case RESULT_TYPE_DPCC_PARAM: {
#ifdef USE_NEWSTRUCT
RkAiqIspDpccParamsProxy* params = result.get_cast_ptr<RkAiqIspDpccParamsProxy>();
if (params) convertAiqDpccToIsp39Params(isp_cfg, params->data().ptr());
#else
RkAiqIspDpccParamsProxy* params =
result.get_cast_ptr<RkAiqIspDpccParamsProxy>();
if (params) convertAiqDpccToIsp20Params(isp_cfg, params->data()->result);
#endif
}
break;
#endif
case RESULT_TYPE_CSM_PARAM: {
#ifdef USE_NEWSTRUCT
#else
RkAiqIspCsmParamsProxy* params =
result.get_cast_ptr<RkAiqIspCsmParamsProxy>();
if (params) convertAiqCsmToIsp21Params(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_RAWNR_PARAM: {
#if RKAIQ_HAVE_BAYER2DNR_V23
RkAiqIspBaynrParamsProxy* params =
result.get_cast_ptr<RkAiqIspBaynrParamsProxy>();
if (params) convertAiqRawnrToIsp39Params(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_TNR_PARAM: {
#if (RKAIQ_HAVE_BAYERTNR_V30)
#ifdef USE_NEWSTRUCT
RkAiqIspBtnrParamsProxy* params =
result.get_cast_ptr<RkAiqIspBtnrParamsProxy>();
if (params) convertAiqBtnrToIsp39Params(isp_cfg, params->data().ptr());
#else
RkAiqIspTnrParamsProxy* params =
result.get_cast_ptr<RkAiqIspTnrParamsProxy>();
if (params) convertAiqTnrToIsp39Params(isp_cfg, params->data()->result);
#endif
#endif
}
break;
case RESULT_TYPE_YNR_PARAM: {
#if RKAIQ_HAVE_YNR_V24
#ifdef USE_NEWSTRUCT
RkAiqIspYnrParamsProxy* params =
result.get_cast_ptr<RkAiqIspYnrParamsProxy>();
if (params) convertAiqYnrToIsp39Params(isp_cfg, params->data().ptr());
#else
RkAiqIspYnrParamsProxy* params =
result.get_cast_ptr<RkAiqIspYnrParamsProxy>();
if (params) convertAiqYnrToIsp39Params(isp_cfg, params->data()->result);
#endif
#endif
}
break;
case RESULT_TYPE_UVNR_PARAM: {
#if (RKAIQ_HAVE_CNR_V31)
#ifdef USE_NEWSTRUCT
RkAiqIspCnrParamsProxy* params =
result.get_cast_ptr<RkAiqIspCnrParamsProxy>();
if (params) convertAiqCnrToIsp39Params(isp_cfg, params->data().ptr());
#else
RkAiqIspCnrParamsProxy* params =
result.get_cast_ptr<RkAiqIspCnrParamsProxy>();
if (params) convertAiqUvnrToIsp39Params(isp_cfg, params->data()->result);
#endif
#endif
}
break;
case RESULT_TYPE_BLC_PARAM:
{
#if USE_NEWSTRUCT
RkAiqIspBlcParamsProxy* params =
result.get_cast_ptr<RkAiqIspBlcParamsProxy>();
if (params) convertAiqBlcToIsp39Params(isp_cfg, params->data().ptr());
#else
RkAiqIspBlcParamsProxy* params =
result.get_cast_ptr<RkAiqIspBlcParamsProxy>();
if (params) convertAiqBlcToIsp39Params(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_GAIN_PARAM: {
RkAiqIspGainParamsProxy* params =
result.get_cast_ptr<RkAiqIspGainParamsProxy>();
if (params) convertAiqGainToIsp3xParams(isp_cfg, params->data()->result);
}
break;
case RESULT_TYPE_SHARPEN_PARAM: {
#if (RKAIQ_HAVE_SHARP_V34)
#ifdef USE_NEWSTRUCT
RkAiqIspSharpParamsProxy* params =
result.get_cast_ptr<RkAiqIspSharpParamsProxy>();
if (params) convertAiqSharpToIsp39Params(isp_cfg, params->data().ptr());
#else
RkAiqIspSharpenParamsProxy* params =
result.get_cast_ptr<RkAiqIspSharpenParamsProxy>();
if (params) convertAiqSharpenToIsp39Params(isp_cfg, params->data()->result);
#endif
#endif
}
break;
case RESULT_TYPE_CGC_PARAM: {
#if RKAIQ_HAVE_CGC_V1
RkAiqIspCgcParamsProxy* params =
result.get_cast_ptr<RkAiqIspCgcParamsProxy>();
if (params) convertAiqCgcToIsp21Params(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_CP_PARAM: {
#if RKAIQ_HAVE_ACP_V10
RkAiqIspCpParamsProxy* params =
result.get_cast_ptr<RkAiqIspCpParamsProxy>();
if (params) convertAiqCpToIsp20Params(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_LDCH_PARAM:
{
RkAiqIspLdchParamsProxy* params = result.get_cast_ptr<RkAiqIspLdchParamsProxy>();
if (params)
convertAiqAldchToIsp39Params(isp_cfg, params->data()->result);
}
break;
case RESULT_TYPE_MOTION_PARAM: {
#if RKAIQ_HAVE_YUVME_V1
RkAiqIspYuvmeParamsProxy* params = result.get_cast_ptr<RkAiqIspYuvmeParamsProxy>();
if (params) convertAiqYuvmeToIsp39Params(isp_cfg, params->data()->result);
#endif
}
break;
case RESULT_TYPE_RGBIR_PARAM: {
#if RKAIQ_HAVE_RGBIR_REMOSAIC_V10
RkAiqIspRgbirParamsProxy* params = result.get_cast_ptr<RkAiqIspRgbirParamsProxy>();
if (params) convertAiqRgbirToIsp39Params(isp_cfg, params->data()->result);
#endif
}
case RESULT_TYPE_IE_PARAM:
{
#if RKAIQ_HAVE_AIE_V10
#if USE_NEWSTRUCT
RkAiqIspIeParamsProxy* params = result.get_cast_ptr<RkAiqIspIeParamsProxy>();
if (params)
convertAiqIeToIsp20Params(isp_cfg_p, params->data().ptr());
#endif
#endif
}
break;
default:
LOGE("unknown param type: 0x%x!", type);
return false;
}
return true;
}
} // namespace RkCam