#include "ynr_xml2json_v2.h"
|
#include "RkAiqCalibApi.h"
|
|
|
#define YNRV2_SETTING_NUM (2)
|
#define YNRV2_ISO_NUM (13)
|
|
int ynrV2_calibdb_to_calibdbV2(struct list_head* pYnrList, CalibDbV2_YnrV2_t *pCalibdbV2, int mode_idx)
|
{
|
|
CalibDbV2_YnrV2_CalibPara_t *pCalibParaV2 = NULL;
|
CalibDbV2_YnrV2_TuningPara_t *pTuningParaV2 = NULL;
|
CalibDbV2_YnrV2_CalibPara_Setting_ISO_t *pCalibISOV2 = NULL;
|
CalibDbV2_YnrV2_TuningPara_Setting_ISO_t *pTuningISOV2 = NULL;
|
|
if(pYnrList == NULL || pCalibdbV2 == NULL) {
|
printf(" pCalibdb is NULL pointer\n");
|
return -1;
|
}
|
|
Calibdb_Ynr_V2_t* pYnrProfile = NULL;
|
CamCalibdbGetYnrV2ProfileByIdx(pYnrList, mode_idx, &pYnrProfile);
|
if(pYnrProfile == NULL) {
|
printf(" %s:%d bayernr can't get mode:%d para from calibdbv1\n",
|
__FUNCTION__,
|
__LINE__,
|
mode_idx);
|
return -1;
|
}
|
|
pCalibParaV2 = &pCalibdbV2->CalibPara;
|
pTuningParaV2 = &pCalibdbV2->TuningPara;
|
|
//malloc settting size
|
pCalibParaV2->Setting = (CalibDbV2_YnrV2_CalibPara_Setting_t *)malloc(YNRV2_SETTING_NUM * sizeof(CalibDbV2_YnrV2_CalibPara_Setting_t));
|
memset(pCalibParaV2->Setting, 0x00, YNRV2_SETTING_NUM * sizeof(CalibDbV2_YnrV2_CalibPara_Setting_t));
|
pCalibParaV2->Setting_len = YNRV2_SETTING_NUM;
|
pTuningParaV2->Setting = (CalibDbV2_YnrV2_TuningPara_Setting_t *)malloc(YNRV2_SETTING_NUM * sizeof(CalibDbV2_YnrV2_TuningPara_Setting_t));
|
memset(pTuningParaV2->Setting, 0x00, YNRV2_SETTING_NUM * sizeof(CalibDbV2_YnrV2_TuningPara_Setting_t));
|
pTuningParaV2->Setting_len = YNRV2_SETTING_NUM;
|
|
//malloc iso size
|
for(int i = 0; i < YNRV2_SETTING_NUM; i++) {
|
pCalibParaV2->Setting[i].Calib_ISO = (CalibDbV2_YnrV2_CalibPara_Setting_ISO_t *)malloc(YNRV2_ISO_NUM * sizeof(CalibDbV2_YnrV2_CalibPara_Setting_ISO_t));
|
memset(pCalibParaV2->Setting[i].Calib_ISO, 0x00, YNRV2_ISO_NUM * sizeof(CalibDbV2_YnrV2_CalibPara_Setting_ISO_t));
|
pCalibParaV2->Setting[i].Calib_ISO_len = YNRV2_ISO_NUM;
|
pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_YnrV2_TuningPara_Setting_ISO_t *)malloc(YNRV2_ISO_NUM * sizeof(CalibDbV2_YnrV2_TuningPara_Setting_ISO_t));
|
memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, YNRV2_ISO_NUM * sizeof(CalibDbV2_YnrV2_TuningPara_Setting_ISO_t));
|
pTuningParaV2->Setting[i].Tuning_ISO_len = YNRV2_ISO_NUM;
|
}
|
|
//assign the value
|
pTuningParaV2->enable = pYnrProfile->enable;
|
|
for(int i = 0; i < YNRV2_SETTING_NUM; i++) {
|
Calibdb_Ynr_params_V2_t *pYnrParamsV1 = NULL;
|
CamCalibdbGetYnrV2SettingByIdx(&pYnrProfile->listHead, i, &pYnrParamsV1);
|
|
if(pYnrParamsV1 == NULL) {
|
printf("cnr can't get setting:%d from xml calibdb! \n", i);
|
break;
|
}
|
|
pCalibParaV2->Setting[i].SNR_Mode = strdup(pYnrParamsV1->snr_mode);
|
pCalibParaV2->Setting[i].Sensor_Mode = strdup(pYnrParamsV1->sensor_mode);
|
pTuningParaV2->Setting[i].SNR_Mode = strdup(pYnrParamsV1->snr_mode);
|
pTuningParaV2->Setting[i].Sensor_Mode = strdup(pYnrParamsV1->sensor_mode);
|
|
for(int j = 0; j < YNRV2_ISO_NUM; j++) {
|
pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
|
pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
|
|
//calib para
|
pCalibISOV2->iso = pYnrParamsV1->iso[j];
|
for(int k = 0; k < 5; k++) {
|
pCalibISOV2->sigma_curve[k] = pYnrParamsV1->sigmaCurve[j][k];
|
}
|
pCalibISOV2->ynr_ci_l = pYnrParamsV1->ciISO_V2[0][j];
|
pCalibISOV2->ynr_ci_h = pYnrParamsV1->ciISO_V2[1][j];
|
|
//tuning para
|
pTuningISOV2->iso = pYnrParamsV1->iso[j];
|
pTuningISOV2->ynr_bft3x3_bypass = pYnrParamsV1->ynr_bft3x3_bypass_V2[j];
|
pTuningISOV2->ynr_lbft5x5_bypass = pYnrParamsV1->ynr_lbft5x5_bypass_V2[j];
|
pTuningISOV2->ynr_lgft3x3_bypass = pYnrParamsV1->ynr_lgft3x3_bypass_V2[j];
|
pTuningISOV2->ynr_flt1x1_bypass = pYnrParamsV1->ynr_flt1x1_bypass_V2[j];
|
pTuningISOV2->ynr_sft5x5_bypass = pYnrParamsV1->ynr_sft5x5_bypass_V2[j];
|
|
for(int k = 0; k < 17; k++) {
|
pTuningISOV2->rnr_strength[k] = pYnrParamsV1->ynr_rnr_strength_V2[j][k];
|
}
|
|
pTuningISOV2->low_bf_0 = pYnrParamsV1->ynr_low_bf_V2[0][j];
|
pTuningISOV2->low_bf_1 = pYnrParamsV1->ynr_low_bf_V2[1][j];
|
|
pTuningISOV2->low_thred_adj = pYnrParamsV1->ynr_low_thred_adj_V2[j];
|
pTuningISOV2->low_peak_supress = pYnrParamsV1->ynr_low_peak_supress_V2[j];
|
pTuningISOV2->low_edge_adj_thresh = pYnrParamsV1->ynr_low_edge_adj_thresh_V2[j];
|
pTuningISOV2->low_center_weight = pYnrParamsV1->ynr_low_center_weight_V2[j];
|
|
pTuningISOV2->low_dist_adj = pYnrParamsV1->ynr_low_dist_adj_V2[j];
|
pTuningISOV2->low_weight = pYnrParamsV1->ynr_low_weight_V2[j];
|
pTuningISOV2->low_filt_strength_0 = pYnrParamsV1->ynr_low_filt_strength_V2[0][j];
|
pTuningISOV2->low_filt_strength_1 = pYnrParamsV1->ynr_low_filt_strength_V2[1][j];
|
pTuningISOV2->low_bi_weight = pYnrParamsV1->ynr_low_bi_weight_V2[j];
|
|
pTuningISOV2->base_filter_weight_0 = pYnrParamsV1->ynr_base_filter_weight_V2[0][j];
|
pTuningISOV2->base_filter_weight_1 = pYnrParamsV1->ynr_base_filter_weight_V2[1][j];
|
pTuningISOV2->base_filter_weight_2 = pYnrParamsV1->ynr_base_filter_weight_V2[2][j];
|
|
pTuningISOV2->high_thred_adj = pYnrParamsV1->ynr_high_thred_adj_V2[j];
|
pTuningISOV2->high_weight = pYnrParamsV1->ynr_high_weight_V2[j];
|
for(int k = 0; k < 8; k++) {
|
pTuningISOV2->high_direction_weight[k] = pYnrParamsV1->ynr_direction_weight_V2[j][k];
|
}
|
pTuningISOV2->hi_min_adj = pYnrParamsV1->ynr_hi_min_adj_V2[j];
|
pTuningISOV2->hi_edge_thed = pYnrParamsV1->ynr_hi_edge_thed_V2[j];
|
|
}
|
}
|
|
return 0;
|
}
|
|
|
int ynrV2_calibdbV2_to_calibdb(CalibDbV2_YnrV2_t *pCalibdbV2, struct list_head* pYnrList, int mode_idx)
|
{
|
|
CalibDbV2_YnrV2_CalibPara_t *pCalibParaV2 = NULL;
|
CalibDbV2_YnrV2_TuningPara_t *pTuningParaV2 = NULL;
|
CalibDbV2_YnrV2_CalibPara_Setting_ISO_t *pCalibISOV2 = NULL;
|
CalibDbV2_YnrV2_TuningPara_Setting_ISO_t *pTuningISOV2 = NULL;
|
|
if(pYnrList == NULL || pCalibdbV2 == NULL) {
|
printf(" pCalibdb is NULL pointer\n");
|
return -1;
|
}
|
|
|
pCalibParaV2 = &pCalibdbV2->CalibPara;
|
pTuningParaV2 = &pCalibdbV2->TuningPara;
|
|
|
Calibdb_Ynr_V2_t* pYnrProfile = NULL;
|
CamCalibdbGetYnrV2ProfileByIdx(pYnrList, mode_idx, &pYnrProfile);
|
if(pYnrProfile == NULL) {
|
printf(" %s:%d bayernr can't get mode:%d para from calibdbv1\n",
|
__FUNCTION__,
|
__LINE__,
|
mode_idx);
|
return -1;
|
}
|
|
|
//assign the value
|
pYnrProfile->enable = pTuningParaV2->enable;
|
|
for(int i = 0; i < pTuningParaV2->Setting_len; i++) {
|
Calibdb_Ynr_params_V2_t *pYnrParamsV1 = NULL;
|
CamCalibdbGetYnrV2SettingByIdx(&pYnrProfile->listHead, i, &pYnrParamsV1);
|
|
if(pYnrParamsV1 == NULL) {
|
printf("cnr can't get setting:%d from xml calibdb! \n", i);
|
break;
|
}
|
|
strcpy(pYnrParamsV1->snr_mode, pTuningParaV2->Setting[i].SNR_Mode);
|
strcpy(pYnrParamsV1->sensor_mode, pTuningParaV2->Setting[i].Sensor_Mode);
|
|
for(int j = 0; j < YNRV2_ISO_NUM; j++) {
|
pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
|
pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
|
|
//calib para
|
pYnrParamsV1->iso[j] = pCalibISOV2->iso;
|
for(int k = 0; k < 5; k++) {
|
pYnrParamsV1->sigmaCurve[j][k] = pCalibISOV2->sigma_curve[k];
|
}
|
pYnrParamsV1->ciISO_V2[0][j] = pCalibISOV2->ynr_ci_l;
|
pYnrParamsV1->ciISO_V2[1][j] = pCalibISOV2->ynr_ci_h;
|
|
//tuning para
|
pYnrParamsV1->iso[j] = pTuningISOV2->iso;
|
pYnrParamsV1->ynr_bft3x3_bypass_V2[j] = pTuningISOV2->ynr_bft3x3_bypass;
|
pYnrParamsV1->ynr_lbft5x5_bypass_V2[j] = pTuningISOV2->ynr_lbft5x5_bypass;
|
pYnrParamsV1->ynr_lgft3x3_bypass_V2[j] = pTuningISOV2->ynr_lgft3x3_bypass;
|
pYnrParamsV1->ynr_flt1x1_bypass_V2[j] = pTuningISOV2->ynr_flt1x1_bypass;
|
pYnrParamsV1->ynr_sft5x5_bypass_V2[j] = pTuningISOV2->ynr_sft5x5_bypass;
|
|
for(int k = 0; k < 17; k++) {
|
pYnrParamsV1->ynr_rnr_strength_V2[j][k] = pTuningISOV2->rnr_strength[k];
|
}
|
|
pYnrParamsV1->ynr_low_bf_V2[0][j] = pTuningISOV2->low_bf_0;
|
pYnrParamsV1->ynr_low_bf_V2[1][j] = pTuningISOV2->low_bf_1;
|
|
pYnrParamsV1->ynr_low_thred_adj_V2[j] = pTuningISOV2->low_thred_adj;
|
pYnrParamsV1->ynr_low_peak_supress_V2[j] = pTuningISOV2->low_peak_supress;
|
pYnrParamsV1->ynr_low_edge_adj_thresh_V2[j] = pTuningISOV2->low_edge_adj_thresh;
|
pYnrParamsV1->ynr_low_center_weight_V2[j] = pTuningISOV2->low_center_weight;
|
|
pYnrParamsV1->ynr_low_dist_adj_V2[j] = pTuningISOV2->low_dist_adj;
|
pYnrParamsV1->ynr_low_weight_V2[j] = pTuningISOV2->low_weight;
|
pYnrParamsV1->ynr_low_filt_strength_V2[0][j] = pTuningISOV2->low_filt_strength_0;
|
pYnrParamsV1->ynr_low_filt_strength_V2[1][j] = pTuningISOV2->low_filt_strength_1;
|
pYnrParamsV1->ynr_low_bi_weight_V2[j] = pTuningISOV2->low_bi_weight;
|
|
pYnrParamsV1->ynr_base_filter_weight_V2[0][j] = pTuningISOV2->base_filter_weight_0;
|
pYnrParamsV1->ynr_base_filter_weight_V2[1][j] = pTuningISOV2->base_filter_weight_1;
|
pYnrParamsV1->ynr_base_filter_weight_V2[2][j] = pTuningISOV2->base_filter_weight_2;
|
|
pYnrParamsV1->ynr_high_thred_adj_V2[j] = pTuningISOV2->high_thred_adj;
|
pYnrParamsV1->ynr_high_weight_V2[j] = pTuningISOV2->high_weight;
|
for(int k = 0; k < 8; k++) {
|
pYnrParamsV1->ynr_direction_weight_V2[j][k] = pTuningISOV2->high_direction_weight[k];
|
}
|
pYnrParamsV1->ynr_hi_min_adj_V2[j] = pTuningISOV2->hi_min_adj;
|
pYnrParamsV1->ynr_hi_edge_thed_V2[j] = pTuningISOV2->hi_edge_thed;
|
|
}
|
}
|
|
return 0;
|
|
}
|
|
|
void ynrV2_calibdbV2_free(CalibDbV2_YnrV2_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);
|
}
|
}
|