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