#include "third_party_ae_algo.h"
|
#include "uAPI2/rk_aiq_user_api2_camgroup.h"
|
#include "uAPI2/rk_aiq_user_api2_sysctl.h"
|
|
int32_t custom_ae_init(void* ctx)
|
{
|
//TO DO
|
printf("custom ae test: %s \n", __func__);
|
rk_aiq_sys_ctx_t* sys_ctx = NULL;
|
rk_aiq_camgroup_ctx_t* group_ctx = NULL;
|
|
rk_aiq_cam_type_t cam_type = (rk_aiq_cam_type_t)(*(int*)(ctx));
|
|
if (cam_type == RK_AIQ_CAM_TYPE_GROUP)
|
group_ctx = (rk_aiq_camgroup_ctx_t*)ctx;
|
else
|
sys_ctx = (rk_aiq_sys_ctx_t*)ctx;
|
|
if (group_ctx)
|
printf("%s:%d group custom ae !\n", __func__, __LINE__);
|
else
|
printf("%s:%d single custom ae !\n", __func__, __LINE__);
|
|
return 0;
|
}
|
|
int32_t custom_ae_run(void* ctx, const rk_aiq_customAe_stats_t* pstAeInfo,
|
rk_aiq_customeAe_results_t* pstAeResult)
|
{
|
rk_aiq_sys_ctx_t* sys_ctx = NULL;
|
rk_aiq_camgroup_ctx_t* group_ctx = NULL;
|
|
rk_aiq_cam_type_t cam_type = (rk_aiq_cam_type_t)(*(int*)(ctx));
|
|
if (cam_type == RK_AIQ_CAM_TYPE_GROUP)
|
group_ctx = (rk_aiq_camgroup_ctx_t*)ctx;
|
else
|
sys_ctx = (rk_aiq_sys_ctx_t*)ctx;
|
|
if (group_ctx)
|
printf("%s:%d group custom ae !\n", __func__, __LINE__);
|
else
|
printf("%s:%d single custom ae !\n", __func__, __LINE__);
|
|
#if 0
|
|
if(pstAeInfo != NULL) {
|
float MeanLuma[3] = {0.0f};
|
|
for(int i = 0; i < 225; i++) {
|
MeanLuma[0] += (float)(pstAeInfo->rawae_stat[0].rawae_big.channelg_xy[i] >> 4); //channelg is 12bit, channelr/channelb is 10bit
|
MeanLuma[1] += (float)(pstAeInfo->rawae_stat[1].rawae_big.channelg_xy[i] >> 4); //channelg is 12bit, channelr/channelb is 10bit
|
}
|
|
MeanLuma[0] /= 225.0f; //range:0~255 (equal to 8bit)
|
MeanLuma[1] /= 225.0f; //range:0~255 (equal to 8bit)
|
|
|
printf("custom ae test: %s lin gain=%f,time=%f,meanluma = %f\n", __func__, pstAeInfo->linear_exp.exp_real_params.analog_gain,
|
pstAeInfo->linear_exp.exp_real_params.integration_time, MeanLuma[0]);
|
printf("custom ae test: %s hdr sgain=%f,stime=%f,mgain=%f,mtime=%f,smeanluma = %f,mmeanluma=%f\n", __func__,
|
pstAeInfo->hdr_exp[0].exp_real_params.analog_gain, pstAeInfo->hdr_exp[0].exp_real_params.integration_time,
|
pstAeInfo->hdr_exp[1].exp_real_params.analog_gain, pstAeInfo->hdr_exp[1].exp_real_params.integration_time,
|
MeanLuma[0], MeanLuma[1]);
|
}
|
|
|
static uint32_t frmid = 0;
|
|
if(frmid % 20 < 10) {
|
pstAeResult->linear_exp.exp_real_params.analog_gain = 2.0f;
|
pstAeResult->linear_exp.exp_real_params.integration_time = 0.02f;
|
pstAeResult->linear_exp.exp_real_params.digital_gain = 1.0f;
|
pstAeResult->linear_exp.exp_real_params.isp_dgain = 1.0f;
|
pstAeResult->linear_exp.exp_real_params.dcg_mode = 0;
|
|
pstAeResult->linear_exp.exp_sensor_params.coarse_integration_time = 0x7bc;
|
pstAeResult->linear_exp.exp_sensor_params.analog_gain_code_global = 0x14;
|
|
pstAeResult->hdr_exp[0].exp_real_params.analog_gain = 1.0f;
|
pstAeResult->hdr_exp[0].exp_real_params.integration_time = 0.003f;
|
pstAeResult->hdr_exp[0].exp_real_params.digital_gain = 1.0f;
|
pstAeResult->hdr_exp[0].exp_real_params.isp_dgain = 1.0f;
|
pstAeResult->hdr_exp[0].exp_real_params.dcg_mode = 0;
|
|
pstAeResult->hdr_exp[0].exp_sensor_params.analog_gain_code_global = 0x0;
|
pstAeResult->hdr_exp[0].exp_sensor_params.coarse_integration_time = 0x128;
|
|
pstAeResult->hdr_exp[1].exp_real_params.analog_gain = 2.0f;
|
pstAeResult->hdr_exp[1].exp_real_params.integration_time = 0.01f;
|
pstAeResult->hdr_exp[1].exp_real_params.digital_gain = 1.0f;
|
pstAeResult->hdr_exp[1].exp_real_params.isp_dgain = 1.0f;
|
pstAeResult->hdr_exp[1].exp_real_params.dcg_mode = 0;
|
|
pstAeResult->hdr_exp[1].exp_sensor_params.analog_gain_code_global = 0x14;
|
pstAeResult->hdr_exp[1].exp_sensor_params.coarse_integration_time = 0x3de;
|
|
} else {
|
pstAeResult->linear_exp.exp_real_params.analog_gain = 40.0f;
|
pstAeResult->linear_exp.exp_real_params.integration_time = 0.03f;
|
pstAeResult->linear_exp.exp_real_params.digital_gain = 1.0f;
|
pstAeResult->linear_exp.exp_real_params.isp_dgain = 1.0f;
|
pstAeResult->linear_exp.exp_real_params.dcg_mode = 1;
|
|
pstAeResult->linear_exp.exp_sensor_params.analog_gain_code_global = 0x4f;
|
pstAeResult->linear_exp.exp_sensor_params.coarse_integration_time = 0xb9a;
|
|
|
pstAeResult->hdr_exp[0].exp_real_params.analog_gain = 6.0f;
|
pstAeResult->hdr_exp[0].exp_real_params.integration_time = 0.003f;
|
pstAeResult->hdr_exp[0].exp_real_params.digital_gain = 1.0f;
|
pstAeResult->hdr_exp[0].exp_real_params.isp_dgain = 1.0f;
|
pstAeResult->hdr_exp[0].exp_real_params.dcg_mode = 1;
|
|
pstAeResult->hdr_exp[0].exp_sensor_params.analog_gain_code_global = 0x18;
|
pstAeResult->hdr_exp[0].exp_sensor_params.coarse_integration_time = 0x128;
|
|
|
pstAeResult->hdr_exp[1].exp_real_params.analog_gain = 40.0f;
|
pstAeResult->hdr_exp[1].exp_real_params.integration_time = 0.01f;
|
pstAeResult->hdr_exp[1].exp_real_params.digital_gain = 1.0f;
|
pstAeResult->hdr_exp[1].exp_real_params.isp_dgain = 1.0f;
|
pstAeResult->hdr_exp[1].exp_real_params.dcg_mode = 1;
|
|
pstAeResult->hdr_exp[1].exp_sensor_params.analog_gain_code_global = 0x4f;
|
pstAeResult->hdr_exp[1].exp_sensor_params.coarse_integration_time = 0x3de;
|
}
|
|
frmid++;
|
|
#endif
|
|
return 0;
|
}
|
|
int32_t custom_ae_ctrl(void* ctx, uint32_t u32Cmd, void *pValue)
|
{
|
//TO DO
|
printf("custom ae test: %s \n", __func__);
|
return 0;
|
}
|
|
int32_t custom_ae_exit(void* ctx)
|
{
|
//TO DO
|
printf("custom ae test: %s \n", __func__);
|
return 0;
|
}
|