xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/iq_parser_v2/ynr_xml2json_v2.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "ynr_xml2json_v2.h"
2 #include "RkAiqCalibApi.h"
3 
4 
5 #define YNRV2_SETTING_NUM (2)
6 #define YNRV2_ISO_NUM   (13)
7 
ynrV2_calibdb_to_calibdbV2(struct list_head * pYnrList,CalibDbV2_YnrV2_t * pCalibdbV2,int mode_idx)8 int ynrV2_calibdb_to_calibdbV2(struct list_head* pYnrList,  CalibDbV2_YnrV2_t *pCalibdbV2, int mode_idx)
9 {
10 
11     CalibDbV2_YnrV2_Calib_t *pCalibParaV2 = NULL;
12     CalibDbV2_YnrV2_Tuning_t *pTuningParaV2 = NULL;
13     CalibDbV2_YnrV2_C_ISO_t *pCalibISOV2 = NULL;
14     CalibDbV2_YnrV2_T_ISO_t *pTuningISOV2 = NULL;
15 
16     if(pYnrList == NULL || pCalibdbV2 == NULL) {
17         printf(" pCalibdb is NULL pointer\n");
18         return -1;
19     }
20 
21     Calibdb_Ynr_V2_t* pYnrProfile = NULL;
22     CamCalibdbGetYnrV2ProfileByIdx(pYnrList, mode_idx, &pYnrProfile);
23     if(pYnrProfile == NULL) {
24         printf(" %s:%d bayernr can't get mode:%d para from calibdbv1\n",
25                __FUNCTION__,
26                __LINE__,
27                mode_idx);
28         return -1;
29     }
30 
31     pCalibParaV2 = &pCalibdbV2->CalibPara;
32     pTuningParaV2 = &pCalibdbV2->TuningPara;
33 
34     //malloc settting size
35     pCalibParaV2->Setting = (CalibDbV2_YnrV2_C_Set_t *)malloc(YNRV2_SETTING_NUM * sizeof(CalibDbV2_YnrV2_C_Set_t));
36     memset(pCalibParaV2->Setting,  0x00, YNRV2_SETTING_NUM * sizeof(CalibDbV2_YnrV2_C_Set_t));
37     pCalibParaV2->Setting_len = YNRV2_SETTING_NUM;
38     pTuningParaV2->Setting = (CalibDbV2_YnrV2_T_Set_t *)malloc(YNRV2_SETTING_NUM * sizeof(CalibDbV2_YnrV2_T_Set_t));
39     memset(pTuningParaV2->Setting, 0x00, YNRV2_SETTING_NUM * sizeof(CalibDbV2_YnrV2_T_Set_t));
40     pTuningParaV2->Setting_len = YNRV2_SETTING_NUM;
41 
42     //malloc iso size
43     for(int i = 0; i < YNRV2_SETTING_NUM; i++) {
44         pCalibParaV2->Setting[i].Calib_ISO =  (CalibDbV2_YnrV2_C_ISO_t *)malloc(YNRV2_ISO_NUM * sizeof(CalibDbV2_YnrV2_C_ISO_t));
45         memset(pCalibParaV2->Setting[i].Calib_ISO, 0x00, YNRV2_ISO_NUM * sizeof(CalibDbV2_YnrV2_C_ISO_t));
46         pCalibParaV2->Setting[i].Calib_ISO_len = YNRV2_ISO_NUM;
47         pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_YnrV2_T_ISO_t *)malloc(YNRV2_ISO_NUM * sizeof(CalibDbV2_YnrV2_T_ISO_t));
48         memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, YNRV2_ISO_NUM * sizeof(CalibDbV2_YnrV2_T_ISO_t));
49         pTuningParaV2->Setting[i].Tuning_ISO_len = YNRV2_ISO_NUM;
50     }
51 
52     //assign the value
53     pTuningParaV2->enable = pYnrProfile->enable;
54 
55     for(int i = 0; i < YNRV2_SETTING_NUM; i++) {
56         Calibdb_Ynr_params_V2_t *pYnrParamsV1 = NULL;
57         CamCalibdbGetYnrV2SettingByIdx(&pYnrProfile->listHead, i, &pYnrParamsV1);
58 
59         if(pYnrParamsV1 == NULL) {
60             printf("cnr can't get setting:%d from xml calibdb! \n", i);
61             break;
62         }
63 
64         pCalibParaV2->Setting[i].SNR_Mode = strdup(pYnrParamsV1->snr_mode);
65         pCalibParaV2->Setting[i].Sensor_Mode = strdup(pYnrParamsV1->sensor_mode);
66         pTuningParaV2->Setting[i].SNR_Mode = strdup(pYnrParamsV1->snr_mode);
67         pTuningParaV2->Setting[i].Sensor_Mode = strdup(pYnrParamsV1->sensor_mode);
68 
69         for(int j = 0; j < YNRV2_ISO_NUM; j++) {
70             pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
71             pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
72 
73             //calib para
74             pCalibISOV2->iso = pYnrParamsV1->iso[j];
75             for(int k = 0; k < 5; k++) {
76                 pCalibISOV2->sigma_curve[k] = pYnrParamsV1->sigmaCurve[j][k];
77             }
78             pCalibISOV2->ynr_ci_l = pYnrParamsV1->ciISO_V2[0][j];
79             pCalibISOV2->ynr_ci_h = pYnrParamsV1->ciISO_V2[1][j];
80 
81             //tuning para
82             pTuningISOV2->iso = pYnrParamsV1->iso[j];
83             pTuningISOV2->ynr_bft3x3_bypass = pYnrParamsV1->ynr_bft3x3_bypass_V2[j];
84             pTuningISOV2->ynr_lbft5x5_bypass = pYnrParamsV1->ynr_lbft5x5_bypass_V2[j];
85             pTuningISOV2->ynr_lgft3x3_bypass = pYnrParamsV1->ynr_lgft3x3_bypass_V2[j];
86             pTuningISOV2->ynr_flt1x1_bypass = pYnrParamsV1->ynr_flt1x1_bypass_V2[j];
87             pTuningISOV2->ynr_sft5x5_bypass = pYnrParamsV1->ynr_sft5x5_bypass_V2[j];
88 
89             for(int k = 0; k < 17; k++) {
90                 pTuningISOV2->rnr_strength[k] = pYnrParamsV1->ynr_rnr_strength_V2[j][k];
91             }
92 
93             pTuningISOV2->low_bf_0 = pYnrParamsV1->ynr_low_bf_V2[0][j];
94             pTuningISOV2->low_bf_1 = pYnrParamsV1->ynr_low_bf_V2[1][j];
95 
96             pTuningISOV2->low_thred_adj = pYnrParamsV1->ynr_low_thred_adj_V2[j];
97             pTuningISOV2->low_peak_supress = pYnrParamsV1->ynr_low_peak_supress_V2[j];
98             pTuningISOV2->low_edge_adj_thresh = pYnrParamsV1->ynr_low_edge_adj_thresh_V2[j];
99             pTuningISOV2->low_center_weight = pYnrParamsV1->ynr_low_center_weight_V2[j];
100 
101             pTuningISOV2->low_dist_adj = pYnrParamsV1->ynr_low_dist_adj_V2[j];
102             pTuningISOV2->low_weight = pYnrParamsV1->ynr_low_weight_V2[j];
103             pTuningISOV2->low_filt_strength_0 = pYnrParamsV1->ynr_low_filt_strength_V2[0][j];
104             pTuningISOV2->low_filt_strength_1 = pYnrParamsV1->ynr_low_filt_strength_V2[1][j];
105             pTuningISOV2->low_bi_weight = pYnrParamsV1->ynr_low_bi_weight_V2[j];
106 
107             pTuningISOV2->base_filter_weight_0 = pYnrParamsV1->ynr_base_filter_weight_V2[0][j];
108             pTuningISOV2->base_filter_weight_1 = pYnrParamsV1->ynr_base_filter_weight_V2[1][j];
109             pTuningISOV2->base_filter_weight_2 = pYnrParamsV1->ynr_base_filter_weight_V2[2][j];
110 
111             pTuningISOV2->high_thred_adj = pYnrParamsV1->ynr_high_thred_adj_V2[j];
112             pTuningISOV2->high_weight = pYnrParamsV1->ynr_high_weight_V2[j];
113             for(int k = 0; k < 8; k++) {
114                 pTuningISOV2->high_direction_weight[k] = pYnrParamsV1->ynr_direction_weight_V2[j][k];
115             }
116             pTuningISOV2->hi_min_adj = pYnrParamsV1->ynr_hi_min_adj_V2[j];
117             pTuningISOV2->hi_edge_thed = pYnrParamsV1->ynr_hi_edge_thed_V2[j];
118 
119         }
120     }
121 
122     return 0;
123 }
124 
125 
ynrV2_calibdbV2_to_calibdb(CalibDbV2_YnrV2_t * pCalibdbV2,struct list_head * pYnrList,int mode_idx)126 int ynrV2_calibdbV2_to_calibdb(CalibDbV2_YnrV2_t *pCalibdbV2, struct list_head* pYnrList, int mode_idx)
127 {
128 
129     CalibDbV2_YnrV2_Calib_t *pCalibParaV2 = NULL;
130     CalibDbV2_YnrV2_Tuning_t *pTuningParaV2 = NULL;
131     CalibDbV2_YnrV2_C_ISO_t *pCalibISOV2 = NULL;
132     CalibDbV2_YnrV2_T_ISO_t *pTuningISOV2 = NULL;
133 
134     if(pYnrList == NULL || pCalibdbV2 == NULL) {
135         printf(" pCalibdb is NULL pointer\n");
136         return -1;
137     }
138 
139 
140     pCalibParaV2 = &pCalibdbV2->CalibPara;
141     pTuningParaV2 = &pCalibdbV2->TuningPara;
142 
143 
144     Calibdb_Ynr_V2_t* pYnrProfile = NULL;
145     CamCalibdbGetYnrV2ProfileByIdx(pYnrList, mode_idx, &pYnrProfile);
146     if(pYnrProfile == NULL) {
147         printf(" %s:%d bayernr can't get mode:%d para from calibdbv1\n",
148                __FUNCTION__,
149                __LINE__,
150                mode_idx);
151         return -1;
152     }
153 
154 
155     //assign the value
156     pYnrProfile->enable = pTuningParaV2->enable;
157 
158     for(int i = 0; i < pTuningParaV2->Setting_len; i++) {
159         Calibdb_Ynr_params_V2_t *pYnrParamsV1 = NULL;
160         CamCalibdbGetYnrV2SettingByIdx(&pYnrProfile->listHead, i, &pYnrParamsV1);
161 
162         if(pYnrParamsV1 == NULL) {
163             printf("cnr can't get setting:%d from xml calibdb! \n", i);
164             break;
165         }
166 
167         strcpy(pYnrParamsV1->snr_mode, pTuningParaV2->Setting[i].SNR_Mode);
168         strcpy(pYnrParamsV1->sensor_mode, pTuningParaV2->Setting[i].Sensor_Mode);
169 
170         for(int j = 0; j < YNRV2_ISO_NUM; j++) {
171             pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
172             pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
173 
174             //calib para
175             pYnrParamsV1->iso[j] = pCalibISOV2->iso;
176             for(int k = 0; k < 5; k++) {
177                 pYnrParamsV1->sigmaCurve[j][k] = pCalibISOV2->sigma_curve[k];
178             }
179             pYnrParamsV1->ciISO_V2[0][j] = pCalibISOV2->ynr_ci_l;
180             pYnrParamsV1->ciISO_V2[1][j] = pCalibISOV2->ynr_ci_h;
181 
182             //tuning para
183             pYnrParamsV1->iso[j] = pTuningISOV2->iso;
184             pYnrParamsV1->ynr_bft3x3_bypass_V2[j] = pTuningISOV2->ynr_bft3x3_bypass;
185             pYnrParamsV1->ynr_lbft5x5_bypass_V2[j] = pTuningISOV2->ynr_lbft5x5_bypass;
186             pYnrParamsV1->ynr_lgft3x3_bypass_V2[j] = pTuningISOV2->ynr_lgft3x3_bypass;
187             pYnrParamsV1->ynr_flt1x1_bypass_V2[j] = pTuningISOV2->ynr_flt1x1_bypass;
188             pYnrParamsV1->ynr_sft5x5_bypass_V2[j] = pTuningISOV2->ynr_sft5x5_bypass;
189 
190             for(int k = 0; k < 17; k++) {
191                 pYnrParamsV1->ynr_rnr_strength_V2[j][k] = pTuningISOV2->rnr_strength[k];
192             }
193 
194             pYnrParamsV1->ynr_low_bf_V2[0][j] = pTuningISOV2->low_bf_0;
195             pYnrParamsV1->ynr_low_bf_V2[1][j] = pTuningISOV2->low_bf_1;
196 
197             pYnrParamsV1->ynr_low_thred_adj_V2[j] = pTuningISOV2->low_thred_adj;
198             pYnrParamsV1->ynr_low_peak_supress_V2[j] = pTuningISOV2->low_peak_supress;
199             pYnrParamsV1->ynr_low_edge_adj_thresh_V2[j] = pTuningISOV2->low_edge_adj_thresh;
200             pYnrParamsV1->ynr_low_center_weight_V2[j] = pTuningISOV2->low_center_weight;
201 
202             pYnrParamsV1->ynr_low_dist_adj_V2[j] = pTuningISOV2->low_dist_adj;
203             pYnrParamsV1->ynr_low_weight_V2[j] = pTuningISOV2->low_weight;
204             pYnrParamsV1->ynr_low_filt_strength_V2[0][j] = pTuningISOV2->low_filt_strength_0;
205             pYnrParamsV1->ynr_low_filt_strength_V2[1][j] = pTuningISOV2->low_filt_strength_1;
206             pYnrParamsV1->ynr_low_bi_weight_V2[j] = pTuningISOV2->low_bi_weight;
207 
208             pYnrParamsV1->ynr_base_filter_weight_V2[0][j] = pTuningISOV2->base_filter_weight_0;
209             pYnrParamsV1->ynr_base_filter_weight_V2[1][j] = pTuningISOV2->base_filter_weight_1;
210             pYnrParamsV1->ynr_base_filter_weight_V2[2][j] = pTuningISOV2->base_filter_weight_2;
211 
212             pYnrParamsV1->ynr_high_thred_adj_V2[j] = pTuningISOV2->high_thred_adj;
213             pYnrParamsV1->ynr_high_weight_V2[j] = pTuningISOV2->high_weight;
214             for(int k = 0; k < 8; k++) {
215                 pYnrParamsV1->ynr_direction_weight_V2[j][k] = pTuningISOV2->high_direction_weight[k];
216             }
217             pYnrParamsV1->ynr_hi_min_adj_V2[j] = pTuningISOV2->hi_min_adj;
218             pYnrParamsV1->ynr_hi_edge_thed_V2[j] = pTuningISOV2->hi_edge_thed;
219 
220         }
221     }
222 
223     return 0;
224 
225 }
226 
227 
ynrV2_calibdbV2_free(CalibDbV2_YnrV2_t * pCalibdbV2)228 void ynrV2_calibdbV2_free(CalibDbV2_YnrV2_t *pCalibdbV2)
229 {
230     if(pCalibdbV2) {
231         if(pCalibdbV2->Version) {
232             free(pCalibdbV2->Version);
233         }
234 
235         if(pCalibdbV2->CalibPara.Setting) {
236             for(int i = 0; i < pCalibdbV2->CalibPara.Setting_len; i++) {
237                 if(pCalibdbV2->CalibPara.Setting[i].SNR_Mode) {
238                     free(pCalibdbV2->CalibPara.Setting[i].SNR_Mode);
239                 }
240                 if(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode) {
241                     free(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode);
242                 }
243                 if(pCalibdbV2->CalibPara.Setting[i].Calib_ISO) {
244                     free(pCalibdbV2->CalibPara.Setting[i].Calib_ISO);
245                 }
246             }
247 
248             free(pCalibdbV2->CalibPara.Setting);
249         }
250 
251         if(pCalibdbV2->TuningPara.Setting) {
252             for(int i = 0; i < pCalibdbV2->TuningPara.Setting_len; i++) {
253                 if(pCalibdbV2->TuningPara.Setting[i].SNR_Mode) {
254                     free(pCalibdbV2->TuningPara.Setting[i].SNR_Mode);
255                 }
256                 if(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode) {
257                     free(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode);
258                 }
259                 if(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO) {
260                     free(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO);
261                 }
262             }
263 
264             free(pCalibdbV2->TuningPara.Setting);
265         }
266 
267         free(pCalibdbV2);
268     }
269 }
270 
271