1 #include "uvnr_xml2json_v1.h"
2
3 #define UVNRV1_SETTING_NUM (2)
4 #define UVNRV1_ISO_NUM (13)
5
uvnrV1_calibdb_to_calibdbV2(const CalibDb_UVNR_2_t * pCalibdb,CalibDbV2_UVNR_t * pCalibdbV2,int mode_idx)6 int uvnrV1_calibdb_to_calibdbV2(const CalibDb_UVNR_2_t *pCalibdb, CalibDbV2_UVNR_t *pCalibdbV2, int mode_idx)
7 {
8 CalibDbV2_UVNR_Tuning_t *pTuningParaV2 = NULL;
9 CalibDbV2_UVNR_T_ISO_t *pTuningISOV2 = NULL;
10 CalibDbV2_UVNR_Kernel_t *pKernel_Coeff;
11 CalibDb_UVNR_Params_t *pSetting = NULL;
12
13 if(pCalibdb == NULL) {
14 printf(" pCalibdb is NULL pointer\n");
15 return -1;
16 }
17
18 if(pCalibdbV2 == NULL) {
19 printf(" pCalibdbV2 is NULL pointer\n");
20 return -1;
21 }
22
23 if(pCalibdb->mode_num < mode_idx) {
24 printf(" old xml file have no %d mode cell \n", mode_idx);
25 return -1;
26 }
27
28 pTuningParaV2 = &pCalibdbV2->TuningPara;
29
30 //malloc settting size
31 pTuningParaV2->Setting = (CalibDbV2_UVNR_TuningPara_Setting_t *)malloc(UVNRV1_SETTING_NUM * sizeof(CalibDbV2_UVNR_TuningPara_Setting_t));
32 memset(pTuningParaV2->Setting, 0x00, UVNRV1_SETTING_NUM * sizeof(CalibDbV2_UVNR_TuningPara_Setting_t));
33 pTuningParaV2->Setting_len = UVNRV1_SETTING_NUM;
34
35 //malloc iso size
36 for(int i = 0; i < UVNRV1_SETTING_NUM; i++) {
37 pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_UVNR_TuningPara_Setting_ISO_t *)malloc(UVNRV1_ISO_NUM * sizeof(CalibDbV2_UVNR_TuningPara_Setting_ISO_t));
38 memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, UVNRV1_ISO_NUM * sizeof(CalibDbV2_UVNR_TuningPara_Setting_ISO_t));
39 pTuningParaV2->Setting[i].Tuning_ISO_len = UVNRV1_ISO_NUM;
40 }
41
42 //assign the value
43 pTuningParaV2->enable = pCalibdb->enable;
44 pCalibdbV2->Version = strdup(pCalibdb->version);
45
46 //tuning
47 for(int i = 0; i < UVNRV1_SETTING_NUM; i++) {
48 pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
49
50 pTuningParaV2->Setting[i].SNR_Mode = strdup(pSetting->snr_mode);
51 pTuningParaV2->Setting[i].Sensor_Mode = strdup(pSetting->sensor_mode);
52
53 for(int j = 0; j < UVNRV1_ISO_NUM; j++) {
54 pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
55 pTuningISOV2->iso = pSetting->ISO[j];
56 pTuningISOV2->step0_uvgrad_ratio = pSetting->step0_uvgrad_ratio[j];
57 pTuningISOV2->step0_uvgrad_offset = pSetting->step0_uvgrad_offset[j];
58
59 pTuningISOV2->step1_median_ratio = pSetting->step1_median_ratio[j];
60 pTuningISOV2->step1_bf_sigmaR = pSetting->step1_bf_sigmaR[j];
61 pTuningISOV2->step1_bf_uvgain = pSetting->step1_bf_uvgain[j];
62 pTuningISOV2->step1_bf_ratio = pSetting->step1_bf_ratio[j];
63
64 pTuningISOV2->step2_median_ratio = pSetting->step2_median_ratio[j];
65 pTuningISOV2->step2_bf_sigmaR = pSetting->step2_bf_sigmaR[j];
66 pTuningISOV2->step2_bf_uvgain = pSetting->step2_bf_uvgain[j];
67 pTuningISOV2->step2_bf_ratio = pSetting->step2_bf_ratio[j];
68
69 pTuningISOV2->step3_bf_sigmaR = pSetting->step3_bf_sigmaR[j];
70 pTuningISOV2->step3_bf_uvgain = pSetting->step3_bf_uvgain[j];
71 pTuningISOV2->step3_bf_ratio = pSetting->step3_bf_ratio[j];
72
73 }
74
75 }
76
77 pKernel_Coeff = &pTuningParaV2->Kernel_Coeff;
78 memcpy(pKernel_Coeff->kernel_3x3, pCalibdb->mode_cell[mode_idx].setting[0].kernel_3x3, sizeof(pKernel_Coeff->kernel_3x3));
79 memcpy(pKernel_Coeff->kernel_5x5, pCalibdb->mode_cell[mode_idx].setting[0].kernel_5x5, sizeof(pKernel_Coeff->kernel_5x5));
80 memcpy(pKernel_Coeff->kernel_9x9, pCalibdb->mode_cell[mode_idx].setting[0].kernel_9x9, sizeof(pKernel_Coeff->kernel_9x9));
81 pKernel_Coeff->kernel_9x9_num = pCalibdb->mode_cell[mode_idx].setting[0].kernel_9x9_num;
82
83 return 0;
84
85 }
86
87
88
uvnrV1_calibdbV2_to_calibdb(CalibDbV2_UVNR_t * pCalibdbV2,CalibDb_UVNR_2_t * pCalibdb,int mode_idx)89 int uvnrV1_calibdbV2_to_calibdb(CalibDbV2_UVNR_t *pCalibdbV2, CalibDb_UVNR_2_t *pCalibdb, int mode_idx)
90 {
91 CalibDbV2_UVNR_Tuning_t *pTuningParaV2 = NULL;
92 CalibDbV2_UVNR_T_ISO_t *pTuningISOV2 = NULL;
93 CalibDbV2_UVNR_Kernel_t *pKernel_Coeff;
94 CalibDb_UVNR_Params_t *pSetting = NULL;
95
96 if(pCalibdb == NULL) {
97 printf(" pCalibdb is NULL pointer\n");
98 return -1;
99 }
100
101 if(pCalibdbV2 == NULL) {
102 printf(" pCalibdbV2 is NULL pointer\n");
103 return -1;
104 }
105
106 if(pCalibdb->mode_num < mode_idx) {
107 printf(" old xml file have no %d mode cell \n", mode_idx);
108 return -1;
109 }
110
111 pTuningParaV2 = &pCalibdbV2->TuningPara;
112
113
114
115 //assign the value
116 pCalibdb->enable = pTuningParaV2->enable;
117 strcpy(pCalibdb->version, pCalibdbV2->Version);
118
119 //tuning
120 for(int i = 0; i < pTuningParaV2->Setting_len; i++) {
121 pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
122 strcpy(pSetting->snr_mode, pTuningParaV2->Setting[i].SNR_Mode);
123 strcpy(pSetting->sensor_mode, pTuningParaV2->Setting[i].Sensor_Mode);
124
125 for(int j = 0; j < UVNRV1_ISO_NUM; j++) {
126 pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
127 pSetting->ISO[j] = pTuningISOV2->iso;
128 pSetting->step0_uvgrad_ratio[j] = pTuningISOV2->step0_uvgrad_ratio;
129 pSetting->step0_uvgrad_offset[j] = pTuningISOV2->step0_uvgrad_offset;
130
131 pSetting->step1_median_ratio[j] = pTuningISOV2->step1_median_ratio;
132 pSetting->step1_bf_sigmaR[j] = pTuningISOV2->step1_bf_sigmaR;
133 pSetting->step1_bf_uvgain[j] = pTuningISOV2->step1_bf_uvgain;
134 pSetting->step1_bf_ratio[j] = pTuningISOV2->step1_bf_ratio;
135
136 pSetting->step2_median_ratio[j] = pTuningISOV2->step2_median_ratio;
137 pSetting->step2_bf_sigmaR[j] = pTuningISOV2->step2_bf_sigmaR;
138 pSetting->step2_bf_uvgain[j] = pTuningISOV2->step2_bf_uvgain;
139 pSetting->step2_bf_ratio[j] = pTuningISOV2->step2_bf_ratio;
140
141 pSetting->step3_bf_sigmaR[j] = pTuningISOV2->step3_bf_sigmaR;
142 pSetting->step3_bf_uvgain[j] = pTuningISOV2->step3_bf_uvgain;
143 pSetting->step3_bf_ratio[j] = pTuningISOV2->step3_bf_ratio;
144
145 }
146
147 }
148
149 pKernel_Coeff = &pTuningParaV2->Kernel_Coeff;
150 memcpy(pCalibdb->mode_cell[mode_idx].setting[0].kernel_3x3, pKernel_Coeff->kernel_3x3, sizeof(pKernel_Coeff->kernel_3x3));
151 memcpy(pCalibdb->mode_cell[mode_idx].setting[0].kernel_5x5, pKernel_Coeff->kernel_5x5, sizeof(pKernel_Coeff->kernel_5x5));
152 memcpy(pCalibdb->mode_cell[mode_idx].setting[0].kernel_9x9, pKernel_Coeff->kernel_9x9, sizeof(pKernel_Coeff->kernel_9x9));
153 pCalibdb->mode_cell[mode_idx].setting[0].kernel_9x9_num = pKernel_Coeff->kernel_9x9_num;
154
155 return 0;
156
157 }
158
159
uvnrV1_calibdbV2_free(CalibDbV2_UVNR_t * pCalibdbV2)160 void uvnrV1_calibdbV2_free(CalibDbV2_UVNR_t *pCalibdbV2)
161 {
162 if(pCalibdbV2) {
163 if(pCalibdbV2->Version) {
164 free(pCalibdbV2->Version);
165 }
166
167 if(pCalibdbV2->TuningPara.Setting) {
168 for(int i = 0; i < pCalibdbV2->TuningPara.Setting_len; i++) {
169 if(pCalibdbV2->TuningPara.Setting[i].SNR_Mode) {
170 free(pCalibdbV2->TuningPara.Setting[i].SNR_Mode);
171 }
172 if(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode) {
173 free(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode);
174 }
175 if(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO) {
176 free(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO);
177 }
178 }
179 free(pCalibdbV2->TuningPara.Setting);
180 }
181
182 free(pCalibdbV2);
183 }
184
185 }
186
187