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