xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/iq_parser_v2/mfnr_xml2json_v1.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "mfnr_xml2json_v1.h"
2 
3 #define MFNRV1_SETTING_NUM (2)
4 #define MFNRV1_ISO_NUM  (13)
5 
6 
7 
mfnrV1_calibdb_to_calibdbV2(const CalibDb_MFNR_2_t * pCalibdb,CalibDbV2_MFNR_t * pCalibdbV2,int mode_idx)8 int mfnrV1_calibdb_to_calibdbV2(const CalibDb_MFNR_2_t *pCalibdb,  CalibDbV2_MFNR_t *pCalibdbV2, int mode_idx)
9 {
10     CalibDbV2_MFNR_Calib_t *pCalibParaV2 = NULL;
11     CalibDbV2_MFNR_Tuning_t *pTuningParaV2 = NULL;
12     CalibDbV2_MFNR_C_ISO_t *pCalibISOV2 = NULL;
13     CalibDbV2_MFNR_T_ISO_t *pTuningISOV2 = NULL;
14     CalibDbV2_MFNR_Motion_ISO_t *pMotionISOV2 = NULL;
15     CalibDbV2_MFNR_Dynamic_t *pDynamicV2 = NULL;
16     CalibDb_MFNR_Setting_t *pSetting = NULL;
17     CalibDb_MFNR_Dynamic_t *pDynamic = NULL;
18     CalibDb_MFNR_Motion_t  *pMotion = NULL;
19     struct CalibDb_MFNR_ISO_s *pISO = NULL;
20 
21     if(pCalibdb == NULL) {
22         printf(" pCalibdb is NULL pointer\n");
23         return -1;
24     }
25 
26     if(pCalibdbV2 == NULL) {
27         printf(" pCalibdbV2 is NULL pointer\n");
28         return -1;
29     }
30 
31     if(pCalibdb->mode_num < mode_idx) {
32         printf(" old xml file have no %d mode cell \n", mode_idx);
33         return -1;
34     }
35 
36     pCalibParaV2 = &pCalibdbV2->CalibPara;
37     pTuningParaV2 = &pCalibdbV2->TuningPara;
38 
39     //malloc settting size
40     pCalibParaV2->Setting = (CalibDbV2_MFNR_C_Set_t *)malloc(MFNRV1_SETTING_NUM * sizeof(CalibDbV2_MFNR_C_Set_t));
41     memset(pCalibParaV2->Setting,  0x00, MFNRV1_SETTING_NUM * sizeof(CalibDbV2_MFNR_C_Set_t));
42     pCalibParaV2->Setting_len = MFNRV1_SETTING_NUM;
43     pTuningParaV2->Setting = (CalibDbV2_MFNR_T_Set_t *)malloc(MFNRV1_SETTING_NUM * sizeof(CalibDbV2_MFNR_T_Set_t));
44     memset(pTuningParaV2->Setting, 0x00, MFNRV1_SETTING_NUM * sizeof(CalibDbV2_MFNR_T_Set_t));
45     pTuningParaV2->Setting_len = MFNRV1_SETTING_NUM;
46 
47     //malloc iso size
48     for(int i = 0; i < pTuningParaV2->Setting_len; i++) {
49         pCalibParaV2->Setting[i].Calib_ISO =  (CalibDbV2_MFNR_C_ISO_t *)malloc(MFNRV1_ISO_NUM * sizeof(CalibDbV2_MFNR_C_ISO_t));
50         memset(pCalibParaV2->Setting[i].Calib_ISO, 0x00, MFNRV1_ISO_NUM * sizeof(CalibDbV2_MFNR_C_ISO_t));
51         pCalibParaV2->Setting[i].Calib_ISO_len = MFNRV1_ISO_NUM;
52         pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_MFNR_T_ISO_t *)malloc(MFNRV1_ISO_NUM * sizeof(CalibDbV2_MFNR_T_ISO_t));
53         memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, MFNRV1_ISO_NUM * sizeof(CalibDbV2_MFNR_T_ISO_t));
54         pTuningParaV2->Setting[i].Tuning_ISO_len = MFNRV1_ISO_NUM;
55     }
56     pTuningParaV2->Motion.Motion_ISO = (CalibDbV2_MFNR_Motion_ISO_t *)malloc(MFNRV1_ISO_NUM * sizeof(CalibDbV2_MFNR_Motion_ISO_t));
57     memset(pTuningParaV2->Motion.Motion_ISO, 0x00, MFNRV1_ISO_NUM * sizeof(CalibDbV2_MFNR_Motion_ISO_t));
58     pTuningParaV2->Motion.Motion_ISO_len = MFNRV1_ISO_NUM;
59 
60     //assign the value
61     pCalibdbV2->Version = strdup(pCalibdb->version);
62 
63     pTuningParaV2->enable = pCalibdb->enable;
64     pTuningParaV2->local_gain_en = pCalibdb->local_gain_en;
65     pTuningParaV2->mode_3to1 = pCalibdb->mode_3to1;
66     pTuningParaV2->motion_detect_en = pCalibdb->motion_detect_en;
67 
68     for(int i = 0; i < MFNRV1_SETTING_NUM; i++) {
69         pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
70 
71         pCalibParaV2->Setting[i].SNR_Mode = strdup(pSetting->snr_mode);
72         pCalibParaV2->Setting[i].Sensor_Mode = strdup(pSetting->sensor_mode);
73         pTuningParaV2->Setting[i].SNR_Mode = strdup( pSetting->snr_mode);
74         pTuningParaV2->Setting[i].Sensor_Mode = strdup( pSetting->sensor_mode);
75 
76         for(int j = 0; j < MFNRV1_ISO_NUM; j++) {
77             pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
78             pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
79             pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
80             pISO = &pSetting->mfnr_iso[j];
81 
82             //calib
83             pCalibISOV2->iso = pISO->iso;
84             pCalibISOV2->noise_curve_x00 = pISO->noise_curve_x00;
85             for(int k = 0; k < 5; k++) {
86                 pCalibISOV2->noise_curve[k] = pISO->noise_curve[k];
87             }
88             for(int k = 0; k < 4; k++) {
89                 pCalibISOV2->y_lo_noiseprofile[k] = pISO->y_lo_noiseprofile[k];
90                 pCalibISOV2->y_hi_noiseprofile[k] = pISO->y_hi_noiseprofile[k];
91             }
92             for(int k = 0; k < 3; k++) {
93                 pCalibISOV2->uv_lo_noiseprofile[k] = pISO->uv_lo_noiseprofile[k];
94                 pCalibISOV2->uv_hi_noiseprofile[k] = pISO->uv_hi_noiseprofile[k];
95             }
96 
97             //tuning
98             pTuningISOV2->iso = pISO->iso;
99             pTuningISOV2->weight_limit_y_0 = pISO->weight_limit_y[0];
100             pTuningISOV2->weight_limit_y_1 = pISO->weight_limit_y[1];
101             pTuningISOV2->weight_limit_y_2 = pISO->weight_limit_y[2];
102             pTuningISOV2->weight_limit_y_3 = pISO->weight_limit_y[3];
103 
104             pTuningISOV2->weight_limit_uv_0 = pISO->weight_limit_uv[0];
105             pTuningISOV2->weight_limit_uv_1 = pISO->weight_limit_uv[1];
106             pTuningISOV2->weight_limit_uv_2 = pISO->weight_limit_uv[2];
107 
108             pTuningISOV2->ratio_frq_y_l = pISO->ratio_frq[0];
109             pTuningISOV2->ratio_frq_y_h = pISO->ratio_frq[1];
110             pTuningISOV2->ratio_frq_uv_l = pISO->ratio_frq[2];
111             pTuningISOV2->ratio_frq_uv_h = pISO->ratio_frq[3];
112 
113             pTuningISOV2->luma_w_in_chroma_0 = pISO->luma_w_in_chroma[0];
114             pTuningISOV2->luma_w_in_chroma_1 = pISO->luma_w_in_chroma[1];
115             pTuningISOV2->luma_w_in_chroma_2 = pISO->luma_w_in_chroma[2];
116 
117             pTuningISOV2->y_lo_bfscale_0 = pISO->y_lo_bfscale[0];
118             pTuningISOV2->y_lo_bfscale_1 = pISO->y_lo_bfscale[1];
119             pTuningISOV2->y_lo_bfscale_2 = pISO->y_lo_bfscale[2];
120             pTuningISOV2->y_lo_bfscale_3 = pISO->y_lo_bfscale[3];
121 
122             pTuningISOV2->y_hi_bfscale_0 = pISO->y_hi_bfscale[0];
123             pTuningISOV2->y_hi_bfscale_1 = pISO->y_hi_bfscale[1];
124             pTuningISOV2->y_hi_bfscale_2 = pISO->y_hi_bfscale[2];
125             pTuningISOV2->y_hi_bfscale_3 = pISO->y_hi_bfscale[3];
126 
127             pTuningISOV2->y_denoisestrength = pISO->y_denoisestrength;
128 
129             pTuningISOV2->uv_lo_bfscale_0 = pISO->uv_lo_bfscale[0];
130             pTuningISOV2->uv_lo_bfscale_1 = pISO->uv_lo_bfscale[1];
131             pTuningISOV2->uv_lo_bfscale_2 = pISO->uv_lo_bfscale[2];
132 
133             pTuningISOV2->uv_hi_bfscale_0 = pISO->uv_hi_bfscale[0];
134             pTuningISOV2->uv_hi_bfscale_1 = pISO->uv_hi_bfscale[1];
135             pTuningISOV2->uv_hi_bfscale_2 = pISO->uv_hi_bfscale[2];
136 
137             pTuningISOV2->uv_denoisestrength = pISO->uv_denoisestrength;
138 
139             for(int k = 0; k < 6; k++) {
140                 pTuningISOV2->luma_para.y_lumanrpoint[k] = pISO->y_lumanrpoint[k];
141                 pTuningISOV2->luma_para.y_lumanrcurve[k] = pISO->y_lumanrcurve[k];
142                 pTuningISOV2->luma_para.uv_lumanrpoint[k] = pISO->uv_lumanrpoint[k];
143                 pTuningISOV2->luma_para.uv_lumanrcurve[k] = pISO->uv_lumanrcurve[k];
144             }
145 
146             for(int k = 0; k < 6; k++) {
147                 pTuningISOV2->y_gfdelta_para.y_lo_lvl0_gfdelta[k] = pISO->y_lo_lvl0_gfdelta[k];
148                 pTuningISOV2->y_gfdelta_para.y_hi_lvl0_gfdelta[k] = pISO->y_hi_lvl0_gfdelta[k];
149                 pTuningISOV2->uv_gfdelta_para.uv_lo_lvl0_gfdelta[k] = pISO->uv_lo_lvl0_gfdelta[k];
150                 pTuningISOV2->uv_gfdelta_para.uv_hi_lvl0_gfdelta[k] = pISO->uv_hi_lvl0_gfdelta[k];
151                 pTuningISOV2->gfsigma_para.lvl0_gfsigma[k] = pISO->lvl0_gfsigma[k];
152             }
153 
154             for(int k = 0; k < 3; k++) {
155                 pTuningISOV2->y_gfdelta_para.y_lo_lvl1_gfdelta[k] = pISO->y_lo_lvl1_gfdelta[k];
156                 pTuningISOV2->y_gfdelta_para.y_hi_lvl1_gfdelta[k] = pISO->y_hi_lvl1_gfdelta[k];
157                 pTuningISOV2->y_gfdelta_para.y_lo_lvl2_gfdelta[k] = pISO->y_lo_lvl2_gfdelta[k];
158                 pTuningISOV2->y_gfdelta_para.y_hi_lvl2_gfdelta[k] = pISO->y_hi_lvl2_gfdelta[k];
159                 pTuningISOV2->y_gfdelta_para.y_lo_lvl3_gfdelta[k] = pISO->y_lo_lvl3_gfdelta[k];
160                 pTuningISOV2->y_gfdelta_para.y_hi_lvl3_gfdelta[k] = pISO->y_hi_lvl3_gfdelta[k];
161             }
162 
163             for(int k = 0; k < 3; k++) {
164                 pTuningISOV2->uv_gfdelta_para.uv_lo_lvl1_gfdelta[k] = pISO->uv_lo_lvl1_gfdelta[k];
165                 pTuningISOV2->uv_gfdelta_para.uv_hi_lvl1_gfdelta[k] = pISO->uv_hi_lvl1_gfdelta[k];
166                 pTuningISOV2->uv_gfdelta_para.uv_lo_lvl2_gfdelta[k] = pISO->uv_lo_lvl2_gfdelta[k];
167                 pTuningISOV2->uv_gfdelta_para.uv_hi_lvl2_gfdelta[k] = pISO->uv_hi_lvl2_gfdelta[k];
168             }
169 
170             for(int k = 0; k < 3; k++) {
171                 pTuningISOV2->gfsigma_para.lvl1_gfsigma[k] = pISO->lvl1_gfsigma[k];
172                 pTuningISOV2->gfsigma_para.lvl2_gfsigma[k] = pISO->lvl2_gfsigma[k];
173                 pTuningISOV2->gfsigma_para.lvl3_gfsigma[k] = pISO->lvl3_gfsigma[k];
174             }
175         }
176     }
177 
178 
179     //motion
180     pMotion = &pCalibdb->mode_cell[mode_idx].motion;
181     for(int i = 0; i < MFNRV1_ISO_NUM; i++) {
182         pMotionISOV2 = &pCalibdbV2->TuningPara.Motion.Motion_ISO[i];
183         pMotionISOV2->iso = pMotion->iso[i];
184         pMotionISOV2->sigmaHScale = pMotion->sigmaHScale[i];
185         pMotionISOV2->sigmaLScale = pMotion->sigmaLScale[i];
186         pMotionISOV2->lightClp = pMotion->lightClp[i];
187         pMotionISOV2->uvWeight = pMotion->uvWeight[i];
188         pMotionISOV2->mfnrSigmaScale = pMotion->mfnrSigmaScale[i];
189         pMotionISOV2->yuvnrGainScale0 = pMotion->yuvnrGainScale0[i];
190         pMotionISOV2->yuvnrGainScale1 = pMotion->yuvnrGainScale1[i];
191         pMotionISOV2->yuvnrGainScale2 = pMotion->yuvnrGainScale2[i];
192         pMotionISOV2->frame_limit_y = pMotion->frame_limit_y[i];
193         pMotionISOV2->frame_limit_uv = pMotion->frame_limit_uv[i];
194     }
195 
196     //dynamic
197     pDynamic = &pCalibdb->mode_cell[mode_idx].dynamic;
198     pDynamicV2 = &pCalibdbV2->TuningPara.Dynamic;
199     pDynamicV2->Enable = pDynamic->enable;
200     pDynamicV2->LowTh_iso = pDynamic->lowth_iso;
201     pDynamicV2->LowTh_time = pDynamic->lowth_time;
202     pDynamicV2->HighTh_iso = pDynamic->highth_iso;
203     pDynamicV2->HighTh_time = pDynamic->highth_time;
204 
205     return 0;
206 
207 }
208 
209 
210 
211 
212 
mfnrV1_calibdbV2_to_calibdb(CalibDbV2_MFNR_t * pCalibdbV2,CalibDb_MFNR_2_t * pCalibdb,int mode_idx)213 int mfnrV1_calibdbV2_to_calibdb(CalibDbV2_MFNR_t *pCalibdbV2,  CalibDb_MFNR_2_t *pCalibdb,  int mode_idx)
214 {
215     CalibDbV2_MFNR_Calib_t *pCalibParaV2 = NULL;
216     CalibDbV2_MFNR_Tuning_t *pTuningParaV2 = NULL;
217     CalibDbV2_MFNR_C_ISO_t *pCalibISOV2 = NULL;
218     CalibDbV2_MFNR_T_ISO_t *pTuningISOV2 = NULL;
219     CalibDbV2_MFNR_Motion_ISO_t *pMotionISOV2 = NULL;
220     CalibDbV2_MFNR_Dynamic_t *pDynamicV2 = NULL;
221     CalibDb_MFNR_Setting_t *pSetting = NULL;
222     CalibDb_MFNR_Dynamic_t *pDynamic = NULL;
223     CalibDb_MFNR_Motion_t  *pMotion = NULL;
224     struct CalibDb_MFNR_ISO_s *pISO = NULL;
225 
226     if(pCalibdb == NULL) {
227         printf(" pCalibdb is NULL pointer\n");
228         return -1;
229     }
230 
231     if(pCalibdbV2 == NULL) {
232         printf(" pCalibdbV2 is NULL pointer\n");
233         return -1;
234     }
235 
236     if(pCalibdb->mode_num < mode_idx) {
237         printf(" old xml file have no %d mode cell \n", mode_idx);
238         return -1;
239     }
240 
241     pCalibParaV2 = &pCalibdbV2->CalibPara;
242     pTuningParaV2 = &pCalibdbV2->TuningPara;
243 
244 
245     //assign the value
246     strcpy(pCalibdb->version, pCalibdbV2->Version);
247 
248     pCalibdb->enable = pTuningParaV2->enable;
249     pCalibdb->local_gain_en = pTuningParaV2->local_gain_en;
250     pCalibdb->mode_3to1 = pTuningParaV2->mode_3to1;
251     pCalibdb->motion_detect_en = pTuningParaV2->motion_detect_en;
252 
253     for(int i = 0; i < pTuningParaV2->Setting_len; i++) {
254         pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
255 
256         strcpy(pSetting->snr_mode, pTuningParaV2->Setting[i].SNR_Mode);
257         strcpy( pSetting->sensor_mode, pTuningParaV2->Setting[i].Sensor_Mode);
258 
259         for(int j = 0; j < MFNRV1_ISO_NUM; j++) {
260             pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
261             pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
262             pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
263             pISO = &pSetting->mfnr_iso[j];
264 
265             //calib
266             pISO->iso = pCalibISOV2->iso;
267             pISO->noise_curve_x00 = pCalibISOV2->noise_curve_x00;
268             for(int k = 0; k < 5; k++) {
269                 pISO->noise_curve[k] = pCalibISOV2->noise_curve[k];
270             }
271             for(int k = 0; k < 4; k++) {
272                 pISO->y_lo_noiseprofile[k] = pCalibISOV2->y_lo_noiseprofile[k];
273                 pISO->y_hi_noiseprofile[k] = pCalibISOV2->y_hi_noiseprofile[k];
274             }
275             for(int k = 0; k < 3; k++) {
276                 pISO->uv_lo_noiseprofile[k] = pCalibISOV2->uv_lo_noiseprofile[k];
277                 pISO->uv_hi_noiseprofile[k] = pCalibISOV2->uv_hi_noiseprofile[k];
278             }
279 
280             //tuning
281             pISO->iso = pTuningISOV2->iso;
282             pISO->weight_limit_y[0] = pTuningISOV2->weight_limit_y_0;
283             pISO->weight_limit_y[1] = pTuningISOV2->weight_limit_y_1;
284             pISO->weight_limit_y[2] = pTuningISOV2->weight_limit_y_2;
285             pISO->weight_limit_y[3] = pTuningISOV2->weight_limit_y_3;
286 
287             pISO->weight_limit_uv[0] = pTuningISOV2->weight_limit_uv_0;
288             pISO->weight_limit_uv[1] = pTuningISOV2->weight_limit_uv_1;
289             pISO->weight_limit_uv[2] = pTuningISOV2->weight_limit_uv_2;
290 
291             pISO->ratio_frq[0] = pTuningISOV2->ratio_frq_y_l;
292             pISO->ratio_frq[1] = pTuningISOV2->ratio_frq_y_h;
293             pISO->ratio_frq[2] = pTuningISOV2->ratio_frq_uv_l;
294             pISO->ratio_frq[3] = pTuningISOV2->ratio_frq_uv_h;
295 
296             pISO->luma_w_in_chroma[0] = pTuningISOV2->luma_w_in_chroma_0;
297             pISO->luma_w_in_chroma[1] = pTuningISOV2->luma_w_in_chroma_1;
298             pISO->luma_w_in_chroma[2] = pTuningISOV2->luma_w_in_chroma_2;
299 
300             pISO->y_lo_bfscale[0] = pTuningISOV2->y_lo_bfscale_0;
301             pISO->y_lo_bfscale[1] = pTuningISOV2->y_lo_bfscale_1;
302             pISO->y_lo_bfscale[2] = pTuningISOV2->y_lo_bfscale_2;
303             pISO->y_lo_bfscale[3] = pTuningISOV2->y_lo_bfscale_3;
304 
305             pISO->y_hi_bfscale[0] = pTuningISOV2->y_hi_bfscale_0;
306             pISO->y_hi_bfscale[1] = pTuningISOV2->y_hi_bfscale_1;
307             pISO->y_hi_bfscale[2] = pTuningISOV2->y_hi_bfscale_2;
308             pISO->y_hi_bfscale[3] = pTuningISOV2->y_hi_bfscale_3;
309 
310             pISO->y_denoisestrength = pTuningISOV2->y_denoisestrength;
311 
312             pISO->uv_lo_bfscale[0] = pTuningISOV2->uv_lo_bfscale_0;
313             pISO->uv_lo_bfscale[1] = pTuningISOV2->uv_lo_bfscale_1;
314             pISO->uv_lo_bfscale[2] = pTuningISOV2->uv_lo_bfscale_2;
315 
316             pISO->uv_hi_bfscale[0] = pTuningISOV2->uv_hi_bfscale_0;
317             pISO->uv_hi_bfscale[1] = pTuningISOV2->uv_hi_bfscale_1;
318             pISO->uv_hi_bfscale[2] = pTuningISOV2->uv_hi_bfscale_2;
319 
320             pISO->uv_denoisestrength = pTuningISOV2->uv_denoisestrength;
321 
322             for(int k = 0; k < 6; k++) {
323                 pISO->y_lumanrpoint[k] = pTuningISOV2->luma_para.y_lumanrpoint[k];
324                 pISO->y_lumanrcurve[k] = pTuningISOV2->luma_para.y_lumanrcurve[k];
325                 pISO->uv_lumanrpoint[k] = pTuningISOV2->luma_para.uv_lumanrpoint[k];
326                 pISO->uv_lumanrcurve[k] = pTuningISOV2->luma_para.uv_lumanrcurve[k];
327             }
328 
329             for(int k = 0; k < 6; k++) {
330                 pISO->y_lo_lvl0_gfdelta[k] = pTuningISOV2->y_gfdelta_para.y_lo_lvl0_gfdelta[k];
331                 pISO->y_hi_lvl0_gfdelta[k] = pTuningISOV2->y_gfdelta_para.y_hi_lvl0_gfdelta[k];
332                 pISO->uv_lo_lvl0_gfdelta[k] = pTuningISOV2->uv_gfdelta_para.uv_lo_lvl0_gfdelta[k];
333                 pISO->uv_hi_lvl0_gfdelta[k] = pTuningISOV2->uv_gfdelta_para.uv_hi_lvl0_gfdelta[k];
334                 pISO->lvl0_gfsigma[k] = pTuningISOV2->gfsigma_para.lvl0_gfsigma[k];
335             }
336 
337             for(int k = 0; k < 3; k++) {
338                 pISO->y_lo_lvl1_gfdelta[k] = pTuningISOV2->y_gfdelta_para.y_lo_lvl1_gfdelta[k];
339                 pISO->y_hi_lvl1_gfdelta[k] = pTuningISOV2->y_gfdelta_para.y_hi_lvl1_gfdelta[k];
340                 pISO->y_lo_lvl2_gfdelta[k] = pTuningISOV2->y_gfdelta_para.y_lo_lvl2_gfdelta[k];
341                 pISO->y_hi_lvl2_gfdelta[k] = pTuningISOV2->y_gfdelta_para.y_hi_lvl2_gfdelta[k];
342                 pISO->y_lo_lvl3_gfdelta[k] = pTuningISOV2->y_gfdelta_para.y_lo_lvl3_gfdelta[k];
343                 pISO->y_hi_lvl3_gfdelta[k] = pTuningISOV2->y_gfdelta_para.y_hi_lvl3_gfdelta[k];
344             }
345 
346             for(int k = 0; k < 3; k++) {
347                 pISO->uv_lo_lvl1_gfdelta[k] = pTuningISOV2->uv_gfdelta_para.uv_lo_lvl1_gfdelta[k];
348                 pISO->uv_hi_lvl1_gfdelta[k] = pTuningISOV2->uv_gfdelta_para.uv_hi_lvl1_gfdelta[k];
349                 pISO->uv_lo_lvl2_gfdelta[k] = pTuningISOV2->uv_gfdelta_para.uv_lo_lvl2_gfdelta[k];
350                 pISO->uv_hi_lvl2_gfdelta[k] = pTuningISOV2->uv_gfdelta_para.uv_hi_lvl2_gfdelta[k];
351             }
352 
353             for(int k = 0; k < 3; k++) {
354                 pISO->lvl1_gfsigma[k] = pTuningISOV2->gfsigma_para.lvl1_gfsigma[k];
355                 pISO->lvl2_gfsigma[k] = pTuningISOV2->gfsigma_para.lvl2_gfsigma[k];
356                 pISO->lvl3_gfsigma[k] = pTuningISOV2->gfsigma_para.lvl3_gfsigma[k];
357             }
358         }
359     }
360 
361 
362     //motion
363     pMotion = &pCalibdb->mode_cell[mode_idx].motion;
364     pMotion->enable = pTuningParaV2->enable;
365     for(int i = 0; i < MFNRV1_ISO_NUM; i++) {
366         pMotionISOV2 = &pCalibdbV2->TuningPara.Motion.Motion_ISO[i];
367         pMotion->iso[i] = pMotionISOV2->iso;
368         pMotion->sigmaHScale[i] = pMotionISOV2->sigmaHScale;
369         pMotion->sigmaLScale[i] = pMotionISOV2->sigmaLScale;
370         pMotion->lightClp[i] = pMotionISOV2->lightClp;
371         pMotion->uvWeight[i] = pMotionISOV2->uvWeight;
372         pMotion->mfnrSigmaScale[i] = pMotionISOV2->mfnrSigmaScale;
373         pMotion->yuvnrGainScale0[i] = pMotionISOV2->yuvnrGainScale0;
374         pMotion->yuvnrGainScale1[i] = pMotionISOV2->yuvnrGainScale1;
375         pMotion->yuvnrGainScale2[i] = pMotionISOV2->yuvnrGainScale2;
376         pMotion->frame_limit_y[i] = pMotionISOV2->frame_limit_y;
377         pMotion->frame_limit_uv[i] = pMotionISOV2->frame_limit_uv;
378     }
379 
380     //dynamic
381     pDynamic = &pCalibdb->mode_cell[mode_idx].dynamic;
382     pDynamicV2 = &pCalibdbV2->TuningPara.Dynamic;
383     pDynamic->enable = pDynamicV2->Enable;
384     pDynamic->lowth_iso = pDynamicV2->LowTh_iso;
385     pDynamic->lowth_time = pDynamicV2->LowTh_time;
386     pDynamic->highth_iso = pDynamicV2->HighTh_iso;
387     pDynamic->highth_time = pDynamicV2->HighTh_time;
388 
389     return 0;
390 
391 }
392 
393 
mfnrV1_calibdbV2_free(CalibDbV2_MFNR_t * pCalibdbV2)394 void mfnrV1_calibdbV2_free(CalibDbV2_MFNR_t *pCalibdbV2)
395 {
396     if(pCalibdbV2) {
397         if(pCalibdbV2->Version) {
398             free(pCalibdbV2->Version);
399         }
400 
401         if(pCalibdbV2->CalibPara.Setting) {
402             for(int i = 0; i < pCalibdbV2->CalibPara.Setting_len; i++) {
403                 if(pCalibdbV2->CalibPara.Setting[i].Calib_ISO) {
404                     if(pCalibdbV2->CalibPara.Setting[i].Calib_ISO) {
405                         free(pCalibdbV2->CalibPara.Setting[i].Calib_ISO);
406                     }
407                     if(pCalibdbV2->CalibPara.Setting[i].SNR_Mode) {
408                         free(pCalibdbV2->CalibPara.Setting[i].SNR_Mode);
409                     }
410                     if(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode) {
411                         free(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode);
412                     }
413                 }
414             }
415             free(pCalibdbV2->CalibPara.Setting);
416         }
417 
418 
419         if(pCalibdbV2->TuningPara.Setting) {
420             for(int i = 0; i < pCalibdbV2->TuningPara.Setting_len; i++) {
421                 if(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO) {
422                     if(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO) {
423                         free(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO);
424                     }
425                     if(pCalibdbV2->TuningPara.Setting[i].SNR_Mode) {
426                         free(pCalibdbV2->TuningPara.Setting[i].SNR_Mode);
427                     }
428                     if(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode) {
429                         free(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode);
430                     }
431                 }
432             }
433             free(pCalibdbV2->TuningPara.Setting);
434         }
435 
436         if(pCalibdbV2->TuningPara.Motion.Motion_ISO) {
437             free(pCalibdbV2->TuningPara.Motion.Motion_ISO);
438         }
439 
440         free(pCalibdbV2);
441     }
442 }
443 
444