xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/iq_parser_v2/sharp_xml2json_v1.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "sharp_xml2json_v1.h"
2 
3 #define SHARPV1_SETTING_NUM (2)
4 #define SHARPV1_ISO_NUM (13)
5 
sharpV1_calibdb_to_calibdbV2(const CalibDb_Sharp_2_t * pCalibdb,CalibDbV2_SharpV1_t * pCalibdbV2,int mode_idx)6 int sharpV1_calibdb_to_calibdbV2(const CalibDb_Sharp_2_t *pCalibdb,   CalibDbV2_SharpV1_t *pCalibdbV2,  int mode_idx)
7 {
8     CalibDbV2_SharpV1_Tuning_t *pTuningParaV2 = NULL;
9     CalibDbV2_SharpV1_T_ISO_t *pTuningISOV2 = NULL;
10     CalibDbV2_SharpV1_Luma_t *pLumaParaV2 = NULL;
11     CalibDbV2_SharpV1_Kernel_t *pKernelCoeffV2 = NULL;
12     CalibDb_Sharp_Setting_t *pSetting = NULL;
13     struct CalibDb_Sharp_ISO_s  *pISO = NULL;
14 
15     if(pCalibdb == NULL || pCalibdbV2 == NULL) {
16         printf(" pCalibdb is NULL pointer\n");
17         return -1;
18     }
19 
20     if(pCalibdb->mode_num < mode_idx) {
21         printf(" old xml file have no %d mode cell \n", mode_idx);
22         return -1;
23     }
24 
25     pTuningParaV2 = &pCalibdbV2->TuningPara;
26 
27     //malloc settting size
28     pTuningParaV2->Setting = (CalibDbV2_SharpV1_T_Set_t *)malloc(SHARPV1_SETTING_NUM * sizeof(CalibDbV2_SharpV1_T_Set_t));
29     memset(pTuningParaV2->Setting, 0x00, SHARPV1_SETTING_NUM * sizeof(CalibDbV2_SharpV1_T_Set_t));
30     pTuningParaV2->Setting_len = SHARPV1_SETTING_NUM;
31 
32     //malloc iso size
33     for(int i = 0; i < SHARPV1_SETTING_NUM; i++) {
34         pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_SharpV1_T_ISO_t *)malloc(SHARPV1_ISO_NUM * sizeof(CalibDbV2_SharpV1_T_ISO_t));
35         memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, SHARPV1_ISO_NUM * sizeof(CalibDbV2_SharpV1_T_ISO_t));
36         pTuningParaV2->Setting[i].Tuning_ISO_len = SHARPV1_ISO_NUM;
37     }
38 
39     //assign the value
40     pCalibdbV2->Version = strdup(pCalibdb->version);
41     pTuningParaV2->enable = pCalibdb->enable;
42 
43     for(int i = 0; i < SHARPV1_SETTING_NUM; i++) {
44         pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
45 
46         pTuningParaV2->Setting[i].SNR_Mode = strdup(pSetting->snr_mode);
47         pTuningParaV2->Setting[i].Sensor_Mode = strdup(pSetting->sensor_mode);
48 
49         for(int j = 0; j < SHARPV1_ISO_NUM; j++) {
50             pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
51             pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
52             pISO = &pSetting->sharp_iso[j];
53 
54             pTuningISOV2->iso = pISO->iso;
55             pTuningISOV2->hratio = pISO->hratio;
56             pTuningISOV2->lratio = pISO->lratio;
57             pTuningISOV2->mf_sharp_ratio = pISO->mf_sharp_ratio;
58             pTuningISOV2->hf_sharp_ratio = pISO->hf_sharp_ratio;
59 
60             pTuningISOV2->pbf_gain = pISO->pbf_gain;
61             pTuningISOV2->pbf_ratio = pISO->pbf_ratio;
62             pTuningISOV2->pbf_add = pISO->pbf_add;
63 
64             pTuningISOV2->mbf_gain = pISO->mbf_gain;
65             pTuningISOV2->mbf_add = pISO->mbf_add;
66 
67             pTuningISOV2->hbf_gain = pISO->hbf_gain;
68             pTuningISOV2->hbf_ratio = pISO->hbf_ratio;
69             pTuningISOV2->hbf_add = pISO->hbf_add;
70 
71             pTuningISOV2->local_sharp_strength = pISO->local_sharp_strength;
72 
73             pTuningISOV2->pbf_coeff_percent = pISO->pbf_coeff_percent;
74             pTuningISOV2->rf_m_coeff_percent = pISO->rf_m_coeff_percent;
75             pTuningISOV2->rf_h_coeff_percent = pISO->rf_h_coeff_percent;
76             pTuningISOV2->hbf_coeff_percent = pISO->hbf_coeff_percent;
77 
78             pLumaParaV2 = &pTuningISOV2->luma_para;
79             for(int k = 0; k < 8; k++) {
80                 pLumaParaV2->luma_point[k] = pCalibdb->luma_point[k];
81                 pLumaParaV2->luma_sigma[k] = pISO->luma_sigma[k];
82                 pLumaParaV2->mf_clip_pos[k] = pISO->mf_clip_pos[k];
83                 pLumaParaV2->mf_clip_neg[k] = pISO->mf_clip_neg[k];
84                 pLumaParaV2->hf_clip[k] = pISO->hf_clip[k];
85             }
86         }
87     }
88 
89     pKernelCoeffV2 = &pTuningParaV2->kernel_coeff;
90     memcpy(pKernelCoeffV2->gauss_luma_coeff, pCalibdb->mode_cell[mode_idx].gauss_luma_coeff, sizeof(pKernelCoeffV2->gauss_luma_coeff));
91     memcpy(pKernelCoeffV2->pbf_coeff_l, pCalibdb->mode_cell[mode_idx].pbf_coeff_l, sizeof(pKernelCoeffV2->pbf_coeff_l));
92     memcpy(pKernelCoeffV2->pbf_coeff_h, pCalibdb->mode_cell[mode_idx].pbf_coeff_h, sizeof(pKernelCoeffV2->pbf_coeff_h));
93     memcpy(pKernelCoeffV2->rf_m_coeff_l, pCalibdb->mode_cell[mode_idx].rf_m_coeff_l, sizeof(pKernelCoeffV2->rf_m_coeff_l));
94     memcpy(pKernelCoeffV2->rf_m_coeff_h, pCalibdb->mode_cell[mode_idx].rf_m_coeff_h, sizeof(pKernelCoeffV2->rf_m_coeff_h));
95     memcpy(pKernelCoeffV2->rf_h_coeff_l, pCalibdb->mode_cell[mode_idx].rf_h_coeff_l, sizeof(pKernelCoeffV2->rf_h_coeff_l));
96     memcpy(pKernelCoeffV2->rf_h_coeff_h, pCalibdb->mode_cell[mode_idx].rf_h_coeff_h, sizeof(pKernelCoeffV2->rf_h_coeff_h));
97     memcpy(pKernelCoeffV2->hbf_coeff_l, pCalibdb->mode_cell[mode_idx].hbf_coeff_l, sizeof(pKernelCoeffV2->hbf_coeff_l));
98     memcpy(pKernelCoeffV2->hbf_coeff_h, pCalibdb->mode_cell[mode_idx].hbf_coeff_h, sizeof(pKernelCoeffV2->hbf_coeff_h));
99     memcpy(pKernelCoeffV2->mbf_coeff, pCalibdb->mode_cell[mode_idx].mbf_coeff, sizeof(pKernelCoeffV2->mbf_coeff));
100 
101     return 0;
102 }
103 
104 
sharpV1_calibdbV2_to_calibdb(CalibDbV2_SharpV1_t * pCalibdbV2,CalibDb_Sharp_2_t * pCalibdb,int mode_idx)105 int sharpV1_calibdbV2_to_calibdb(CalibDbV2_SharpV1_t *pCalibdbV2, CalibDb_Sharp_2_t *pCalibdb, int mode_idx)
106 {
107     CalibDbV2_SharpV1_Tuning_t *pTuningParaV2 = NULL;
108     CalibDbV2_SharpV1_T_ISO_t *pTuningISOV2 = NULL;
109     CalibDbV2_SharpV1_Luma_t *pLumaParaV2 = NULL;
110     CalibDbV2_SharpV1_Kernel_t *pKernelCoeffV2 = NULL;
111     CalibDb_Sharp_Setting_t *pSetting = NULL;
112     struct CalibDb_Sharp_ISO_s  *pISO = NULL;
113 
114     if(pCalibdb == NULL || pCalibdbV2 == NULL) {
115         printf(" pCalibdb is NULL pointer\n");
116         return -1;
117     }
118 
119     if(pCalibdb->mode_num < mode_idx) {
120         printf(" old xml file have no %d mode cell \n", mode_idx);
121         return -1;
122     }
123 
124     pTuningParaV2 = &pCalibdbV2->TuningPara;
125 
126     //assign the value
127     strcpy(pCalibdb->version, pCalibdbV2->Version);
128     pCalibdb->enable = pTuningParaV2->enable;
129 
130     for(int i = 0; i < SHARPV1_SETTING_NUM; i++) {
131         pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
132 
133         strcpy(pSetting->snr_mode, pTuningParaV2->Setting[i].SNR_Mode);
134         strcpy(pSetting->sensor_mode, pTuningParaV2->Setting[i].Sensor_Mode);
135 
136         for(int j = 0; j < SHARPV1_ISO_NUM; j++) {
137             pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
138             pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
139             pISO = &pSetting->sharp_iso[j];
140 
141             pISO->iso = pTuningISOV2->iso;
142             pISO->hratio = pTuningISOV2->hratio;
143             pISO->lratio = pTuningISOV2->lratio;
144             pISO->mf_sharp_ratio = pTuningISOV2->mf_sharp_ratio;
145             pISO->hf_sharp_ratio = pTuningISOV2->hf_sharp_ratio;
146 
147             pISO->pbf_gain = pTuningISOV2->pbf_gain;
148             pISO->pbf_ratio = pTuningISOV2->pbf_ratio;
149             pISO->pbf_add = pTuningISOV2->pbf_add;
150 
151             pISO->mbf_gain = pTuningISOV2->mbf_gain;
152             pISO->mbf_add = pTuningISOV2->mbf_add;
153 
154             pISO->hbf_gain = pTuningISOV2->hbf_gain;
155             pISO->hbf_ratio = pTuningISOV2->hbf_ratio;
156             pISO->hbf_add = pTuningISOV2->hbf_add;
157 
158             pISO->local_sharp_strength = pTuningISOV2->local_sharp_strength;
159 
160             pISO->pbf_coeff_percent = pTuningISOV2->pbf_coeff_percent;
161             pISO->rf_m_coeff_percent = pTuningISOV2->rf_m_coeff_percent;
162             pISO->rf_h_coeff_percent = pTuningISOV2->rf_h_coeff_percent;
163             pISO->hbf_coeff_percent = pTuningISOV2->hbf_coeff_percent;
164 
165             pLumaParaV2 = &pTuningISOV2->luma_para;
166             for(int k = 0; k < 8; k++) {
167                 pCalibdb->luma_point[k] = pLumaParaV2->luma_point[k];
168                 pISO->luma_sigma[k] = pLumaParaV2->luma_sigma[k];
169                 pISO->mf_clip_pos[k] = pLumaParaV2->mf_clip_pos[k];
170                 pISO->mf_clip_neg[k] = pLumaParaV2->mf_clip_neg[k];
171                 pISO->hf_clip[k] = pLumaParaV2->hf_clip[k];
172             }
173         }
174     }
175 
176     pKernelCoeffV2 = &pTuningParaV2->kernel_coeff;
177     memcpy(pCalibdb->mode_cell[mode_idx].gauss_luma_coeff, pKernelCoeffV2->gauss_luma_coeff, sizeof(pKernelCoeffV2->gauss_luma_coeff));
178     memcpy(pCalibdb->mode_cell[mode_idx].pbf_coeff_l, pKernelCoeffV2->pbf_coeff_l, sizeof(pKernelCoeffV2->pbf_coeff_l));
179     memcpy(pCalibdb->mode_cell[mode_idx].pbf_coeff_h, pKernelCoeffV2->pbf_coeff_h, sizeof(pKernelCoeffV2->pbf_coeff_h));
180     memcpy(pCalibdb->mode_cell[mode_idx].rf_m_coeff_l, pKernelCoeffV2->rf_m_coeff_l, sizeof(pKernelCoeffV2->rf_m_coeff_l));
181     memcpy(pCalibdb->mode_cell[mode_idx].rf_m_coeff_h, pKernelCoeffV2->rf_m_coeff_h, sizeof(pKernelCoeffV2->rf_m_coeff_h));
182     memcpy(pCalibdb->mode_cell[mode_idx].rf_h_coeff_l, pKernelCoeffV2->rf_h_coeff_l, sizeof(pKernelCoeffV2->rf_h_coeff_l));
183     memcpy(pCalibdb->mode_cell[mode_idx].rf_h_coeff_h, pKernelCoeffV2->rf_h_coeff_h, sizeof(pKernelCoeffV2->rf_h_coeff_h));
184     memcpy(pCalibdb->mode_cell[mode_idx].hbf_coeff_l, pKernelCoeffV2->hbf_coeff_l, sizeof(pKernelCoeffV2->hbf_coeff_l));
185     memcpy(pCalibdb->mode_cell[mode_idx].hbf_coeff_h, pKernelCoeffV2->hbf_coeff_h, sizeof(pKernelCoeffV2->hbf_coeff_h));
186     memcpy(pCalibdb->mode_cell[mode_idx].mbf_coeff, pKernelCoeffV2->mbf_coeff, sizeof(pKernelCoeffV2->mbf_coeff));
187 
188     return 0;
189 }
190 
191 
sharpV1_calibdbV2_free(CalibDbV2_SharpV1_t * pCalibdbV2)192 void sharpV1_calibdbV2_free(CalibDbV2_SharpV1_t *pCalibdbV2)
193 {
194     if(pCalibdbV2) {
195         if(pCalibdbV2->Version) {
196             free(pCalibdbV2->Version);
197         }
198 
199         if(pCalibdbV2->TuningPara.Setting) {
200             for(int i = 0; i < pCalibdbV2->TuningPara.Setting_len; i++) {
201                 if(pCalibdbV2->TuningPara.Setting[i].SNR_Mode) {
202                     free(pCalibdbV2->TuningPara.Setting[i].SNR_Mode);
203                 }
204 
205                 if(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode) {
206                     free(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode);
207                 }
208 
209                 if(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO) {
210                     free(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO);
211                 }
212             }
213 
214             free(pCalibdbV2->TuningPara.Setting);
215         }
216 
217         free(pCalibdbV2);
218     }
219 }
220 
221 
222 
223