#include "sharp_xml2json_v3.h"
|
#include "RkAiqCalibApi.h"
|
|
#define SHARPV3_SETTING_NUM (2)
|
#define SHARPV3_ISO_NUM (13)
|
|
int sharpV3_calibdb_to_calibdbV2(struct list_head *pSharpList, CalibDbV2_SharpV3_t *pCalibdbV2, int mode_idx)
|
{
|
CalibDbV2_SharpV3_TuningPara_t *pTuningParaV2 = NULL;
|
CalibDbV2_SharpV3_TuningPara_Setting_ISO_t *pTuningISOV2 = NULL;
|
CalibDbV2_SharpV3_TuningPara_Setting_ISO_Luma_t *pLumaParaV2 = NULL;
|
CalibDbV2_SharpV3_TuningPara_Setting_ISO_kernel_t *pKernelCoeffV2 = NULL;
|
|
if(pSharpList == NULL || pCalibdbV2 == NULL) {
|
printf(" pCalibdb is NULL pointer\n");
|
return -1;
|
}
|
|
Calibdb_Sharp_V3_t* pSharpProfile = NULL;
|
CamCalibdbGetSharpV3ProfileByIdx(pSharpList, mode_idx, &pSharpProfile);
|
if(pSharpProfile == NULL) {
|
printf(" %s:%d bayernr can't get mode:%d para from calibdbv1\n",
|
__FUNCTION__,
|
__LINE__,
|
mode_idx);
|
return -1;
|
}
|
|
pTuningParaV2 = &pCalibdbV2->TuningPara;
|
|
//malloc settting size
|
pTuningParaV2->Setting = (CalibDbV2_SharpV3_TuningPara_Setting_t *)malloc(SHARPV3_SETTING_NUM * sizeof(CalibDbV2_SharpV3_TuningPara_Setting_t));
|
memset(pTuningParaV2->Setting, 0x00, SHARPV3_SETTING_NUM * sizeof(CalibDbV2_SharpV3_TuningPara_Setting_t));
|
pTuningParaV2->Setting_len = SHARPV3_SETTING_NUM;
|
|
//malloc iso size
|
for(int i = 0; i < SHARPV3_SETTING_NUM; i++) {
|
pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_SharpV3_TuningPara_Setting_ISO_t *)malloc(SHARPV3_ISO_NUM * sizeof(CalibDbV2_SharpV3_TuningPara_Setting_ISO_t));
|
memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, SHARPV3_ISO_NUM * sizeof(CalibDbV2_SharpV3_TuningPara_Setting_ISO_t));
|
pTuningParaV2->Setting[i].Tuning_ISO_len = SHARPV3_ISO_NUM;
|
}
|
|
//assign the value
|
pTuningParaV2->enable = pSharpProfile->enable;
|
|
for(int i = 0; i < SHARPV3_SETTING_NUM; i++) {
|
Calibdb_Sharp_params_V3_t *pSharpParamsV1 = NULL;
|
CamCalibdbGetSharpV3SettingByIdx(&pSharpProfile->listHead, i, &pSharpParamsV1);
|
|
if(pSharpParamsV1 == NULL) {
|
printf("cnr can't get setting:%d from xml calibdb! \n", i);
|
break;
|
}
|
|
pTuningParaV2->Setting[i].SNR_Mode = strdup(pSharpParamsV1->snr_mode);
|
pTuningParaV2->Setting[i].Sensor_Mode = strdup(pSharpParamsV1->sensor_mode);
|
|
for(int j = 0; j < SHARPV3_ISO_NUM; j++) {
|
pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
|
|
pTuningISOV2->iso = pSharpParamsV1->iso[j];
|
pTuningISOV2->pbf_gain = pSharpParamsV1->pbf_gain[j];
|
pTuningISOV2->pbf_ratio = pSharpParamsV1->pbf_ratio[j];
|
pTuningISOV2->pbf_add = pSharpParamsV1->pbf_add[j];
|
pTuningISOV2->gaus_ratio = pSharpParamsV1->gaus_ratio[j];
|
|
pTuningISOV2->sharp_ratio = pSharpParamsV1->sharp_ratio[j];
|
pTuningISOV2->bf_gain = pSharpParamsV1->bf_gain[j];
|
pTuningISOV2->bf_ratio = pSharpParamsV1->bf_ratio[j];
|
pTuningISOV2->bf_add = pSharpParamsV1->bf_add[j];
|
|
pLumaParaV2 = &pTuningISOV2->luma_para;
|
for(int k = 0; k < 8; k++) {
|
pLumaParaV2->luma_point[k] = pSharpParamsV1->luma_point[k];
|
pLumaParaV2->luma_sigma[k] = pSharpParamsV1->luma_sigma[j][k];
|
pLumaParaV2->hf_clip[k] = pSharpParamsV1->lum_clip_h[j][k];
|
pLumaParaV2->local_sharp_strength[k] = pSharpParamsV1->ehf_th[j][k];
|
}
|
pKernelCoeffV2 = &pTuningISOV2->kernel_para;
|
for(int k = 0; k < 3; k++) {
|
pKernelCoeffV2->prefilter_coeff[k] = pSharpParamsV1->kernel_pre_bila_filter[k][j];
|
pKernelCoeffV2->GaussianFilter_coeff[k] = pSharpParamsV1->kernel_range_filter[k][j];
|
pKernelCoeffV2->hfBilateralFilter_coeff[k] = pSharpParamsV1->kernel_bila_filter[k][j];
|
}
|
}
|
}
|
|
return 0;
|
}
|
|
|
int sharpV3_calibdbV2_to_calibdb(CalibDbV2_SharpV3_t *pCalibdbV2, struct list_head *pSharpList, int mode_idx)
|
{
|
CalibDbV2_SharpV3_TuningPara_t *pTuningParaV2 = NULL;
|
CalibDbV2_SharpV3_TuningPara_Setting_ISO_t *pTuningISOV2 = NULL;
|
CalibDbV2_SharpV3_TuningPara_Setting_ISO_Luma_t *pLumaParaV2 = NULL;
|
CalibDbV2_SharpV3_TuningPara_Setting_ISO_kernel_t *pKernelCoeffV2 = NULL;
|
|
if(pSharpList == NULL || pCalibdbV2 == NULL) {
|
printf(" pCalibdb is NULL pointer\n");
|
return -1;
|
}
|
|
Calibdb_Sharp_V3_t* pSharpProfile = NULL;
|
CamCalibdbGetSharpV3ProfileByIdx(pSharpList, mode_idx, &pSharpProfile);
|
if(pSharpProfile == NULL) {
|
printf(" %s:%d bayernr can't get mode:%d para from calibdbv1\n",
|
__FUNCTION__,
|
__LINE__,
|
mode_idx);
|
return -1;
|
}
|
|
pTuningParaV2 = &pCalibdbV2->TuningPara;
|
|
//assign the value
|
pSharpProfile->enable = pTuningParaV2->enable;
|
|
for(int i = 0; i < SHARPV3_SETTING_NUM; i++) {
|
Calibdb_Sharp_params_V3_t *pSharpParamsV1 = NULL;
|
CamCalibdbGetSharpV3SettingByIdx(&pSharpProfile->listHead, i, &pSharpParamsV1);
|
if(pSharpParamsV1 == NULL) {
|
printf("cnr can't get setting:%d from xml calibdb! \n", i);
|
break;
|
}
|
|
strcpy(pSharpParamsV1->snr_mode, pTuningParaV2->Setting[i].SNR_Mode);
|
strcpy(pSharpParamsV1->sensor_mode, pTuningParaV2->Setting[i].Sensor_Mode);
|
|
for(int j = 0; j < SHARPV3_ISO_NUM; j++) {
|
pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
|
|
pSharpParamsV1->iso[j] = pTuningISOV2->iso;
|
pSharpParamsV1->pbf_gain[j] = pTuningISOV2->pbf_gain;
|
pSharpParamsV1->pbf_add[j] = pTuningISOV2->pbf_ratio;
|
pSharpParamsV1->pbf_ratio[j] = pTuningISOV2->pbf_add;
|
pSharpParamsV1->gaus_ratio[j] = pTuningISOV2->gaus_ratio;
|
|
pSharpParamsV1->sharp_ratio[j] = pTuningISOV2->sharp_ratio;
|
pSharpParamsV1->bf_gain[j] = pTuningISOV2->bf_gain;
|
pSharpParamsV1->bf_ratio[j] = pTuningISOV2->bf_ratio;
|
pSharpParamsV1->bf_add[j] = pTuningISOV2->bf_add;
|
|
pLumaParaV2 = &pTuningISOV2->luma_para;
|
for(int k = 0; k < 8; k++) {
|
pSharpParamsV1->luma_point[k] = pLumaParaV2->luma_point[k];
|
pSharpParamsV1->luma_sigma[j][k] = pLumaParaV2->luma_sigma[k];
|
pSharpParamsV1->lum_clip_h[j][k] = pLumaParaV2->hf_clip[k];
|
pSharpParamsV1->ehf_th[j][k] = pLumaParaV2->local_sharp_strength[k];
|
}
|
pKernelCoeffV2 = &pTuningISOV2->kernel_para;
|
for(int k = 0; k < 3; k++) {
|
pSharpParamsV1->kernel_pre_bila_filter[k][j] = pKernelCoeffV2->prefilter_coeff[k];
|
pSharpParamsV1->kernel_range_filter[k][j] = pKernelCoeffV2->GaussianFilter_coeff[k];
|
pSharpParamsV1->kernel_bila_filter[k][j] = pKernelCoeffV2->hfBilateralFilter_coeff[k];
|
}
|
}
|
}
|
|
return 0;
|
}
|
|
|
void sharpV3_calibdbV2_free(CalibDbV2_SharpV3_t *pCalibdbV2)
|
{
|
if(pCalibdbV2) {
|
if(pCalibdbV2->Version) {
|
free(pCalibdbV2->Version);
|
}
|
|
if(pCalibdbV2->TuningPara.Setting) {
|
for(int i = 0; i < pCalibdbV2->TuningPara.Setting_len; i++) {
|
if(pCalibdbV2->TuningPara.Setting[i].SNR_Mode) {
|
free(pCalibdbV2->TuningPara.Setting[i].SNR_Mode);
|
}
|
|
if(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode) {
|
free(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode);
|
}
|
|
if(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO) {
|
free(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO);
|
}
|
}
|
|
free(pCalibdbV2->TuningPara.Setting);
|
}
|
|
free(pCalibdbV2);
|
}
|
}
|