#include "ynr_xml2json_v1.h"
|
|
#define YNRV1_SETTING_NUM (2)
|
#define YNRV1_ISO_NUM (13)
|
|
int ynrV1_calibdb_to_calibdbV2(const CalibDb_YNR_2_t *pCalibdb, CalibDbV2_YnrV1_t *pCalibdbV2, int mode_idx)
|
{
|
|
CalibDbV2_YnrV1_CalibPara_t *pCalibParaV2 = NULL;
|
CalibDbV2_YnrV1_TuningPara_t *pTuningParaV2 = NULL;
|
CalibDbV2_YnrV1_CalibPara_Setting_ISO_t *pCalibISOV2 = NULL;
|
CalibDbV2_YnrV1_TuningPara_Setting_ISO_t *pTuningISOV2 = NULL;
|
CalibDb_YNR_Setting_t *pSetting = NULL;
|
struct CalibDb_YNR_ISO_s *pISO = NULL;
|
|
if(pCalibdb == NULL) {
|
printf(" pCalibdb is NULL pointer\n");
|
return -1;
|
}
|
|
if(pCalibdbV2 == NULL) {
|
printf(" pCalibdbV2 is NULL pointer\n");
|
return -1;
|
}
|
|
if(pCalibdb->mode_num < mode_idx) {
|
printf(" old xml file have no %d mode cell \n", mode_idx);
|
return -1;
|
}
|
|
pCalibParaV2 = &pCalibdbV2->CalibPara;
|
pTuningParaV2 = &pCalibdbV2->TuningPara;
|
|
//malloc settting size
|
pCalibParaV2->Setting = (CalibDbV2_YnrV1_CalibPara_Setting_t *)malloc(YNRV1_SETTING_NUM * sizeof(CalibDbV2_YnrV1_CalibPara_Setting_t));
|
memset(pCalibParaV2->Setting, 0x00, YNRV1_SETTING_NUM * sizeof(CalibDbV2_YnrV1_CalibPara_Setting_t));
|
pCalibParaV2->Setting_len = YNRV1_SETTING_NUM;
|
pTuningParaV2->Setting = (CalibDbV2_YnrV1_TuningPara_Setting_t *)malloc(YNRV1_SETTING_NUM * sizeof(CalibDbV2_YnrV1_TuningPara_Setting_t));
|
memset(pTuningParaV2->Setting, 0x00, YNRV1_SETTING_NUM * sizeof(CalibDbV2_YnrV1_TuningPara_Setting_t));
|
pTuningParaV2->Setting_len = YNRV1_SETTING_NUM;
|
|
//malloc iso size
|
for(int i = 0; i < YNRV1_SETTING_NUM; i++) {
|
pCalibParaV2->Setting[i].Calib_ISO = (CalibDbV2_YnrV1_CalibPara_Setting_ISO_t *)malloc(YNRV1_ISO_NUM * sizeof(CalibDbV2_YnrV1_CalibPara_Setting_ISO_t));
|
memset(pCalibParaV2->Setting[i].Calib_ISO, 0x00, YNRV1_ISO_NUM * sizeof(CalibDbV2_YnrV1_CalibPara_Setting_ISO_t));
|
pCalibParaV2->Setting[i].Calib_ISO_len = YNRV1_ISO_NUM;
|
pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_YnrV1_TuningPara_Setting_ISO_t *)malloc(YNRV1_ISO_NUM * sizeof(CalibDbV2_YnrV1_TuningPara_Setting_ISO_t));
|
memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, YNRV1_ISO_NUM * sizeof(CalibDbV2_YnrV1_TuningPara_Setting_ISO_t));
|
pTuningParaV2->Setting[i].Tuning_ISO_len = YNRV1_ISO_NUM;
|
}
|
|
//assign the value
|
pCalibdbV2->Version = strdup(pCalibdb->version);
|
pTuningParaV2->enable = pCalibdb->enable;
|
|
for(int i = 0; i < YNRV1_SETTING_NUM; i++) {
|
pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
|
|
pCalibParaV2->Setting[i].SNR_Mode = strdup(pSetting->snr_mode);
|
pCalibParaV2->Setting[i].Sensor_Mode = strdup(pSetting->sensor_mode);
|
pTuningParaV2->Setting[i].SNR_Mode = strdup(pSetting->snr_mode);
|
pTuningParaV2->Setting[i].Sensor_Mode = strdup(pSetting->sensor_mode);
|
|
for(int j = 0; j < YNRV1_ISO_NUM; j++) {
|
pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
|
pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
|
pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
|
pISO = &pSetting->ynr_iso[j];
|
|
//calib para
|
pCalibISOV2->iso = pISO->iso;
|
for(int k = 0; k < 5; k++) {
|
pCalibISOV2->sigma_curve[k] = pISO->sigma_curve[k];
|
}
|
for(int k = 0; k < 4; k++) {
|
pCalibISOV2->ynr_lci[k] = pISO->ynr_lci[k];
|
pCalibISOV2->ynr_lhci[k] = pISO->ynr_lhci[k];
|
pCalibISOV2->ynr_hlci[k] = pISO->ynr_hlci[k];
|
pCalibISOV2->ynr_hhci[k] = pISO->ynr_hhci[k];
|
}
|
|
//tuning para
|
pTuningISOV2->iso = pISO->iso;
|
pTuningISOV2->lo_bfScale_1 = pISO->lo_bfScale[0];
|
pTuningISOV2->lo_bfScale_2 = pISO->lo_bfScale[1];
|
pTuningISOV2->lo_bfScale_3 = pISO->lo_bfScale[2];
|
pTuningISOV2->lo_bfScale_4 = pISO->lo_bfScale[3];
|
|
pTuningISOV2->denoise_weight_1 = pISO->denoise_weight[0];
|
pTuningISOV2->denoise_weight_2 = pISO->denoise_weight[1];
|
pTuningISOV2->denoise_weight_3 = pISO->denoise_weight[2];
|
pTuningISOV2->denoise_weight_4 = pISO->denoise_weight[3];
|
|
pTuningISOV2->imerge_ratio = pISO->imerge_ratio;
|
pTuningISOV2->imerge_bound = pISO->imerge_bound;
|
pTuningISOV2->lo_directionStrength = pISO->lo_directionStrength;
|
|
pTuningISOV2->hi_bfScale_1 = pISO->hi_bfScale[0];
|
pTuningISOV2->hi_bfScale_2 = pISO->hi_bfScale[1];
|
pTuningISOV2->hi_bfScale_3 = pISO->hi_bfScale[2];
|
pTuningISOV2->hi_bfScale_4 = pISO->hi_bfScale[3];
|
|
pTuningISOV2->hi_denoiseWeight_1 = pISO->hi_denoiseWeight[0];
|
pTuningISOV2->hi_denoiseWeight_2 = pISO->hi_denoiseWeight[1];
|
pTuningISOV2->hi_denoiseWeight_3 = pISO->hi_denoiseWeight[2];
|
pTuningISOV2->hi_denoiseWeight_4 = pISO->hi_denoiseWeight[3];
|
|
pTuningISOV2->hi_soft_thresh_scale_1 = pISO->hi_soft_thresh_scale[0];
|
pTuningISOV2->hi_soft_thresh_scale_2 = pISO->hi_soft_thresh_scale[1];
|
pTuningISOV2->hi_soft_thresh_scale_3 = pISO->hi_soft_thresh_scale[2];
|
pTuningISOV2->hi_soft_thresh_scale_4 = pISO->hi_soft_thresh_scale[3];
|
|
pTuningISOV2->hi_denoiseStrength = pISO->hi_denoiseStrength;
|
pTuningISOV2->hi_detailMinAdjDnW = pISO->hi_detailMinAdjDnW;
|
|
for(int k = 0; k < 4; k++) {
|
pTuningISOV2->hwith_d[k] = pISO->hwith_d[k];
|
}
|
|
//luma para
|
for(int k = 0; k < 6; k++) {
|
pTuningISOV2->luma_para.lo_lumaPoint[k] = pISO->lo_lumaPoint[k];
|
pTuningISOV2->luma_para.lo_lumaRatio[k] = pISO->lo_lumaRatio[k];
|
pTuningISOV2->luma_para.hi_lumaPoint[k] = pISO->hi_lumaPoint[k];
|
pTuningISOV2->luma_para.hi_lumaRatio[k] = pISO->hi_lumaRatio[k];
|
}
|
|
//hgrad para
|
for(int k = 0; k < 6; k++) {
|
pTuningISOV2->hgrad_para.y_luma_point[k] = pISO->y_luma_point[k];
|
pTuningISOV2->hgrad_para.hgrad_y_level1[k] = pISO->hgrad_y_level1[k];
|
pTuningISOV2->hgrad_para.hgrad_y_level2[k] = pISO->hgrad_y_level2[k];
|
pTuningISOV2->hgrad_para.hgrad_y_level3[k] = pISO->hgrad_y_level3[k];
|
pTuningISOV2->hgrad_para.hgrad_y_level4[k] = pISO->hgrad_y_level4[k];
|
}
|
|
}
|
}
|
|
return 0;
|
}
|
|
|
int ynrV1_calibdbV2_to_calibdb(CalibDbV2_YnrV1_t *pCalibdbV2, CalibDb_YNR_2_t *pCalibdb, int mode_idx)
|
{
|
|
CalibDbV2_YnrV1_CalibPara_t *pCalibParaV2 = NULL;
|
CalibDbV2_YnrV1_TuningPara_t *pTuningParaV2 = NULL;
|
CalibDbV2_YnrV1_CalibPara_Setting_ISO_t *pCalibISOV2 = NULL;
|
CalibDbV2_YnrV1_TuningPara_Setting_ISO_t *pTuningISOV2 = NULL;
|
CalibDb_YNR_Setting_t *pSetting = NULL;
|
struct CalibDb_YNR_ISO_s *pISO = NULL;
|
|
if(pCalibdb == NULL) {
|
printf(" pCalibdb is NULL pointer\n");
|
return -1;
|
}
|
|
if(pCalibdbV2 == NULL) {
|
printf(" pCalibdbV2 is NULL pointer\n");
|
return -1;
|
}
|
|
if(pCalibdb->mode_num < mode_idx) {
|
printf(" old xml file have no %d mode cell \n", mode_idx);
|
return -1;
|
}
|
|
pCalibParaV2 = &pCalibdbV2->CalibPara;
|
pTuningParaV2 = &pCalibdbV2->TuningPara;
|
|
|
|
//assign the value
|
strcpy(pCalibdb->version, pCalibdbV2->Version);
|
pCalibdb->enable = pTuningParaV2->enable;
|
|
for(int i = 0; i < pTuningParaV2->Setting_len; i++) {
|
pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
|
|
strcpy(pSetting->snr_mode, pTuningParaV2->Setting[i].SNR_Mode);
|
strcpy(pSetting->sensor_mode, pTuningParaV2->Setting[i].Sensor_Mode);
|
|
for(int j = 0; j < YNRV1_ISO_NUM; j++) {
|
pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
|
pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
|
pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
|
pISO = &pSetting->ynr_iso[j];
|
|
//calib para
|
pISO->iso = pCalibISOV2->iso;
|
for(int k = 0; k < 5; k++) {
|
pISO->sigma_curve[k] = pCalibISOV2->sigma_curve[k];
|
}
|
for(int k = 0; k < 4; k++) {
|
pISO->ynr_lci[k] = pCalibISOV2->ynr_lci[k];
|
pISO->ynr_lhci[k] = pCalibISOV2->ynr_lhci[k];
|
pISO->ynr_hlci[k] = pCalibISOV2->ynr_hlci[k];
|
pISO->ynr_hhci[k] = pCalibISOV2->ynr_hhci[k];
|
}
|
|
//tuning para
|
pISO->iso = pTuningISOV2->iso;
|
pISO->lo_bfScale[0] = pTuningISOV2->lo_bfScale_1;
|
pISO->lo_bfScale[1] = pTuningISOV2->lo_bfScale_2;
|
pISO->lo_bfScale[2] = pTuningISOV2->lo_bfScale_3;
|
pISO->lo_bfScale[3] = pTuningISOV2->lo_bfScale_4;
|
|
pISO->denoise_weight[0] = pTuningISOV2->denoise_weight_1;
|
pISO->denoise_weight[1] = pTuningISOV2->denoise_weight_2;
|
pISO->denoise_weight[2] = pTuningISOV2->denoise_weight_3;
|
pISO->denoise_weight[3] = pTuningISOV2->denoise_weight_4;
|
|
pISO->imerge_ratio = pTuningISOV2->imerge_ratio;
|
pISO->imerge_bound = pTuningISOV2->imerge_bound;
|
pISO->lo_directionStrength = pTuningISOV2->lo_directionStrength;
|
|
pISO->hi_bfScale[0] = pTuningISOV2->hi_bfScale_1;
|
pISO->hi_bfScale[1] = pTuningISOV2->hi_bfScale_2;
|
pISO->hi_bfScale[2] = pTuningISOV2->hi_bfScale_3;
|
pISO->hi_bfScale[3] = pTuningISOV2->hi_bfScale_4;
|
|
pISO->hi_denoiseWeight[0] = pTuningISOV2->hi_denoiseWeight_1;
|
pISO->hi_denoiseWeight[1] = pTuningISOV2->hi_denoiseWeight_2;
|
pISO->hi_denoiseWeight[2] = pTuningISOV2->hi_denoiseWeight_3;
|
pISO->hi_denoiseWeight[3] = pTuningISOV2->hi_denoiseWeight_4;
|
|
pISO->hi_soft_thresh_scale[0] = pTuningISOV2->hi_soft_thresh_scale_1;
|
pISO->hi_soft_thresh_scale[1] = pTuningISOV2->hi_soft_thresh_scale_2;
|
pISO->hi_soft_thresh_scale[2] = pTuningISOV2->hi_soft_thresh_scale_3;
|
pISO->hi_soft_thresh_scale[3] = pTuningISOV2->hi_soft_thresh_scale_4;
|
|
pISO->hi_denoiseStrength = pTuningISOV2->hi_denoiseStrength;
|
pISO->hi_detailMinAdjDnW = pTuningISOV2->hi_detailMinAdjDnW;
|
|
for(int k = 0; k < 4; k++) {
|
pISO->hwith_d[k] = pTuningISOV2->hwith_d[k];
|
}
|
|
//luma para
|
for(int k = 0; k < 6; k++) {
|
pISO->lo_lumaPoint[k] = pTuningISOV2->luma_para.lo_lumaPoint[k];
|
pISO->lo_lumaRatio[k] = pTuningISOV2->luma_para.lo_lumaRatio[k];
|
pISO->hi_lumaPoint[k] = pTuningISOV2->luma_para.hi_lumaPoint[k];
|
pISO->hi_lumaRatio[k] = pTuningISOV2->luma_para.hi_lumaRatio[k];
|
}
|
|
//hgrad para
|
for(int k = 0; k < 6; k++) {
|
pISO->y_luma_point[k] = pTuningISOV2->hgrad_para.y_luma_point[k];
|
pISO->hgrad_y_level1[k] = pTuningISOV2->hgrad_para.hgrad_y_level1[k];
|
pISO->hgrad_y_level2[k] = pTuningISOV2->hgrad_para.hgrad_y_level2[k];
|
pISO->hgrad_y_level3[k] = pTuningISOV2->hgrad_para.hgrad_y_level3[k];
|
pISO->hgrad_y_level4[k] = pTuningISOV2->hgrad_para.hgrad_y_level4[k];
|
}
|
|
}
|
}
|
|
return 0;
|
|
}
|
|
|
void ynrV1_calibdbV2_free(CalibDbV2_YnrV1_t *pCalibdbV2)
|
{
|
if(pCalibdbV2) {
|
if(pCalibdbV2->Version) {
|
free(pCalibdbV2->Version);
|
}
|
|
if(pCalibdbV2->CalibPara.Setting) {
|
for(int i = 0; i < pCalibdbV2->CalibPara.Setting_len; i++) {
|
if(pCalibdbV2->CalibPara.Setting[i].SNR_Mode) {
|
free(pCalibdbV2->CalibPara.Setting[i].SNR_Mode);
|
}
|
if(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode) {
|
free(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode);
|
}
|
if(pCalibdbV2->CalibPara.Setting[i].Calib_ISO) {
|
free(pCalibdbV2->CalibPara.Setting[i].Calib_ISO);
|
}
|
}
|
|
free(pCalibdbV2->CalibPara.Setting);
|
}
|
|
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);
|
}
|
}
|