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