1 #include "bayernr_xml2json_v1.h"
2
3 #define BAYERNRV1_SETTING_NUM (2)
4 #define BAYERNRV1_ISO_NUM (13)
5
bayernrV1_calibdb_to_calibdbV2(const CalibDb_BayerNr_2_t * pCalibdb,CalibDbV2_BayerNrV1_t * pCalibdbV2,int mode_idx)6 int bayernrV1_calibdb_to_calibdbV2(const CalibDb_BayerNr_2_t *pCalibdb, CalibDbV2_BayerNrV1_t *pCalibdbV2, int mode_idx)
7 {
8 CalibDbV2_BayerNrV1_Calib_t *pCalibParaV2 = NULL;
9 CalibDbV2_BayerNrV1_Tuning_t *pTuningParaV2 = NULL;
10 CalibDbV2_BayerNrV1_C_ISO_t *pCalibISOV2 = NULL;
11 CalibDbV2_BayerNrV1_T_ISO_t *pTuningISOV2 = NULL;
12 CalibDb_BayerNR_Params_t *pSetting = NULL;
13
14
15 if(pCalibdb == NULL) {
16 printf(" pCalibdb is NULL pointer\n");
17 return -1;
18 }
19
20 if(pCalibdbV2 == NULL) {
21 printf(" pCalibdbV2 is NULL pointer\n");
22 return -1;
23 }
24
25 if(pCalibdb->mode_num < mode_idx) {
26 printf(" old xml file have no %d mode cell \n", mode_idx);
27 return -1;
28 }
29
30
31 pCalibParaV2 = &pCalibdbV2->CalibPara;
32 pTuningParaV2 = &pCalibdbV2->TuningPara;
33
34 //malloc settting size
35 pCalibParaV2->Setting = (CalibDbV2_BayerNrV1_C_Set_t *)malloc(BAYERNRV1_SETTING_NUM * sizeof(CalibDbV2_BayerNrV1_C_Set_t));
36 memset(pCalibParaV2->Setting, 0x00, BAYERNRV1_SETTING_NUM * sizeof(CalibDbV2_BayerNrV1_C_Set_t));
37 pCalibParaV2->Setting_len = BAYERNRV1_SETTING_NUM;
38 pTuningParaV2->Setting = (CalibDbV2_BayerNrV1_T_Set_t *)malloc(BAYERNRV1_SETTING_NUM * sizeof(CalibDbV2_BayerNrV1_T_Set_t));
39 memset(pTuningParaV2->Setting, 0x00, BAYERNRV1_SETTING_NUM * sizeof(CalibDbV2_BayerNrV1_T_Set_t));
40 pTuningParaV2->Setting_len = BAYERNRV1_SETTING_NUM;
41
42 //malloc iso size
43 for(int i = 0; i < BAYERNRV1_SETTING_NUM; i++) {
44 pCalibParaV2->Setting[i].Calib_ISO = (CalibDbV2_BayerNrV1_C_ISO_t *)malloc(BAYERNRV1_ISO_NUM * sizeof(CalibDbV2_BayerNrV1_C_ISO_t));
45 memset(pCalibParaV2->Setting[i].Calib_ISO, 0x00, BAYERNRV1_ISO_NUM * sizeof(CalibDbV2_BayerNrV1_C_ISO_t));
46 pCalibParaV2->Setting[i].Calib_ISO_len = BAYERNRV1_ISO_NUM;
47 pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_BayerNrV1_T_ISO_t *)malloc(BAYERNRV1_ISO_NUM * sizeof(CalibDbV2_BayerNrV1_T_ISO_t));
48 memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, BAYERNRV1_ISO_NUM * sizeof(CalibDbV2_BayerNrV1_T_ISO_t));
49 pTuningParaV2->Setting[i].Tuning_ISO_len = BAYERNRV1_ISO_NUM;
50 }
51
52 //assign the value
53 pTuningParaV2->enable = pCalibdb->enable;
54 pCalibdbV2->Version = strdup(pCalibdb->version);
55
56 for(int i = 0; i < BAYERNRV1_SETTING_NUM; i++) {
57 pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
58 pCalibParaV2->Setting[i].SNR_Mode = strdup(pSetting->snr_mode);
59 pCalibParaV2->Setting[i].Sensor_Mode = strdup(pSetting->sensor_mode);
60 pTuningParaV2->Setting[i].SNR_Mode = strdup(pSetting->snr_mode);
61 pTuningParaV2->Setting[i].Sensor_Mode = strdup(pSetting->sensor_mode);
62
63 for(int j = 0; j < BAYERNRV1_ISO_NUM; j++) {
64 pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
65 pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
66
67 //calib
68 pCalibISOV2->iso = pSetting->iso[j];
69 for(int k = 0; k < 8; k++) {
70 pCalibISOV2->luLevelVal[k] = pSetting->luLevelVal[k];
71 pCalibISOV2->luRatio[k] = pSetting->luRatio[k][j];
72 }
73
74 //tuning
75 pTuningISOV2->iso = pSetting->iso[j];
76 pTuningISOV2->filtPara = pSetting->filtPara[j];
77 pTuningISOV2->gauss_en = pSetting->gauss_en;
78 pTuningISOV2->lamda = pSetting->lamda;
79 pTuningISOV2->fixW0 = pSetting->fixW[0][j];
80 pTuningISOV2->fixW1 = pSetting->fixW[1][j];
81 pTuningISOV2->fixW2 = pSetting->fixW[2][j];
82 pTuningISOV2->fixW3 = pSetting->fixW[3][j];
83 pTuningISOV2->RGainOff = pSetting->RGainOff;
84 pTuningISOV2->RGainFilp = pSetting->RGainFilp;
85 pTuningISOV2->BGainOff = pSetting->BGainOff;
86 pTuningISOV2->BGainFilp = pSetting->BGainFilp;
87
88
89 }
90 }
91
92 return 0;
93
94 }
95
96
97
bayernrV1_calibdbV2_to_calibdb(CalibDbV2_BayerNrV1_t * pCalibdbV2,CalibDb_BayerNr_2_t * pCalibdb,int mode_idx)98 int bayernrV1_calibdbV2_to_calibdb(CalibDbV2_BayerNrV1_t *pCalibdbV2, CalibDb_BayerNr_2_t *pCalibdb, int mode_idx)
99 {
100 CalibDbV2_BayerNrV1_Calib_t *pCalibParaV2 = NULL;
101 CalibDbV2_BayerNrV1_Tuning_t *pTuningParaV2 = NULL;
102 CalibDbV2_BayerNrV1_C_ISO_t *pCalibISOV2 = NULL;
103 CalibDbV2_BayerNrV1_T_ISO_t *pTuningISOV2 = NULL;
104 CalibDb_BayerNR_Params_t *pSetting = NULL;
105
106 if(pCalibdb == NULL) {
107 printf(" pCalibdb is NULL pointer\n");
108 return -1;
109 }
110
111 if(pCalibdbV2 == NULL) {
112 printf(" pCalibdbV2 is NULL pointer\n");
113 return -1;
114 }
115
116 if(pCalibdb->mode_num < mode_idx) {
117 printf(" old xml file have no %d mode cell \n", mode_idx);
118 return -1;
119 }
120
121
122 pCalibParaV2 = &pCalibdbV2->CalibPara;
123 pTuningParaV2 = &pCalibdbV2->TuningPara;
124
125
126 //assign the value
127 pCalibdb->enable = pTuningParaV2->enable;
128 strcpy(pCalibdb->version, pCalibdbV2->Version);
129 for(int i = 0; i < pTuningParaV2->Setting_len; i++) {
130 pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
131
132 strcpy( pSetting->snr_mode, pTuningParaV2->Setting[i].SNR_Mode);
133 strcpy(pSetting->sensor_mode, pTuningParaV2->Setting[i].Sensor_Mode);
134 for(int j = 0; j < BAYERNRV1_ISO_NUM; j++) {
135 pCalibISOV2 = &pCalibParaV2->Setting[i].Calib_ISO[j];
136 pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
137
138 //calib
139 pSetting->iso[j] = pCalibISOV2->iso;
140 for(int k = 0; k < 8; k++) {
141 pSetting->luLevelVal[k] = pCalibISOV2->luLevelVal[k];
142 pSetting->luRatio[k][j] = pCalibISOV2->luRatio[k];
143 }
144
145 //tuning
146 pSetting->iso[j] = pTuningISOV2->iso;
147 pSetting->filtPara[j] = pTuningISOV2->filtPara;
148 pSetting->gauss_en = pTuningISOV2->gauss_en;
149 pSetting->lamda = pTuningISOV2->lamda;
150 pSetting->fixW[0][j] = pTuningISOV2->fixW0;
151 pSetting->fixW[1][j] = pTuningISOV2->fixW1;
152 pSetting->fixW[2][j] = pTuningISOV2->fixW2;
153 pSetting->fixW[3][j] = pTuningISOV2->fixW3;
154 pSetting->RGainOff = pTuningISOV2->RGainOff;
155 pSetting->RGainFilp = pTuningISOV2->RGainFilp;
156 pSetting->BGainOff = pTuningISOV2->BGainOff;
157 pSetting->BGainFilp = pTuningISOV2->BGainFilp;
158
159
160 }
161 }
162
163 return 0;
164
165 }
166
167
bayernrV1_calibdbV2_free(CalibDbV2_BayerNrV1_t * pCalibdbV2)168 void bayernrV1_calibdbV2_free(CalibDbV2_BayerNrV1_t *pCalibdbV2)
169 {
170 if(pCalibdbV2 != NULL) {
171 if(pCalibdbV2->CalibPara.Setting != NULL) {
172 for(int i = 0; i < pCalibdbV2->CalibPara.Setting_len; i++) {
173 if(pCalibdbV2->CalibPara.Setting[i].Calib_ISO != NULL) {
174 free(pCalibdbV2->CalibPara.Setting[i].Calib_ISO );
175 }
176 if(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode != NULL) {
177 free(pCalibdbV2->CalibPara.Setting[i].Sensor_Mode);
178 }
179 if(pCalibdbV2->CalibPara.Setting[i].SNR_Mode != NULL) {
180 free(pCalibdbV2->CalibPara.Setting[i].SNR_Mode);
181 }
182 }
183 free(pCalibdbV2->CalibPara.Setting);
184 }
185
186 if(pCalibdbV2->TuningPara.Setting != NULL) {
187 for(int i = 0; i < pCalibdbV2->TuningPara.Setting_len; i++) {
188 if(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO != NULL) {
189 free(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO );
190 }
191 if(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode != NULL) {
192 free(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode);
193 }
194 if(pCalibdbV2->TuningPara.Setting[i].SNR_Mode != NULL) {
195 free(pCalibdbV2->TuningPara.Setting[i].SNR_Mode);
196 }
197 }
198 free(pCalibdbV2->TuningPara.Setting);
199 }
200
201 free(pCalibdbV2);
202 }
203
204 }
205
206