xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/iq_parser_v2/cnr_xml2json_v1.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "cnr_xml2json_v1.h"
2 #include "RkAiqCalibApi.h"
3 
4 #define CNRV1_SETTING_NUM (2)
5 #define CNRV1_ISO_NUM  (13)
6 
cnrV1_calibdb_to_calibdbV2(struct list_head * pCnrList,CalibDbV2_CNR_t * pCalibdbV2,int mode_idx)7 int cnrV1_calibdb_to_calibdbV2(struct list_head *pCnrList,  CalibDbV2_CNR_t *pCalibdbV2, int mode_idx)
8 {
9     CalibDbV2_CNR_Tuning_t *pTuningParaV2 = NULL;
10     CalibDbV2_CNR_T_ISO_t *pISOV2 = NULL;
11 
12 
13     if(pCnrList == NULL || pCalibdbV2 == NULL) {
14         printf(" pCalibdb is NULL pointer\n");
15         return -1;
16     }
17 
18     Calibdb_Cnr_V1_t* pCnrProfile = NULL;
19     CamCalibdbGetCnrV1ProfileByIdx(pCnrList, mode_idx, &pCnrProfile);
20     if(pCnrProfile == NULL) {
21         printf(" %s:%d cnr can't get mode:%d para from xml calibdb\n",
22                __FUNCTION__,
23                __LINE__,
24                mode_idx);
25         return -1;
26     }
27 
28 
29     pTuningParaV2 = &pCalibdbV2->TuningPara;
30 
31     //malloc settting size
32     pTuningParaV2->Setting = (CalibDbV2_CNR_T_Set_t *)malloc(CNRV1_SETTING_NUM * sizeof(CalibDbV2_CNR_T_Set_t));
33     memset(pTuningParaV2->Setting, 0x00, CNRV1_SETTING_NUM * sizeof(CalibDbV2_CNR_T_Set_t));
34     pTuningParaV2->Setting_len = CNRV1_SETTING_NUM;
35 
36     //malloc iso size
37     for(int i = 0; i < CNRV1_SETTING_NUM; i++) {
38         pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_CNR_T_ISO_t *)malloc(CNRV1_ISO_NUM * sizeof(CalibDbV2_CNR_T_ISO_t));
39         memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, CNRV1_ISO_NUM * sizeof(CalibDbV2_CNR_T_ISO_t));
40         pTuningParaV2->Setting[i].Tuning_ISO_len = CNRV1_ISO_NUM;
41     }
42 
43     //assign the value
44     pTuningParaV2->enable = pCnrProfile->enable;
45 
46     //tuning
47     for(int i = 0; i < CNRV1_SETTING_NUM; i++) {
48         Calibdb_Cnr_params_V1_t *pCnrParamsV1 = NULL;
49         CamCalibdbGetCnrV1SettingByIdx(&pCnrProfile->listHead, i, &pCnrParamsV1);
50 
51         if(pCnrParamsV1 == NULL) {
52             printf("cnr can't get setting:%d from xml calibdb! \n", i);
53             break;
54         }
55 
56         pTuningParaV2->Setting[i].SNR_Mode = strdup(pCnrParamsV1->snr_mode);
57         pTuningParaV2->Setting[i].Sensor_Mode = strdup(pCnrParamsV1->sensor_mode);
58 
59         for(int j = 0; j < CNRV1_ISO_NUM; j++) {
60             pISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
61             pISOV2->iso = pCnrParamsV1->iso[j];
62             pISOV2->hf_bypass = pCnrParamsV1->rkcnr_hq_bila_bypass[j];
63             pISOV2->lf_bypass = pCnrParamsV1->rkcnr_lq_bila_bypass[j];
64 
65             pISOV2->cnr_exgain = pCnrParamsV1->rkcnr_exgain[j];
66             pISOV2->cnr_g_gain = pCnrParamsV1->rkcnr_g_gain[j];
67             pISOV2->color_sat_adj = pCnrParamsV1->ratio[j];
68             pISOV2->color_sat_adj_alpha = pCnrParamsV1->offset[j];
69 
70             pISOV2->hf_spikes_reducion_strength = pCnrParamsV1->medRatio1[j];
71             pISOV2->hf_denoise_strength = pCnrParamsV1->sigmaR1[j];
72             pISOV2->hf_color_sat = pCnrParamsV1->uvgain1[j];
73             pISOV2->hf_denoise_alpha = pCnrParamsV1->bfRatio1[j];
74             pISOV2->hf_bf_wgt_clip = pCnrParamsV1->hbf_wgt_clip[j];
75 
76             pISOV2->thumb_spikes_reducion_strength = pCnrParamsV1->medRatio2[j];
77             pISOV2->thumb_denoise_strength = pCnrParamsV1->sigmaR2[j];
78             pISOV2->thumb_color_sat = pCnrParamsV1->uvgain2[j];
79 
80             pISOV2->lf_denoise_strength = pCnrParamsV1->sigmaR3[j];
81             pISOV2->lf_color_sat = pCnrParamsV1->uvgain3[j];
82             pISOV2->lf_denoise_alpha = pCnrParamsV1->bfRatio3[j];
83 
84         }
85 
86         memcpy(pCalibdbV2->TuningPara.Kernel_Coeff.kernel_5x5, pCnrParamsV1->kernel_5x5_table, sizeof(pCnrParamsV1->kernel_5x5_table));
87     }
88 
89 
90     return 0;
91 
92 }
93 
94 
95 
cnrV1_calibdbV2_to_calibdb(CalibDbV2_CNR_t * pCalibdbV2,struct list_head * pCnrList,int mode_idx)96 int cnrV1_calibdbV2_to_calibdb(CalibDbV2_CNR_t *pCalibdbV2,  struct list_head *pCnrList,   int mode_idx)
97 {
98     CalibDbV2_CNR_Tuning_t *pTuningParaV2 = NULL;
99     CalibDbV2_CNR_T_ISO_t *pISOV2 = NULL;
100 
101     if(pCalibdbV2 == NULL || pCnrList == NULL) {
102         printf(" pCalibdb is NULL pointer\n");
103         return -1;
104     }
105 
106     Calibdb_Cnr_V1_t* pCnrProfile = NULL;
107     CamCalibdbGetCnrV1ProfileByIdx(pCnrList, mode_idx, &pCnrProfile);
108     if(pCnrProfile == NULL) {
109         printf(" %s:%d cnr can't get mode:%d para from xml calibdb\n",
110                __FUNCTION__,
111                __LINE__,
112                mode_idx);
113         return -1;
114     }
115 
116     pTuningParaV2 = &pCalibdbV2->TuningPara;
117 
118     //assign the value
119     pCnrProfile->enable = pTuningParaV2->enable;
120 
121 
122     //tuning
123     for(int i = 0; i < pTuningParaV2->Setting_len; i++) {
124         Calibdb_Cnr_params_V1_t *pCnrParamsV1 = NULL;
125         CamCalibdbGetCnrV1SettingByIdx(&pCnrProfile->listHead, i, &pCnrParamsV1);
126 
127         if(pCnrParamsV1 == NULL) {
128             printf("cnr can't get setting:%d from xml calibdb! \n", i);
129             break;
130         }
131 
132         strcpy(pCnrParamsV1->snr_mode, pTuningParaV2->Setting[i].SNR_Mode);
133         strcpy(pCnrParamsV1->sensor_mode, pTuningParaV2->Setting[i].Sensor_Mode);
134 
135         for(int j = 0; j < CNRV1_ISO_NUM; j++) {
136             pISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
137 
138             pCnrParamsV1->iso[j] = pISOV2->iso;
139             pCnrParamsV1->rkcnr_hq_bila_bypass[j] = pISOV2->hf_bypass;
140             pCnrParamsV1->rkcnr_lq_bila_bypass[j] = pISOV2->lf_bypass;
141 
142             pCnrParamsV1->rkcnr_exgain[j] = pISOV2->cnr_exgain;
143             pCnrParamsV1->rkcnr_g_gain[j] = pISOV2->cnr_g_gain;
144             pCnrParamsV1->ratio[j] = pISOV2->color_sat_adj;
145             pCnrParamsV1->offset[j] = pISOV2->color_sat_adj_alpha;
146 
147             pCnrParamsV1->medRatio1[j] = pISOV2->hf_spikes_reducion_strength;
148             pCnrParamsV1->sigmaR1[j] = pISOV2->hf_denoise_strength;
149             pCnrParamsV1->uvgain1[j] = pISOV2->hf_color_sat;
150             pCnrParamsV1->bfRatio1[j] = pISOV2->hf_denoise_alpha;
151             pCnrParamsV1->hbf_wgt_clip[j] = pISOV2->hf_bf_wgt_clip;
152 
153             pCnrParamsV1->medRatio2[j] = pISOV2->thumb_spikes_reducion_strength;
154             pCnrParamsV1->sigmaR2[j] = pISOV2->thumb_denoise_strength;
155             pCnrParamsV1->uvgain2[j] = pISOV2->thumb_color_sat;
156 
157             pCnrParamsV1->sigmaR3[j] = pISOV2->lf_denoise_strength;
158             pCnrParamsV1->uvgain3[j] = pISOV2->lf_color_sat;
159             pCnrParamsV1->bfRatio3[j] = pISOV2->lf_denoise_alpha;
160 
161         }
162 
163         memcpy(pCnrParamsV1->kernel_5x5_table, pCalibdbV2->TuningPara.Kernel_Coeff.kernel_5x5, sizeof(pCnrParamsV1->kernel_5x5_table));
164     }
165 
166     return 0;
167 
168 }
169 
170 
cnrV1_calibdbV2_free(CalibDbV2_CNR_t * pCalibdbV2)171 void cnrV1_calibdbV2_free(CalibDbV2_CNR_t *pCalibdbV2)
172 {
173     if(pCalibdbV2) {
174         if(pCalibdbV2->Version) {
175             free(pCalibdbV2->Version);
176         }
177 
178         if(pCalibdbV2->TuningPara.Setting) {
179             for(int i = 0; i < pCalibdbV2->TuningPara.Setting_len; i++) {
180                 if(pCalibdbV2->TuningPara.Setting[i].SNR_Mode) {
181                     free(pCalibdbV2->TuningPara.Setting[i].SNR_Mode);
182                 }
183                 if(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode) {
184                     free(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode);
185                 }
186                 if(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO) {
187                     free(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO);
188                 }
189             }
190             free(pCalibdbV2->TuningPara.Setting);
191         }
192 
193         free(pCalibdbV2);
194     }
195 
196 }
197 
198