xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/iq_parser_v2/bayernr_xml2json_v1.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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