1 #include "bayernr_xml2json_v2.h"
2 #include "RkAiqCalibApi.h"
3
4
5 #define BAYERNRV2_SETTING_NUM (2)
6 #define BAYERNRV2_ISO_NUM (13)
7
bayernrV2_calibdb_to_calibdbV2(struct list_head * pBayernrList,CalibDbV2_BayerNrV2_t * pCalibdbV2,int mode_idx)8 int bayernrV2_calibdb_to_calibdbV2(struct list_head *pBayernrList, CalibDbV2_BayerNrV2_t *pCalibdbV2, int mode_idx)
9 {
10 CalibDbV2_BayerNrV2_Calib_t *pCalibParaV2 = NULL;
11 CalibDbV2_BayerNrV2_2d_t *p2dV2 = NULL;
12 CalibDbV2_BayerNrV2_3d_t *p3dV2 = NULL;
13 CalibDbV2_BayerNrV2_C_ISO_t *pCalibISOV2 = NULL;
14 CalibDbV2_BayerNrV2_2d_ISO_t *p2dISOV2 = NULL;
15 CalibDbV2_BayerNrV2_3d_ISO_t *p3dISOV2 = NULL;
16
17
18 if(pBayernrList == NULL || pCalibdbV2 == NULL) {
19 printf(" pCalibdb is NULL pointer\n");
20 return -1;
21 }
22
23 CalibDb_Bayernr_V2_t* pBayenrProfile = NULL;
24 CamCalibdbGetBayernrV2ProfileByIdx(pBayernrList, mode_idx, &pBayenrProfile);
25 if(pBayenrProfile == NULL) {
26 printf(" %s:%d bayernr can't get mode:%d para from calibdbv1\n",
27 __FUNCTION__,
28 __LINE__,
29 mode_idx);
30 return -1;
31 }
32
33 pCalibParaV2 = &pCalibdbV2->CalibPara;
34 p2dV2 = &pCalibdbV2->Bayernr2D;
35 p3dV2 = &pCalibdbV2->Bayernr3D;
36
37 //malloc settting size
38 pCalibParaV2->Setting = (CalibDbV2_BayerNrV2_C_Set_t *)malloc(BAYERNRV2_SETTING_NUM * sizeof(CalibDbV2_BayerNrV2_C_Set_t));
39 memset(pCalibParaV2->Setting, 0x00, BAYERNRV2_SETTING_NUM * sizeof(CalibDbV2_BayerNrV2_C_Set_t));
40 pCalibParaV2->Setting_len = BAYERNRV2_SETTING_NUM;
41 p2dV2->Setting = (CalibDbV2_BayerNrV2_2d_Set_t *)malloc(BAYERNRV2_SETTING_NUM * sizeof(CalibDbV2_BayerNrV2_2d_Set_t));
42 memset(p2dV2->Setting, 0x00, BAYERNRV2_SETTING_NUM * sizeof(CalibDbV2_BayerNrV2_2d_Set_t));
43 p2dV2->Setting_len = BAYERNRV2_SETTING_NUM;
44 p3dV2->Setting = (CalibDbV2_BayerNrV2_3d_Set_t *)malloc(BAYERNRV2_SETTING_NUM * sizeof(CalibDbV2_BayerNrV2_3d_Set_t));
45 memset(p3dV2->Setting, 0x00, BAYERNRV2_SETTING_NUM * sizeof(CalibDbV2_BayerNrV2_3d_Set_t));
46 p3dV2->Setting_len = BAYERNRV2_SETTING_NUM;
47
48 //malloc iso size
49 for(int i = 0; i < BAYERNRV2_SETTING_NUM; i++) {
50 pCalibParaV2->Setting[i].Calib_ISO = (CalibDbV2_BayerNrV2_CalibPara_Setting_ISO_t *)malloc(BAYERNRV2_ISO_NUM * sizeof(CalibDbV2_BayerNrV2_CalibPara_Setting_ISO_t));
51 memset(pCalibParaV2->Setting[i].Calib_ISO, 0x00, BAYERNRV2_ISO_NUM * sizeof(CalibDbV2_BayerNrV2_CalibPara_Setting_ISO_t));
52 pCalibParaV2->Setting[i].Calib_ISO_len = BAYERNRV2_ISO_NUM;
53
54 p2dV2->Setting[i].Tuning_ISO = (CalibDbV2_BayerNrV2_Bayernr2d_Setting_ISO_t *)malloc(BAYERNRV2_ISO_NUM * sizeof(CalibDbV2_BayerNrV2_Bayernr2d_Setting_ISO_t));
55 memset(p2dV2->Setting[i].Tuning_ISO, 0x00, BAYERNRV2_ISO_NUM * sizeof(CalibDbV2_BayerNrV2_Bayernr2d_Setting_ISO_t));
56 p2dV2->Setting[i].Tuning_ISO_len = BAYERNRV2_ISO_NUM;
57
58 p3dV2->Setting[i].Tuning_ISO = (CalibDbV2_BayerNrV2_Bayernr3d_Setting_ISO_t *)malloc(BAYERNRV2_ISO_NUM * sizeof(CalibDbV2_BayerNrV2_Bayernr3d_Setting_ISO_t));
59 memset(p3dV2->Setting[i].Tuning_ISO, 0x00, BAYERNRV2_ISO_NUM * sizeof(CalibDbV2_BayerNrV2_Bayernr3d_Setting_ISO_t));
60 p3dV2->Setting[i].Tuning_ISO_len = BAYERNRV2_ISO_NUM;
61 }
62
63 //assign the value
64 p2dV2->enable = pBayenrProfile->st2DParams.bayernrv2_2dnr_enable;
65 p3dV2->enable = pBayenrProfile->st3DParams.bayernrv2_tnr_enable;
66
67 for(int i = 0; i < BAYERNRV2_SETTING_NUM; i++) {
68 Calibdb_Bayernr_2Dparams_V2_t *p2dParamCalibV1 = NULL;
69 CamCalibdbGetBayernrV2Setting2DByIdx(&pBayenrProfile->st2DParams.listHead, i, &p2dParamCalibV1);
70 CalibDb_Bayernr_3DParams_V2_t *p3dParamCalibV1 = NULL;
71 CamCalibdbGetBayernrV2Setting3DByIdx(&pBayenrProfile->st3DParams.listHead, i, &p3dParamCalibV1);
72
73 if(p2dParamCalibV1 == NULL || p3dParamCalibV1 == NULL) {
74 printf("bayernr can't get setting:%d from xml calibdb! \n", i);
75 break;
76 }
77
78 pCalibParaV2->Setting[i].SNR_Mode = strdup(p2dParamCalibV1->snr_mode);
79 pCalibParaV2->Setting[i].Sensor_Mode = strdup(p2dParamCalibV1->sensor_mode);
80 p2dV2->Setting[i].SNR_Mode = strdup(p2dParamCalibV1->snr_mode);
81 p2dV2->Setting[i].Sensor_Mode = strdup(p2dParamCalibV1->sensor_mode);
82 p3dV2->Setting[i].SNR_Mode = strdup(p3dParamCalibV1->snr_mode);
83 p3dV2->Setting[i].Sensor_Mode = strdup(p3dParamCalibV1->sensor_mode);
84
85 for(int j = 0; j < BAYERNRV2_ISO_NUM; j++) {
86 pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
87 p2dISOV2 = &p2dV2->Setting[i].Tuning_ISO[j];
88 p3dISOV2 = &p3dV2->Setting[i].Tuning_ISO[j];
89
90 //calib
91 pCalibISOV2->iso = p2dParamCalibV1->iso[j];
92 for(int k = 0; k < 16; k++) {
93 pCalibISOV2->lumapoint[k] = p2dParamCalibV1->bayernrv2_filter_lumapoint_r[k];
94 pCalibISOV2->sigma[k] = p2dParamCalibV1->bayernrv2_filter_sigma_r[j][k];
95 }
96
97 //2d
98 p2dISOV2->iso = p2dParamCalibV1->iso[j];
99 p2dISOV2->filter_strength = p2dParamCalibV1->bayernrv2_filter_strength_r[j];
100 p2dISOV2->gauss_guide = p2dParamCalibV1->bayernrv2_gauss_guide_r[j];
101 p2dISOV2->edgesofts = p2dParamCalibV1->bayernrv2_filter_edgesofts_r[j];
102 p2dISOV2->ratio = p2dParamCalibV1->bayernrv2_filter_soft_threshold_ratio_r[j];
103 p2dISOV2->weight = p2dParamCalibV1->bayernrv2_filter_out_wgt_r[j];
104
105 //3d
106 p3dISOV2->iso = p3dParamCalibV1->iso[j];
107 p3dISOV2->filter_strength = p3dParamCalibV1->bayernrv2_tnr_filter_strength_r[j];
108 p3dISOV2->sp_filter_strength = p3dParamCalibV1->bayernrv2_tnr_sp_filter_strength_r[j];
109 p3dISOV2->lo_clipwgt = p3dParamCalibV1->bayernrv2_tnr_lo_clipwgt_r[j];
110 p3dISOV2->hi_clipwgt = p3dParamCalibV1->bayernrv2_tnr_hi_clipwgt_r[j];
111 p3dISOV2->softwgt = p3dParamCalibV1->bayernrv2_tnr_softwgt_r[j];
112
113
114 }
115 }
116
117 return 0;
118
119 }
120
121
122
bayernrV2_calibdbV2_to_calibdb(CalibDbV2_BayerNrV2_t * pCalibdbV2,struct list_head * pBayernrList,int mode_idx)123 int bayernrV2_calibdbV2_to_calibdb(CalibDbV2_BayerNrV2_t *pCalibdbV2, struct list_head *pBayernrList, int mode_idx)
124 {
125 CalibDbV2_BayerNrV2_Calib_t *pCalibParaV2 = NULL;
126 CalibDbV2_BayerNrV2_2d_t *p2dV2 = NULL;
127 CalibDbV2_BayerNrV2_3d_t *p3dV2 = NULL;
128 CalibDbV2_BayerNrV2_C_ISO_t *pCalibISOV2 = NULL;
129 CalibDbV2_BayerNrV2_2d_ISO_t *p2dISOV2 = NULL;
130 CalibDbV2_BayerNrV2_3d_ISO_t *p3dISOV2 = NULL;
131
132 CalibDb_Bayernr_V2_t* pBayenrProfile = NULL;
133 Calibdb_Bayernr_2Dparams_V2_t *p2dParamCalibV1 = NULL;
134 CalibDb_Bayernr_3DParams_V2_t *p3dParamCalibV1 = NULL;
135
136
137 if(pBayernrList == NULL || pCalibdbV2 == NULL) {
138 printf(" pCalibdb is NULL pointer\n");
139 return -1;
140 }
141
142 CamCalibdbGetBayernrV2ProfileByIdx(pBayernrList, mode_idx, &pBayenrProfile);
143 if(pBayenrProfile == NULL) {
144 printf(" bayernr can't get mode:%d para from calibdbv1\n", mode_idx);
145 return -1;
146 }
147
148 pCalibParaV2 = &pCalibdbV2->CalibPara;
149 p2dV2 = &pCalibdbV2->Bayernr2D;
150 p3dV2 = &pCalibdbV2->Bayernr3D;
151
152
153 //2d assign the value
154 for(int i = 0; i < p2dV2->Setting_len; i++) {
155 p2dParamCalibV1 = NULL;
156 CamCalibdbGetBayernrV2Setting2DByIdx(&pBayenrProfile->st2DParams.listHead, i, &p2dParamCalibV1);
157
158 if(p2dParamCalibV1 == NULL) {
159 printf("bayernr can't get setting:%d from xml calibdb! \n", i);
160 break;
161 }
162
163 strcpy(p2dParamCalibV1->snr_mode, p2dV2->Setting[i].SNR_Mode);
164 strcpy(p2dParamCalibV1->sensor_mode, p2dV2->Setting[i].Sensor_Mode);
165
166 for(int j = 0; j < BAYERNRV2_ISO_NUM && i < p3dV2->Setting[i].Tuning_ISO_len; j++) {
167 pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
168 p2dISOV2 = &p2dV2->Setting[i].Tuning_ISO[j];
169
170 //calib
171 p2dParamCalibV1->iso[j] = pCalibISOV2->iso;
172 for(int k = 0; k < 16; k++) {
173 p2dParamCalibV1->bayernrv2_filter_lumapoint_r[k] = pCalibISOV2->lumapoint[k];
174 p2dParamCalibV1->bayernrv2_filter_sigma_r[j][k] = pCalibISOV2->sigma[k];
175 }
176
177 //2d
178 p2dParamCalibV1->iso[j] = p2dISOV2->iso;
179 p2dParamCalibV1->bayernrv2_filter_strength_r[j] = p2dISOV2->filter_strength;
180 p2dParamCalibV1->bayernrv2_gauss_guide_r[j] = p2dISOV2->gauss_guide;
181 p2dParamCalibV1->bayernrv2_filter_edgesofts_r[j] = p2dISOV2->edgesofts;
182 p2dParamCalibV1->bayernrv2_filter_soft_threshold_ratio_r[j] = p2dISOV2->ratio;
183 p2dParamCalibV1->bayernrv2_filter_out_wgt_r[j] = p2dISOV2->weight;
184
185 }
186 }
187
188 //3d
189 for(int i = 0; i < p3dV2->Setting_len; i++) {
190 p3dParamCalibV1 = NULL;
191 CamCalibdbGetBayernrV2Setting3DByIdx(&pBayenrProfile->st3DParams.listHead, i, &p3dParamCalibV1);
192
193 if(p3dParamCalibV1 == NULL) {
194 printf("bayernr can't get setting:%d from xml calibdb! \n", i);
195 break;
196 }
197
198 strcpy(p3dParamCalibV1->snr_mode, p3dV2->Setting[i].SNR_Mode);
199 strcpy(p3dParamCalibV1->sensor_mode, p3dV2->Setting[i].Sensor_Mode);
200
201 for(int j = 0; j < BAYERNRV2_ISO_NUM && i < p3dV2->Setting[i].Tuning_ISO_len; j++) {
202 pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
203 p3dISOV2 = &p3dV2->Setting[i].Tuning_ISO[j];
204
205 //calib
206 for(int k = 0; k < 16; k++) {
207 p3dParamCalibV1->bayernrv2_lumapoint_r[k] = pCalibISOV2->lumapoint[k];
208 p3dParamCalibV1->bayernrv2_sigma_r[j][k] = pCalibISOV2->sigma[k];
209 }
210
211 //3d
212 p3dParamCalibV1->iso[j] = p3dISOV2->iso;
213 p3dParamCalibV1->bayernrv2_tnr_filter_strength_r[j] = p3dISOV2->filter_strength;
214 p3dParamCalibV1->bayernrv2_tnr_sp_filter_strength_r[j] = p3dISOV2->sp_filter_strength;
215 p3dParamCalibV1->bayernrv2_tnr_lo_clipwgt_r[j] = p3dISOV2->lo_clipwgt;
216 p3dParamCalibV1->bayernrv2_tnr_hi_clipwgt_r[j] = p3dISOV2->hi_clipwgt;
217 p3dParamCalibV1->bayernrv2_tnr_softwgt_r[j] = p3dISOV2->softwgt;
218
219 }
220 }
221 return 0;
222
223 }
224
225
bayernrV2_calibdbV2_free(CalibDbV2_BayerNrV2_t * pCalibdbV2)226 void bayernrV2_calibdbV2_free(CalibDbV2_BayerNrV2_t *pCalibdbV2)
227 {
228 if(pCalibdbV2 != NULL) {
229 if(pCalibdbV2->CalibPara.Setting != NULL) {
230 for(int i = 0; i < pCalibdbV2->CalibPara.Setting_len; i++) {
231 if(pCalibdbV2->CalibPara.Setting[i].Calib_ISO != NULL) {
232 free(pCalibdbV2->CalibPara.Setting[i].Calib_ISO );
233 }
234 if(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode != NULL) {
235 free(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode);
236 }
237 if(pCalibdbV2->CalibPara.Setting[i].SNR_Mode != NULL) {
238 free(pCalibdbV2->CalibPara.Setting[i].SNR_Mode);
239 }
240 }
241 free(pCalibdbV2->CalibPara.Setting);
242 }
243
244 if(pCalibdbV2->Bayernr2D.Setting != NULL) {
245 for(int i = 0; i < pCalibdbV2->Bayernr2D.Setting_len; i++) {
246 if(pCalibdbV2->Bayernr2D.Setting[i].Tuning_ISO != NULL) {
247 free(pCalibdbV2->Bayernr2D.Setting[i].Tuning_ISO );
248 }
249 if(pCalibdbV2->Bayernr2D.Setting[i].Sensor_Mode != NULL) {
250 free(pCalibdbV2->Bayernr2D.Setting[i].Sensor_Mode);
251 }
252 if(pCalibdbV2->Bayernr2D.Setting[i].SNR_Mode != NULL) {
253 free(pCalibdbV2->Bayernr2D.Setting[i].SNR_Mode);
254 }
255 }
256 free(pCalibdbV2->Bayernr2D.Setting);
257 }
258
259 if(pCalibdbV2->Bayernr3D.Setting != NULL) {
260 for(int i = 0; i < pCalibdbV2->Bayernr3D.Setting_len; i++) {
261 if(pCalibdbV2->Bayernr3D.Setting[i].Tuning_ISO != NULL) {
262 free(pCalibdbV2->Bayernr3D.Setting[i].Tuning_ISO );
263 }
264 if(pCalibdbV2->Bayernr3D.Setting[i].Sensor_Mode != NULL) {
265 free(pCalibdbV2->Bayernr3D.Setting[i].Sensor_Mode);
266 }
267 if(pCalibdbV2->Bayernr3D.Setting[i].SNR_Mode != NULL) {
268 free(pCalibdbV2->Bayernr3D.Setting[i].SNR_Mode);
269 }
270 }
271 free(pCalibdbV2->Bayernr3D.Setting);
272 }
273
274 free(pCalibdbV2);
275 }
276
277 }
278
279