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