1 #include "ynr_xml2json_v1.h"
2
3 #define YNRV1_SETTING_NUM (2)
4 #define YNRV1_ISO_NUM (13)
5
ynrV1_calibdb_to_calibdbV2(const CalibDb_YNR_2_t * pCalibdb,CalibDbV2_YnrV1_t * pCalibdbV2,int mode_idx)6 int ynrV1_calibdb_to_calibdbV2(const CalibDb_YNR_2_t *pCalibdb, CalibDbV2_YnrV1_t *pCalibdbV2, int mode_idx)
7 {
8
9 CalibDbV2_YnrV1_Calib_t *pCalibParaV2 = NULL;
10 CalibDbV2_YnrV1_Tuning_t *pTuningParaV2 = NULL;
11 CalibDbV2_YnrV1_C_ISO_t *pCalibISOV2 = NULL;
12 CalibDbV2_YnrV1_T_ISO_t *pTuningISOV2 = NULL;
13 CalibDb_YNR_Setting_t *pSetting = NULL;
14 struct CalibDb_YNR_ISO_s *pISO = NULL;
15
16 if(pCalibdb == NULL) {
17 printf(" pCalibdb is NULL pointer\n");
18 return -1;
19 }
20
21 if(pCalibdbV2 == NULL) {
22 printf(" pCalibdbV2 is NULL pointer\n");
23 return -1;
24 }
25
26 if(pCalibdb->mode_num < mode_idx) {
27 printf(" old xml file have no %d mode cell \n", mode_idx);
28 return -1;
29 }
30
31 pCalibParaV2 = &pCalibdbV2->CalibPara;
32 pTuningParaV2 = &pCalibdbV2->TuningPara;
33
34 //malloc settting size
35 pCalibParaV2->Setting = (CalibDbV2_YnrV1_Calib_Set_t *)malloc(YNRV1_SETTING_NUM * sizeof(CalibDbV2_YnrV1_Calib_Set_t));
36 memset(pCalibParaV2->Setting, 0x00, YNRV1_SETTING_NUM * sizeof(CalibDbV2_YnrV1_Calib_Set_t));
37 pCalibParaV2->Setting_len = YNRV1_SETTING_NUM;
38 pTuningParaV2->Setting = (CalibDbV2_YnrV1_T_Set_t *)malloc(YNRV1_SETTING_NUM * sizeof(CalibDbV2_YnrV1_T_Set_t));
39 memset(pTuningParaV2->Setting, 0x00, YNRV1_SETTING_NUM * sizeof(CalibDbV2_YnrV1_T_Set_t));
40 pTuningParaV2->Setting_len = YNRV1_SETTING_NUM;
41
42 //malloc iso size
43 for(int i = 0; i < YNRV1_SETTING_NUM; i++) {
44 pCalibParaV2->Setting[i].Calib_ISO = (CalibDbV2_YnrV1_C_ISO_t *)malloc(YNRV1_ISO_NUM * sizeof(CalibDbV2_YnrV1_C_ISO_t));
45 memset(pCalibParaV2->Setting[i].Calib_ISO, 0x00, YNRV1_ISO_NUM * sizeof(CalibDbV2_YnrV1_C_ISO_t));
46 pCalibParaV2->Setting[i].Calib_ISO_len = YNRV1_ISO_NUM;
47 pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_YnrV1_T_ISO_t *)malloc(YNRV1_ISO_NUM * sizeof(CalibDbV2_YnrV1_T_ISO_t));
48 memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, YNRV1_ISO_NUM * sizeof(CalibDbV2_YnrV1_T_ISO_t));
49 pTuningParaV2->Setting[i].Tuning_ISO_len = YNRV1_ISO_NUM;
50 }
51
52 //assign the value
53 pCalibdbV2->Version = strdup(pCalibdb->version);
54 pTuningParaV2->enable = pCalibdb->enable;
55
56 for(int i = 0; i < YNRV1_SETTING_NUM; i++) {
57 pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
58
59 pCalibParaV2->Setting[i].SNR_Mode = strdup(pSetting->snr_mode);
60 pCalibParaV2->Setting[i].Sensor_Mode = strdup(pSetting->sensor_mode);
61 pTuningParaV2->Setting[i].SNR_Mode = strdup(pSetting->snr_mode);
62 pTuningParaV2->Setting[i].Sensor_Mode = strdup(pSetting->sensor_mode);
63
64 for(int j = 0; j < YNRV1_ISO_NUM; j++) {
65 pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
66 pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
67 pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
68 pISO = &pSetting->ynr_iso[j];
69
70 //calib para
71 pCalibISOV2->iso = pISO->iso;
72 for(int k = 0; k < 5; k++) {
73 pCalibISOV2->sigma_curve[k] = pISO->sigma_curve[k];
74 }
75 for(int k = 0; k < 4; k++) {
76 pCalibISOV2->ynr_lci[k] = pISO->ynr_lci[k];
77 pCalibISOV2->ynr_lhci[k] = pISO->ynr_lhci[k];
78 pCalibISOV2->ynr_hlci[k] = pISO->ynr_hlci[k];
79 pCalibISOV2->ynr_hhci[k] = pISO->ynr_hhci[k];
80 }
81
82 //tuning para
83 pTuningISOV2->iso = pISO->iso;
84 pTuningISOV2->lo_bfScale_1 = pISO->lo_bfScale[0];
85 pTuningISOV2->lo_bfScale_2 = pISO->lo_bfScale[1];
86 pTuningISOV2->lo_bfScale_3 = pISO->lo_bfScale[2];
87 pTuningISOV2->lo_bfScale_4 = pISO->lo_bfScale[3];
88
89 pTuningISOV2->denoise_weight_1 = pISO->denoise_weight[0];
90 pTuningISOV2->denoise_weight_2 = pISO->denoise_weight[1];
91 pTuningISOV2->denoise_weight_3 = pISO->denoise_weight[2];
92 pTuningISOV2->denoise_weight_4 = pISO->denoise_weight[3];
93
94 pTuningISOV2->imerge_ratio = pISO->imerge_ratio;
95 pTuningISOV2->imerge_bound = pISO->imerge_bound;
96 pTuningISOV2->lo_directionStrength = pISO->lo_directionStrength;
97
98 pTuningISOV2->hi_bfScale_1 = pISO->hi_bfScale[0];
99 pTuningISOV2->hi_bfScale_2 = pISO->hi_bfScale[1];
100 pTuningISOV2->hi_bfScale_3 = pISO->hi_bfScale[2];
101 pTuningISOV2->hi_bfScale_4 = pISO->hi_bfScale[3];
102
103 pTuningISOV2->hi_denoiseWeight_1 = pISO->hi_denoiseWeight[0];
104 pTuningISOV2->hi_denoiseWeight_2 = pISO->hi_denoiseWeight[1];
105 pTuningISOV2->hi_denoiseWeight_3 = pISO->hi_denoiseWeight[2];
106 pTuningISOV2->hi_denoiseWeight_4 = pISO->hi_denoiseWeight[3];
107
108 pTuningISOV2->hi_soft_thresh_scale_1 = pISO->hi_soft_thresh_scale[0];
109 pTuningISOV2->hi_soft_thresh_scale_2 = pISO->hi_soft_thresh_scale[1];
110 pTuningISOV2->hi_soft_thresh_scale_3 = pISO->hi_soft_thresh_scale[2];
111 pTuningISOV2->hi_soft_thresh_scale_4 = pISO->hi_soft_thresh_scale[3];
112
113 pTuningISOV2->hi_denoiseStrength = pISO->hi_denoiseStrength;
114 pTuningISOV2->hi_detailMinAdjDnW = pISO->hi_detailMinAdjDnW;
115
116 for(int k = 0; k < 4; k++) {
117 pTuningISOV2->hwith_d[k] = pISO->hwith_d[k];
118 }
119
120 //luma para
121 for(int k = 0; k < 6; k++) {
122 pTuningISOV2->luma_para.lo_lumaPoint[k] = pISO->lo_lumaPoint[k];
123 pTuningISOV2->luma_para.lo_lumaRatio[k] = pISO->lo_lumaRatio[k];
124 pTuningISOV2->luma_para.hi_lumaPoint[k] = pISO->hi_lumaPoint[k];
125 pTuningISOV2->luma_para.hi_lumaRatio[k] = pISO->hi_lumaRatio[k];
126 }
127
128 //hgrad para
129 for(int k = 0; k < 6; k++) {
130 pTuningISOV2->hgrad_para.y_luma_point[k] = pISO->y_luma_point[k];
131 pTuningISOV2->hgrad_para.hgrad_y_level1[k] = pISO->hgrad_y_level1[k];
132 pTuningISOV2->hgrad_para.hgrad_y_level2[k] = pISO->hgrad_y_level2[k];
133 pTuningISOV2->hgrad_para.hgrad_y_level3[k] = pISO->hgrad_y_level3[k];
134 pTuningISOV2->hgrad_para.hgrad_y_level4[k] = pISO->hgrad_y_level4[k];
135 }
136
137 }
138 }
139
140 return 0;
141 }
142
143
ynrV1_calibdbV2_to_calibdb(CalibDbV2_YnrV1_t * pCalibdbV2,CalibDb_YNR_2_t * pCalibdb,int mode_idx)144 int ynrV1_calibdbV2_to_calibdb(CalibDbV2_YnrV1_t *pCalibdbV2, CalibDb_YNR_2_t *pCalibdb, int mode_idx)
145 {
146
147 CalibDbV2_YnrV1_Calib_t *pCalibParaV2 = NULL;
148 CalibDbV2_YnrV1_Tuning_t *pTuningParaV2 = NULL;
149 CalibDbV2_YnrV1_C_ISO_t *pCalibISOV2 = NULL;
150 CalibDbV2_YnrV1_T_ISO_t *pTuningISOV2 = NULL;
151 CalibDb_YNR_Setting_t *pSetting = NULL;
152 struct CalibDb_YNR_ISO_s *pISO = NULL;
153
154 if(pCalibdb == NULL) {
155 printf(" pCalibdb is NULL pointer\n");
156 return -1;
157 }
158
159 if(pCalibdbV2 == NULL) {
160 printf(" pCalibdbV2 is NULL pointer\n");
161 return -1;
162 }
163
164 if(pCalibdb->mode_num < mode_idx) {
165 printf(" old xml file have no %d mode cell \n", mode_idx);
166 return -1;
167 }
168
169 pCalibParaV2 = &pCalibdbV2->CalibPara;
170 pTuningParaV2 = &pCalibdbV2->TuningPara;
171
172
173
174 //assign the value
175 strcpy(pCalibdb->version, pCalibdbV2->Version);
176 pCalibdb->enable = pTuningParaV2->enable;
177
178 for(int i = 0; i < pTuningParaV2->Setting_len; i++) {
179 pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
180
181 strcpy(pSetting->snr_mode, pTuningParaV2->Setting[i].SNR_Mode);
182 strcpy(pSetting->sensor_mode, pTuningParaV2->Setting[i].Sensor_Mode);
183
184 for(int j = 0; j < YNRV1_ISO_NUM; j++) {
185 pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
186 pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
187 pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
188 pISO = &pSetting->ynr_iso[j];
189
190 //calib para
191 pISO->iso = pCalibISOV2->iso;
192 for(int k = 0; k < 5; k++) {
193 pISO->sigma_curve[k] = pCalibISOV2->sigma_curve[k];
194 }
195 for(int k = 0; k < 4; k++) {
196 pISO->ynr_lci[k] = pCalibISOV2->ynr_lci[k];
197 pISO->ynr_lhci[k] = pCalibISOV2->ynr_lhci[k];
198 pISO->ynr_hlci[k] = pCalibISOV2->ynr_hlci[k];
199 pISO->ynr_hhci[k] = pCalibISOV2->ynr_hhci[k];
200 }
201
202 //tuning para
203 pISO->iso = pTuningISOV2->iso;
204 pISO->lo_bfScale[0] = pTuningISOV2->lo_bfScale_1;
205 pISO->lo_bfScale[1] = pTuningISOV2->lo_bfScale_2;
206 pISO->lo_bfScale[2] = pTuningISOV2->lo_bfScale_3;
207 pISO->lo_bfScale[3] = pTuningISOV2->lo_bfScale_4;
208
209 pISO->denoise_weight[0] = pTuningISOV2->denoise_weight_1;
210 pISO->denoise_weight[1] = pTuningISOV2->denoise_weight_2;
211 pISO->denoise_weight[2] = pTuningISOV2->denoise_weight_3;
212 pISO->denoise_weight[3] = pTuningISOV2->denoise_weight_4;
213
214 pISO->imerge_ratio = pTuningISOV2->imerge_ratio;
215 pISO->imerge_bound = pTuningISOV2->imerge_bound;
216 pISO->lo_directionStrength = pTuningISOV2->lo_directionStrength;
217
218 pISO->hi_bfScale[0] = pTuningISOV2->hi_bfScale_1;
219 pISO->hi_bfScale[1] = pTuningISOV2->hi_bfScale_2;
220 pISO->hi_bfScale[2] = pTuningISOV2->hi_bfScale_3;
221 pISO->hi_bfScale[3] = pTuningISOV2->hi_bfScale_4;
222
223 pISO->hi_denoiseWeight[0] = pTuningISOV2->hi_denoiseWeight_1;
224 pISO->hi_denoiseWeight[1] = pTuningISOV2->hi_denoiseWeight_2;
225 pISO->hi_denoiseWeight[2] = pTuningISOV2->hi_denoiseWeight_3;
226 pISO->hi_denoiseWeight[3] = pTuningISOV2->hi_denoiseWeight_4;
227
228 pISO->hi_soft_thresh_scale[0] = pTuningISOV2->hi_soft_thresh_scale_1;
229 pISO->hi_soft_thresh_scale[1] = pTuningISOV2->hi_soft_thresh_scale_2;
230 pISO->hi_soft_thresh_scale[2] = pTuningISOV2->hi_soft_thresh_scale_3;
231 pISO->hi_soft_thresh_scale[3] = pTuningISOV2->hi_soft_thresh_scale_4;
232
233 pISO->hi_denoiseStrength = pTuningISOV2->hi_denoiseStrength;
234 pISO->hi_detailMinAdjDnW = pTuningISOV2->hi_detailMinAdjDnW;
235
236 for(int k = 0; k < 4; k++) {
237 pISO->hwith_d[k] = pTuningISOV2->hwith_d[k];
238 }
239
240 //luma para
241 for(int k = 0; k < 6; k++) {
242 pISO->lo_lumaPoint[k] = pTuningISOV2->luma_para.lo_lumaPoint[k];
243 pISO->lo_lumaRatio[k] = pTuningISOV2->luma_para.lo_lumaRatio[k];
244 pISO->hi_lumaPoint[k] = pTuningISOV2->luma_para.hi_lumaPoint[k];
245 pISO->hi_lumaRatio[k] = pTuningISOV2->luma_para.hi_lumaRatio[k];
246 }
247
248 //hgrad para
249 for(int k = 0; k < 6; k++) {
250 pISO->y_luma_point[k] = pTuningISOV2->hgrad_para.y_luma_point[k];
251 pISO->hgrad_y_level1[k] = pTuningISOV2->hgrad_para.hgrad_y_level1[k];
252 pISO->hgrad_y_level2[k] = pTuningISOV2->hgrad_para.hgrad_y_level2[k];
253 pISO->hgrad_y_level3[k] = pTuningISOV2->hgrad_para.hgrad_y_level3[k];
254 pISO->hgrad_y_level4[k] = pTuningISOV2->hgrad_para.hgrad_y_level4[k];
255 }
256
257 }
258 }
259
260 return 0;
261
262 }
263
264
ynrV1_calibdbV2_free(CalibDbV2_YnrV1_t * pCalibdbV2)265 void ynrV1_calibdbV2_free(CalibDbV2_YnrV1_t *pCalibdbV2)
266 {
267 if(pCalibdbV2) {
268 if(pCalibdbV2->Version) {
269 free(pCalibdbV2->Version);
270 }
271
272 if(pCalibdbV2->CalibPara.Setting) {
273 for(int i = 0; i < pCalibdbV2->CalibPara.Setting_len; i++) {
274 if(pCalibdbV2->CalibPara.Setting[i].SNR_Mode) {
275 free(pCalibdbV2->CalibPara.Setting[i].SNR_Mode);
276 }
277 if(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode) {
278 free(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode);
279 }
280 if(pCalibdbV2->CalibPara.Setting[i].Calib_ISO) {
281 free(pCalibdbV2->CalibPara.Setting[i].Calib_ISO);
282 }
283 }
284
285 free(pCalibdbV2->CalibPara.Setting);
286 }
287
288 if(pCalibdbV2->TuningPara.Setting) {
289 for(int i = 0; i < pCalibdbV2->TuningPara.Setting_len; i++) {
290 if(pCalibdbV2->TuningPara.Setting[i].SNR_Mode) {
291 free(pCalibdbV2->TuningPara.Setting[i].SNR_Mode);
292 }
293 if(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode) {
294 free(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode);
295 }
296 if(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO) {
297 free(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO);
298 }
299 }
300
301 free(pCalibdbV2->TuningPara.Setting);
302 }
303
304 free(pCalibdbV2);
305 }
306 }
307
308