#include "bayernr_xml2json_v1.h"
|
|
#define BAYERNRV1_SETTING_NUM (2)
|
#define BAYERNRV1_ISO_NUM (13)
|
|
int bayernrV1_calibdb_to_calibdbV2(const CalibDb_BayerNr_2_t *pCalibdb, CalibDbV2_BayerNrV1_t *pCalibdbV2, int mode_idx)
|
{
|
CalibDbV2_BayerNrV1_CalibPara_t *pCalibParaV2 = NULL;
|
CalibDbV2_BayerNrV1_TuningPara_t *pTuningParaV2 = NULL;
|
CalibDbV2_BayerNrV1_CalibPara_Setting_ISO_t *pCalibISOV2 = NULL;
|
CalibDbV2_BayerNrV1_TuningPara_Setting_ISO_t *pTuningISOV2 = NULL;
|
CalibDb_BayerNR_Params_t *pSetting = 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_BayerNrV1_CalibPara_Setting_t *)malloc(BAYERNRV1_SETTING_NUM * sizeof(CalibDbV2_BayerNrV1_CalibPara_Setting_t));
|
memset(pCalibParaV2->Setting, 0x00, BAYERNRV1_SETTING_NUM * sizeof(CalibDbV2_BayerNrV1_CalibPara_Setting_t));
|
pCalibParaV2->Setting_len = BAYERNRV1_SETTING_NUM;
|
pTuningParaV2->Setting = (CalibDbV2_BayerNrV1_TuningPara_Setting_t *)malloc(BAYERNRV1_SETTING_NUM * sizeof(CalibDbV2_BayerNrV1_TuningPara_Setting_t));
|
memset(pTuningParaV2->Setting, 0x00, BAYERNRV1_SETTING_NUM * sizeof(CalibDbV2_BayerNrV1_TuningPara_Setting_t));
|
pTuningParaV2->Setting_len = BAYERNRV1_SETTING_NUM;
|
|
//malloc iso size
|
for(int i = 0; i < BAYERNRV1_SETTING_NUM; i++) {
|
pCalibParaV2->Setting[i].Calib_ISO = (CalibDbV2_BayerNrV1_CalibPara_Setting_ISO_t *)malloc(BAYERNRV1_ISO_NUM * sizeof(CalibDbV2_BayerNrV1_CalibPara_Setting_ISO_t));
|
memset(pCalibParaV2->Setting[i].Calib_ISO, 0x00, BAYERNRV1_ISO_NUM * sizeof(CalibDbV2_BayerNrV1_CalibPara_Setting_ISO_t));
|
pCalibParaV2->Setting[i].Calib_ISO_len = BAYERNRV1_ISO_NUM;
|
pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_BayerNrV1_TuningPara_Setting_ISO_t *)malloc(BAYERNRV1_ISO_NUM * sizeof(CalibDbV2_BayerNrV1_TuningPara_Setting_ISO_t));
|
memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, BAYERNRV1_ISO_NUM * sizeof(CalibDbV2_BayerNrV1_TuningPara_Setting_ISO_t));
|
pTuningParaV2->Setting[i].Tuning_ISO_len = BAYERNRV1_ISO_NUM;
|
}
|
|
//assign the value
|
pTuningParaV2->enable = pCalibdb->enable;
|
pCalibdbV2->Version = strdup(pCalibdb->version);
|
|
for(int i = 0; i < BAYERNRV1_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 < BAYERNRV1_ISO_NUM; j++) {
|
pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
|
pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
|
|
//calib
|
pCalibISOV2->iso = pSetting->iso[j];
|
for(int k = 0; k < 8; k++) {
|
pCalibISOV2->luLevelVal[k] = pSetting->luLevelVal[k];
|
pCalibISOV2->luRatio[k] = pSetting->luRatio[k][j];
|
}
|
|
//tuning
|
pTuningISOV2->iso = pSetting->iso[j];
|
pTuningISOV2->filtPara = pSetting->filtPara[j];
|
pTuningISOV2->gauss_en = pSetting->gauss_en;
|
pTuningISOV2->lamda = pSetting->lamda;
|
pTuningISOV2->fixW0 = pSetting->fixW[0][j];
|
pTuningISOV2->fixW1 = pSetting->fixW[1][j];
|
pTuningISOV2->fixW2 = pSetting->fixW[2][j];
|
pTuningISOV2->fixW3 = pSetting->fixW[3][j];
|
pTuningISOV2->RGainOff = pSetting->RGainOff;
|
pTuningISOV2->RGainFilp = pSetting->RGainFilp;
|
pTuningISOV2->BGainOff = pSetting->BGainOff;
|
pTuningISOV2->BGainFilp = pSetting->BGainFilp;
|
|
|
}
|
}
|
|
return 0;
|
|
}
|
|
|
|
int bayernrV1_calibdbV2_to_calibdb(CalibDbV2_BayerNrV1_t *pCalibdbV2, CalibDb_BayerNr_2_t *pCalibdb, int mode_idx)
|
{
|
CalibDbV2_BayerNrV1_CalibPara_t *pCalibParaV2 = NULL;
|
CalibDbV2_BayerNrV1_TuningPara_t *pTuningParaV2 = NULL;
|
CalibDbV2_BayerNrV1_CalibPara_Setting_ISO_t *pCalibISOV2 = NULL;
|
CalibDbV2_BayerNrV1_TuningPara_Setting_ISO_t *pTuningISOV2 = NULL;
|
CalibDb_BayerNR_Params_t *pSetting = 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
|
pCalibdb->enable = pTuningParaV2->enable;
|
strcpy(pCalibdb->version, pCalibdbV2->Version);
|
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 < BAYERNRV1_ISO_NUM; j++) {
|
pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
|
pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
|
|
//calib
|
pSetting->iso[j] = pCalibISOV2->iso;
|
for(int k = 0; k < 8; k++) {
|
pSetting->luLevelVal[k] = pCalibISOV2->luLevelVal[k];
|
pSetting->luRatio[k][j] = pCalibISOV2->luRatio[k];
|
}
|
|
//tuning
|
pSetting->iso[j] = pTuningISOV2->iso;
|
pSetting->filtPara[j] = pTuningISOV2->filtPara;
|
pSetting->gauss_en = pTuningISOV2->gauss_en;
|
pSetting->lamda = pTuningISOV2->lamda;
|
pSetting->fixW[0][j] = pTuningISOV2->fixW0;
|
pSetting->fixW[1][j] = pTuningISOV2->fixW1;
|
pSetting->fixW[2][j] = pTuningISOV2->fixW2;
|
pSetting->fixW[3][j] = pTuningISOV2->fixW3;
|
pSetting->RGainOff = pTuningISOV2->RGainOff;
|
pSetting->RGainFilp = pTuningISOV2->RGainFilp;
|
pSetting->BGainOff = pTuningISOV2->BGainOff;
|
pSetting->BGainFilp = pTuningISOV2->BGainFilp;
|
|
|
}
|
}
|
|
return 0;
|
|
}
|
|
|
void bayernrV1_calibdbV2_free(CalibDbV2_BayerNrV1_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->TuningPara.Setting != NULL) {
|
for(int i = 0; i < pCalibdbV2->TuningPara.Setting_len; i++) {
|
if(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO != NULL) {
|
free(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO );
|
}
|
if(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode != NULL) {
|
free(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode);
|
}
|
if(pCalibdbV2->TuningPara.Setting[i].SNR_Mode != NULL) {
|
free(pCalibdbV2->TuningPara.Setting[i].SNR_Mode);
|
}
|
}
|
free(pCalibdbV2->TuningPara.Setting);
|
}
|
|
free(pCalibdbV2);
|
}
|
|
}
|