#include "bayernr_xml2json_v2.h"
|
#include "RkAiqCalibApi.h"
|
|
|
#define BAYERNRV2_SETTING_NUM (2)
|
#define BAYERNRV2_ISO_NUM (13)
|
|
int bayernrV2_calibdb_to_calibdbV2(struct list_head *pBayernrList, CalibDbV2_BayerNrV2_t *pCalibdbV2, int mode_idx)
|
{
|
CalibDbV2_BayerNrV2_CalibPara_t *pCalibParaV2 = NULL;
|
CalibDbV2_BayerNrV2_Bayernr2d_t *p2dV2 = NULL;
|
CalibDbV2_BayerNrV2_Bayernr3d_t *p3dV2 = NULL;
|
CalibDbV2_BayerNrV2_CalibPara_Setting_ISO_t *pCalibISOV2 = NULL;
|
CalibDbV2_BayerNrV2_Bayernr2d_Setting_ISO_t *p2dISOV2 = NULL;
|
CalibDbV2_BayerNrV2_Bayernr3d_Setting_ISO_t *p3dISOV2 = NULL;
|
|
|
if(pBayernrList == NULL || pCalibdbV2 == NULL) {
|
printf(" pCalibdb is NULL pointer\n");
|
return -1;
|
}
|
|
CalibDb_Bayernr_V2_t* pBayenrProfile = NULL;
|
CamCalibdbGetBayernrV2ProfileByIdx(pBayernrList, mode_idx, &pBayenrProfile);
|
if(pBayenrProfile == NULL) {
|
printf(" %s:%d bayernr can't get mode:%d para from calibdbv1\n",
|
__FUNCTION__,
|
__LINE__,
|
mode_idx);
|
return -1;
|
}
|
|
pCalibParaV2 = &pCalibdbV2->CalibPara;
|
p2dV2 = &pCalibdbV2->Bayernr2D;
|
p3dV2 = &pCalibdbV2->Bayernr3D;
|
|
//malloc settting size
|
pCalibParaV2->Setting = (CalibDbV2_BayerNrV2_CalibPara_Setting_t *)malloc(BAYERNRV2_SETTING_NUM * sizeof(CalibDbV2_BayerNrV2_CalibPara_Setting_t));
|
memset(pCalibParaV2->Setting, 0x00, BAYERNRV2_SETTING_NUM * sizeof(CalibDbV2_BayerNrV2_CalibPara_Setting_t));
|
pCalibParaV2->Setting_len = BAYERNRV2_SETTING_NUM;
|
p2dV2->Setting = (CalibDbV2_BayerNrV2_Bayernr2d_Setting_t *)malloc(BAYERNRV2_SETTING_NUM * sizeof(CalibDbV2_BayerNrV2_Bayernr2d_Setting_t));
|
memset(p2dV2->Setting, 0x00, BAYERNRV2_SETTING_NUM * sizeof(CalibDbV2_BayerNrV2_Bayernr2d_Setting_t));
|
p2dV2->Setting_len = BAYERNRV2_SETTING_NUM;
|
p3dV2->Setting = (CalibDbV2_BayerNrV2_Bayernr3d_Setting_t *)malloc(BAYERNRV2_SETTING_NUM * sizeof(CalibDbV2_BayerNrV2_Bayernr3d_Setting_t));
|
memset(p3dV2->Setting, 0x00, BAYERNRV2_SETTING_NUM * sizeof(CalibDbV2_BayerNrV2_Bayernr3d_Setting_t));
|
p3dV2->Setting_len = BAYERNRV2_SETTING_NUM;
|
|
//malloc iso size
|
for(int i = 0; i < BAYERNRV2_SETTING_NUM; i++) {
|
pCalibParaV2->Setting[i].Calib_ISO = (CalibDbV2_BayerNrV2_CalibPara_Setting_ISO_t *)malloc(BAYERNRV2_ISO_NUM * sizeof(CalibDbV2_BayerNrV2_CalibPara_Setting_ISO_t));
|
memset(pCalibParaV2->Setting[i].Calib_ISO, 0x00, BAYERNRV2_ISO_NUM * sizeof(CalibDbV2_BayerNrV2_CalibPara_Setting_ISO_t));
|
pCalibParaV2->Setting[i].Calib_ISO_len = BAYERNRV2_ISO_NUM;
|
|
p2dV2->Setting[i].Tuning_ISO = (CalibDbV2_BayerNrV2_Bayernr2d_Setting_ISO_t *)malloc(BAYERNRV2_ISO_NUM * sizeof(CalibDbV2_BayerNrV2_Bayernr2d_Setting_ISO_t));
|
memset(p2dV2->Setting[i].Tuning_ISO, 0x00, BAYERNRV2_ISO_NUM * sizeof(CalibDbV2_BayerNrV2_Bayernr2d_Setting_ISO_t));
|
p2dV2->Setting[i].Tuning_ISO_len = BAYERNRV2_ISO_NUM;
|
|
p3dV2->Setting[i].Tuning_ISO = (CalibDbV2_BayerNrV2_Bayernr3d_Setting_ISO_t *)malloc(BAYERNRV2_ISO_NUM * sizeof(CalibDbV2_BayerNrV2_Bayernr3d_Setting_ISO_t));
|
memset(p3dV2->Setting[i].Tuning_ISO, 0x00, BAYERNRV2_ISO_NUM * sizeof(CalibDbV2_BayerNrV2_Bayernr3d_Setting_ISO_t));
|
p3dV2->Setting[i].Tuning_ISO_len = BAYERNRV2_ISO_NUM;
|
}
|
|
//assign the value
|
p2dV2->enable = pBayenrProfile->st2DParams.bayernrv2_2dnr_enable;
|
p3dV2->enable = pBayenrProfile->st3DParams.bayernrv2_tnr_enable;
|
|
for(int i = 0; i < BAYERNRV2_SETTING_NUM; i++) {
|
Calibdb_Bayernr_2Dparams_V2_t *p2dParamCalibV1 = NULL;
|
CamCalibdbGetBayernrV2Setting2DByIdx(&pBayenrProfile->st2DParams.listHead, i, &p2dParamCalibV1);
|
CalibDb_Bayernr_3DParams_V2_t *p3dParamCalibV1 = NULL;
|
CamCalibdbGetBayernrV2Setting3DByIdx(&pBayenrProfile->st3DParams.listHead, i, &p3dParamCalibV1);
|
|
if(p2dParamCalibV1 == NULL || p3dParamCalibV1 == NULL) {
|
printf("bayernr can't get setting:%d from xml calibdb! \n", i);
|
break;
|
}
|
|
pCalibParaV2->Setting[i].SNR_Mode = strdup(p2dParamCalibV1->snr_mode);
|
pCalibParaV2->Setting[i].Sensor_Mode = strdup(p2dParamCalibV1->sensor_mode);
|
p2dV2->Setting[i].SNR_Mode = strdup(p2dParamCalibV1->snr_mode);
|
p2dV2->Setting[i].Sensor_Mode = strdup(p2dParamCalibV1->sensor_mode);
|
p3dV2->Setting[i].SNR_Mode = strdup(p3dParamCalibV1->snr_mode);
|
p3dV2->Setting[i].Sensor_Mode = strdup(p3dParamCalibV1->sensor_mode);
|
|
for(int j = 0; j < BAYERNRV2_ISO_NUM; j++) {
|
pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
|
p2dISOV2 = &p2dV2->Setting[i].Tuning_ISO[j];
|
p3dISOV2 = &p3dV2->Setting[i].Tuning_ISO[j];
|
|
//calib
|
pCalibISOV2->iso = p2dParamCalibV1->iso[j];
|
for(int k = 0; k < 16; k++) {
|
pCalibISOV2->lumapoint[k] = p2dParamCalibV1->bayernrv2_filter_lumapoint_r[k];
|
pCalibISOV2->sigma[k] = p2dParamCalibV1->bayernrv2_filter_sigma_r[j][k];
|
}
|
|
//2d
|
p2dISOV2->iso = p2dParamCalibV1->iso[j];
|
p2dISOV2->filter_strength = p2dParamCalibV1->bayernrv2_filter_strength_r[j];
|
p2dISOV2->gauss_guide = p2dParamCalibV1->bayernrv2_gauss_guide_r[j];
|
p2dISOV2->edgesofts = p2dParamCalibV1->bayernrv2_filter_edgesofts_r[j];
|
p2dISOV2->ratio = p2dParamCalibV1->bayernrv2_filter_soft_threshold_ratio_r[j];
|
p2dISOV2->weight = p2dParamCalibV1->bayernrv2_filter_out_wgt_r[j];
|
|
//3d
|
p3dISOV2->iso = p3dParamCalibV1->iso[j];
|
p3dISOV2->filter_strength = p3dParamCalibV1->bayernrv2_tnr_filter_strength_r[j];
|
p3dISOV2->sp_filter_strength = p3dParamCalibV1->bayernrv2_tnr_sp_filter_strength_r[j];
|
p3dISOV2->lo_clipwgt = p3dParamCalibV1->bayernrv2_tnr_lo_clipwgt_r[j];
|
p3dISOV2->hi_clipwgt = p3dParamCalibV1->bayernrv2_tnr_hi_clipwgt_r[j];
|
p3dISOV2->softwgt = p3dParamCalibV1->bayernrv2_tnr_softwgt_r[j];
|
|
|
}
|
}
|
|
return 0;
|
|
}
|
|
|
|
int bayernrV2_calibdbV2_to_calibdb(CalibDbV2_BayerNrV2_t *pCalibdbV2, struct list_head *pBayernrList, int mode_idx)
|
{
|
CalibDbV2_BayerNrV2_CalibPara_t *pCalibParaV2 = NULL;
|
CalibDbV2_BayerNrV2_Bayernr2d_t *p2dV2 = NULL;
|
CalibDbV2_BayerNrV2_Bayernr3d_t *p3dV2 = NULL;
|
CalibDbV2_BayerNrV2_CalibPara_Setting_ISO_t *pCalibISOV2 = NULL;
|
CalibDbV2_BayerNrV2_Bayernr2d_Setting_ISO_t *p2dISOV2 = NULL;
|
CalibDbV2_BayerNrV2_Bayernr3d_Setting_ISO_t *p3dISOV2 = NULL;
|
|
CalibDb_Bayernr_V2_t* pBayenrProfile = NULL;
|
Calibdb_Bayernr_2Dparams_V2_t *p2dParamCalibV1 = NULL;
|
CalibDb_Bayernr_3DParams_V2_t *p3dParamCalibV1 = NULL;
|
|
|
if(pBayernrList == NULL || pCalibdbV2 == NULL) {
|
printf(" pCalibdb is NULL pointer\n");
|
return -1;
|
}
|
|
CamCalibdbGetBayernrV2ProfileByIdx(pBayernrList, mode_idx, &pBayenrProfile);
|
if(pBayenrProfile == NULL) {
|
printf(" bayernr can't get mode:%d para from calibdbv1\n", mode_idx);
|
return -1;
|
}
|
|
pCalibParaV2 = &pCalibdbV2->CalibPara;
|
p2dV2 = &pCalibdbV2->Bayernr2D;
|
p3dV2 = &pCalibdbV2->Bayernr3D;
|
|
|
//2d assign the value
|
for(int i = 0; i < p2dV2->Setting_len; i++) {
|
p2dParamCalibV1 = NULL;
|
CamCalibdbGetBayernrV2Setting2DByIdx(&pBayenrProfile->st2DParams.listHead, i, &p2dParamCalibV1);
|
|
if(p2dParamCalibV1 == NULL) {
|
printf("bayernr can't get setting:%d from xml calibdb! \n", i);
|
break;
|
}
|
|
strcpy(p2dParamCalibV1->snr_mode, p2dV2->Setting[i].SNR_Mode);
|
strcpy(p2dParamCalibV1->sensor_mode, p2dV2->Setting[i].Sensor_Mode);
|
|
for(int j = 0; j < BAYERNRV2_ISO_NUM && i < p3dV2->Setting[i].Tuning_ISO_len; j++) {
|
pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
|
p2dISOV2 = &p2dV2->Setting[i].Tuning_ISO[j];
|
|
//calib
|
p2dParamCalibV1->iso[j] = pCalibISOV2->iso;
|
for(int k = 0; k < 16; k++) {
|
p2dParamCalibV1->bayernrv2_filter_lumapoint_r[k] = pCalibISOV2->lumapoint[k];
|
p2dParamCalibV1->bayernrv2_filter_sigma_r[j][k] = pCalibISOV2->sigma[k];
|
}
|
|
//2d
|
p2dParamCalibV1->iso[j] = p2dISOV2->iso;
|
p2dParamCalibV1->bayernrv2_filter_strength_r[j] = p2dISOV2->filter_strength;
|
p2dParamCalibV1->bayernrv2_gauss_guide_r[j] = p2dISOV2->gauss_guide;
|
p2dParamCalibV1->bayernrv2_filter_edgesofts_r[j] = p2dISOV2->edgesofts;
|
p2dParamCalibV1->bayernrv2_filter_soft_threshold_ratio_r[j] = p2dISOV2->ratio;
|
p2dParamCalibV1->bayernrv2_filter_out_wgt_r[j] = p2dISOV2->weight;
|
|
}
|
}
|
|
//3d
|
for(int i = 0; i < p3dV2->Setting_len; i++) {
|
p3dParamCalibV1 = NULL;
|
CamCalibdbGetBayernrV2Setting3DByIdx(&pBayenrProfile->st3DParams.listHead, i, &p3dParamCalibV1);
|
|
if(p3dParamCalibV1 == NULL) {
|
printf("bayernr can't get setting:%d from xml calibdb! \n", i);
|
break;
|
}
|
|
strcpy(p3dParamCalibV1->snr_mode, p3dV2->Setting[i].SNR_Mode);
|
strcpy(p3dParamCalibV1->sensor_mode, p3dV2->Setting[i].Sensor_Mode);
|
|
for(int j = 0; j < BAYERNRV2_ISO_NUM && i < p3dV2->Setting[i].Tuning_ISO_len; j++) {
|
pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
|
p3dISOV2 = &p3dV2->Setting[i].Tuning_ISO[j];
|
|
//calib
|
for(int k = 0; k < 16; k++) {
|
p3dParamCalibV1->bayernrv2_lumapoint_r[k] = pCalibISOV2->lumapoint[k];
|
p3dParamCalibV1->bayernrv2_sigma_r[j][k] = pCalibISOV2->sigma[k];
|
}
|
|
//3d
|
p3dParamCalibV1->iso[j] = p3dISOV2->iso;
|
p3dParamCalibV1->bayernrv2_tnr_filter_strength_r[j] = p3dISOV2->filter_strength;
|
p3dParamCalibV1->bayernrv2_tnr_sp_filter_strength_r[j] = p3dISOV2->sp_filter_strength;
|
p3dParamCalibV1->bayernrv2_tnr_lo_clipwgt_r[j] = p3dISOV2->lo_clipwgt;
|
p3dParamCalibV1->bayernrv2_tnr_hi_clipwgt_r[j] = p3dISOV2->hi_clipwgt;
|
p3dParamCalibV1->bayernrv2_tnr_softwgt_r[j] = p3dISOV2->softwgt;
|
|
}
|
}
|
return 0;
|
|
}
|
|
|
void bayernrV2_calibdbV2_free(CalibDbV2_BayerNrV2_t *pCalibdbV2)
|
{
|
if(pCalibdbV2 != NULL) {
|
if(pCalibdbV2->CalibPara.Setting != NULL) {
|
for(int i = 0; i < pCalibdbV2->CalibPara.Setting_len; i++) {
|
if(pCalibdbV2->CalibPara.Setting[i].Calib_ISO != NULL) {
|
free(pCalibdbV2->CalibPara.Setting[i].Calib_ISO );
|
}
|
if(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode != NULL) {
|
free(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode);
|
}
|
if(pCalibdbV2->CalibPara.Setting[i].SNR_Mode != NULL) {
|
free(pCalibdbV2->CalibPara.Setting[i].SNR_Mode);
|
}
|
}
|
free(pCalibdbV2->CalibPara.Setting);
|
}
|
|
if(pCalibdbV2->Bayernr2D.Setting != NULL) {
|
for(int i = 0; i < pCalibdbV2->Bayernr2D.Setting_len; i++) {
|
if(pCalibdbV2->Bayernr2D.Setting[i].Tuning_ISO != NULL) {
|
free(pCalibdbV2->Bayernr2D.Setting[i].Tuning_ISO );
|
}
|
if(pCalibdbV2->Bayernr2D.Setting[i].Sensor_Mode != NULL) {
|
free(pCalibdbV2->Bayernr2D.Setting[i].Sensor_Mode);
|
}
|
if(pCalibdbV2->Bayernr2D.Setting[i].SNR_Mode != NULL) {
|
free(pCalibdbV2->Bayernr2D.Setting[i].SNR_Mode);
|
}
|
}
|
free(pCalibdbV2->Bayernr2D.Setting);
|
}
|
|
if(pCalibdbV2->Bayernr3D.Setting != NULL) {
|
for(int i = 0; i < pCalibdbV2->Bayernr3D.Setting_len; i++) {
|
if(pCalibdbV2->Bayernr3D.Setting[i].Tuning_ISO != NULL) {
|
free(pCalibdbV2->Bayernr3D.Setting[i].Tuning_ISO );
|
}
|
if(pCalibdbV2->Bayernr3D.Setting[i].Sensor_Mode != NULL) {
|
free(pCalibdbV2->Bayernr3D.Setting[i].Sensor_Mode);
|
}
|
if(pCalibdbV2->Bayernr3D.Setting[i].SNR_Mode != NULL) {
|
free(pCalibdbV2->Bayernr3D.Setting[i].SNR_Mode);
|
}
|
}
|
free(pCalibdbV2->Bayernr3D.Setting);
|
}
|
|
free(pCalibdbV2);
|
}
|
|
}
|