1 #include "sharp_xml2json_v3.h"
2 #include "RkAiqCalibApi.h"
3
4 #define SHARPV3_SETTING_NUM (2)
5 #define SHARPV3_ISO_NUM (13)
6
sharpV3_calibdb_to_calibdbV2(struct list_head * pSharpList,CalibDbV2_SharpV3_t * pCalibdbV2,int mode_idx)7 int sharpV3_calibdb_to_calibdbV2(struct list_head *pSharpList, CalibDbV2_SharpV3_t *pCalibdbV2, int mode_idx)
8 {
9 CalibDbV2_SharpV3_Tuning_t *pTuningParaV2 = NULL;
10 CalibDbV2_SharpV3_T_ISO_t *pTuningISOV2 = NULL;
11 CalibDbV2_SharpV3_Luma_t *pLumaParaV2 = NULL;
12 CalibDbV2_SharpV3_kernel_t *pKernelCoeffV2 = NULL;
13
14 if(pSharpList == NULL || pCalibdbV2 == NULL) {
15 printf(" pCalibdb is NULL pointer\n");
16 return -1;
17 }
18
19 Calibdb_Sharp_V3_t* pSharpProfile = NULL;
20 CamCalibdbGetSharpV3ProfileByIdx(pSharpList, mode_idx, &pSharpProfile);
21 if(pSharpProfile == NULL) {
22 printf(" %s:%d bayernr can't get mode:%d para from calibdbv1\n",
23 __FUNCTION__,
24 __LINE__,
25 mode_idx);
26 return -1;
27 }
28
29 pTuningParaV2 = &pCalibdbV2->TuningPara;
30
31 //malloc settting size
32 pTuningParaV2->Setting = (CalibDbV2_SharpV3_T_Set_t *)malloc(SHARPV3_SETTING_NUM * sizeof(CalibDbV2_SharpV3_T_Set_t));
33 memset(pTuningParaV2->Setting, 0x00, SHARPV3_SETTING_NUM * sizeof(CalibDbV2_SharpV3_T_Set_t));
34 pTuningParaV2->Setting_len = SHARPV3_SETTING_NUM;
35
36 //malloc iso size
37 for(int i = 0; i < SHARPV3_SETTING_NUM; i++) {
38 pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_SharpV3_T_ISO_t *)malloc(SHARPV3_ISO_NUM * sizeof(CalibDbV2_SharpV3_T_ISO_t));
39 memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, SHARPV3_ISO_NUM * sizeof(CalibDbV2_SharpV3_T_ISO_t));
40 pTuningParaV2->Setting[i].Tuning_ISO_len = SHARPV3_ISO_NUM;
41 }
42
43 //assign the value
44 pTuningParaV2->enable = pSharpProfile->enable;
45
46 for(int i = 0; i < SHARPV3_SETTING_NUM; i++) {
47 Calibdb_Sharp_params_V3_t *pSharpParamsV1 = NULL;
48 CamCalibdbGetSharpV3SettingByIdx(&pSharpProfile->listHead, i, &pSharpParamsV1);
49
50 if(pSharpParamsV1 == NULL) {
51 printf("cnr can't get setting:%d from xml calibdb! \n", i);
52 break;
53 }
54
55 pTuningParaV2->Setting[i].SNR_Mode = strdup(pSharpParamsV1->snr_mode);
56 pTuningParaV2->Setting[i].Sensor_Mode = strdup(pSharpParamsV1->sensor_mode);
57
58 for(int j = 0; j < SHARPV3_ISO_NUM; j++) {
59 pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
60
61 pTuningISOV2->iso = pSharpParamsV1->iso[j];
62 pTuningISOV2->pbf_gain = pSharpParamsV1->pbf_gain[j];
63 pTuningISOV2->pbf_ratio = pSharpParamsV1->pbf_ratio[j];
64 pTuningISOV2->pbf_add = pSharpParamsV1->pbf_add[j];
65 pTuningISOV2->gaus_ratio = pSharpParamsV1->gaus_ratio[j];
66
67 pTuningISOV2->sharp_ratio = pSharpParamsV1->sharp_ratio[j];
68 pTuningISOV2->bf_gain = pSharpParamsV1->bf_gain[j];
69 pTuningISOV2->bf_ratio = pSharpParamsV1->bf_ratio[j];
70 pTuningISOV2->bf_add = pSharpParamsV1->bf_add[j];
71
72 pLumaParaV2 = &pTuningISOV2->luma_para;
73 for(int k = 0; k < 8; k++) {
74 pLumaParaV2->luma_point[k] = pSharpParamsV1->luma_point[k];
75 pLumaParaV2->luma_sigma[k] = pSharpParamsV1->luma_sigma[j][k];
76 pLumaParaV2->hf_clip[k] = pSharpParamsV1->lum_clip_h[j][k];
77 pLumaParaV2->local_sharp_strength[k] = pSharpParamsV1->ehf_th[j][k];
78 }
79 pKernelCoeffV2 = &pTuningISOV2->kernel_para;
80 for(int k = 0; k < 3; k++) {
81 pKernelCoeffV2->prefilter_coeff[k] = pSharpParamsV1->kernel_pre_bila_filter[k][j];
82 pKernelCoeffV2->GaussianFilter_coeff[k] = pSharpParamsV1->kernel_range_filter[k][j];
83 pKernelCoeffV2->hfBilateralFilter_coeff[k] = pSharpParamsV1->kernel_bila_filter[k][j];
84 }
85 }
86 }
87
88 return 0;
89 }
90
91
sharpV3_calibdbV2_to_calibdb(CalibDbV2_SharpV3_t * pCalibdbV2,struct list_head * pSharpList,int mode_idx)92 int sharpV3_calibdbV2_to_calibdb(CalibDbV2_SharpV3_t *pCalibdbV2, struct list_head *pSharpList, int mode_idx)
93 {
94 CalibDbV2_SharpV3_Tuning_t *pTuningParaV2 = NULL;
95 CalibDbV2_SharpV3_T_ISO_t *pTuningISOV2 = NULL;
96 CalibDbV2_SharpV3_Luma_t *pLumaParaV2 = NULL;
97 CalibDbV2_SharpV3_kernel_t *pKernelCoeffV2 = NULL;
98
99 if(pSharpList == NULL || pCalibdbV2 == NULL) {
100 printf(" pCalibdb is NULL pointer\n");
101 return -1;
102 }
103
104 Calibdb_Sharp_V3_t* pSharpProfile = NULL;
105 CamCalibdbGetSharpV3ProfileByIdx(pSharpList, mode_idx, &pSharpProfile);
106 if(pSharpProfile == NULL) {
107 printf(" %s:%d bayernr can't get mode:%d para from calibdbv1\n",
108 __FUNCTION__,
109 __LINE__,
110 mode_idx);
111 return -1;
112 }
113
114 pTuningParaV2 = &pCalibdbV2->TuningPara;
115
116 //assign the value
117 pSharpProfile->enable = pTuningParaV2->enable;
118
119 for(int i = 0; i < SHARPV3_SETTING_NUM; i++) {
120 Calibdb_Sharp_params_V3_t *pSharpParamsV1 = NULL;
121 CamCalibdbGetSharpV3SettingByIdx(&pSharpProfile->listHead, i, &pSharpParamsV1);
122 if(pSharpParamsV1 == NULL) {
123 printf("cnr can't get setting:%d from xml calibdb! \n", i);
124 break;
125 }
126
127 strcpy(pSharpParamsV1->snr_mode, pTuningParaV2->Setting[i].SNR_Mode);
128 strcpy(pSharpParamsV1->sensor_mode, pTuningParaV2->Setting[i].Sensor_Mode);
129
130 for(int j = 0; j < SHARPV3_ISO_NUM; j++) {
131 pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
132
133 pSharpParamsV1->iso[j] = pTuningISOV2->iso;
134 pSharpParamsV1->pbf_gain[j] = pTuningISOV2->pbf_gain;
135 pSharpParamsV1->pbf_add[j] = pTuningISOV2->pbf_ratio;
136 pSharpParamsV1->pbf_ratio[j] = pTuningISOV2->pbf_add;
137 pSharpParamsV1->gaus_ratio[j] = pTuningISOV2->gaus_ratio;
138
139 pSharpParamsV1->sharp_ratio[j] = pTuningISOV2->sharp_ratio;
140 pSharpParamsV1->bf_gain[j] = pTuningISOV2->bf_gain;
141 pSharpParamsV1->bf_ratio[j] = pTuningISOV2->bf_ratio;
142 pSharpParamsV1->bf_add[j] = pTuningISOV2->bf_add;
143
144 pLumaParaV2 = &pTuningISOV2->luma_para;
145 for(int k = 0; k < 8; k++) {
146 pSharpParamsV1->luma_point[k] = pLumaParaV2->luma_point[k];
147 pSharpParamsV1->luma_sigma[j][k] = pLumaParaV2->luma_sigma[k];
148 pSharpParamsV1->lum_clip_h[j][k] = pLumaParaV2->hf_clip[k];
149 pSharpParamsV1->ehf_th[j][k] = pLumaParaV2->local_sharp_strength[k];
150 }
151 pKernelCoeffV2 = &pTuningISOV2->kernel_para;
152 for(int k = 0; k < 3; k++) {
153 pSharpParamsV1->kernel_pre_bila_filter[k][j] = pKernelCoeffV2->prefilter_coeff[k];
154 pSharpParamsV1->kernel_range_filter[k][j] = pKernelCoeffV2->GaussianFilter_coeff[k];
155 pSharpParamsV1->kernel_bila_filter[k][j] = pKernelCoeffV2->hfBilateralFilter_coeff[k];
156 }
157 }
158 }
159
160 return 0;
161 }
162
163
sharpV3_calibdbV2_free(CalibDbV2_SharpV3_t * pCalibdbV2)164 void sharpV3_calibdbV2_free(CalibDbV2_SharpV3_t *pCalibdbV2)
165 {
166 if(pCalibdbV2) {
167 if(pCalibdbV2->Version) {
168 free(pCalibdbV2->Version);
169 }
170
171 if(pCalibdbV2->TuningPara.Setting) {
172 for(int i = 0; i < pCalibdbV2->TuningPara.Setting_len; i++) {
173 if(pCalibdbV2->TuningPara.Setting[i].SNR_Mode) {
174 free(pCalibdbV2->TuningPara.Setting[i].SNR_Mode);
175 }
176
177 if(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode) {
178 free(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode);
179 }
180
181 if(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO) {
182 free(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO);
183 }
184 }
185
186 free(pCalibdbV2->TuningPara.Setting);
187 }
188
189 free(pCalibdbV2);
190 }
191 }
192
193
194
195