xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/iq_parser_v2/uvnr_xml2json_v1.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "uvnr_xml2json_v1.h"
2 
3 #define UVNRV1_SETTING_NUM (2)
4 #define UVNRV1_ISO_NUM  (13)
5 
uvnrV1_calibdb_to_calibdbV2(const CalibDb_UVNR_2_t * pCalibdb,CalibDbV2_UVNR_t * pCalibdbV2,int mode_idx)6 int uvnrV1_calibdb_to_calibdbV2(const CalibDb_UVNR_2_t *pCalibdb,  CalibDbV2_UVNR_t *pCalibdbV2, int mode_idx)
7 {
8     CalibDbV2_UVNR_Tuning_t *pTuningParaV2 = NULL;
9     CalibDbV2_UVNR_T_ISO_t *pTuningISOV2 = NULL;
10     CalibDbV2_UVNR_Kernel_t *pKernel_Coeff;
11     CalibDb_UVNR_Params_t *pSetting = NULL;
12 
13     if(pCalibdb == NULL) {
14         printf(" pCalibdb is NULL pointer\n");
15         return -1;
16     }
17 
18     if(pCalibdbV2 == NULL) {
19         printf(" pCalibdbV2 is NULL pointer\n");
20         return -1;
21     }
22 
23     if(pCalibdb->mode_num < mode_idx) {
24         printf(" old xml file have no %d mode cell \n", mode_idx);
25         return -1;
26     }
27 
28     pTuningParaV2 = &pCalibdbV2->TuningPara;
29 
30     //malloc settting size
31     pTuningParaV2->Setting = (CalibDbV2_UVNR_TuningPara_Setting_t *)malloc(UVNRV1_SETTING_NUM * sizeof(CalibDbV2_UVNR_TuningPara_Setting_t));
32     memset(pTuningParaV2->Setting, 0x00, UVNRV1_SETTING_NUM * sizeof(CalibDbV2_UVNR_TuningPara_Setting_t));
33     pTuningParaV2->Setting_len = UVNRV1_SETTING_NUM;
34 
35     //malloc iso size
36     for(int i = 0; i < UVNRV1_SETTING_NUM; i++) {
37         pTuningParaV2->Setting[i].Tuning_ISO = (CalibDbV2_UVNR_TuningPara_Setting_ISO_t *)malloc(UVNRV1_ISO_NUM * sizeof(CalibDbV2_UVNR_TuningPara_Setting_ISO_t));
38         memset(pTuningParaV2->Setting[i].Tuning_ISO, 0x00, UVNRV1_ISO_NUM * sizeof(CalibDbV2_UVNR_TuningPara_Setting_ISO_t));
39         pTuningParaV2->Setting[i].Tuning_ISO_len = UVNRV1_ISO_NUM;
40     }
41 
42     //assign the value
43     pTuningParaV2->enable = pCalibdb->enable;
44     pCalibdbV2->Version = strdup(pCalibdb->version);
45 
46     //tuning
47     for(int i = 0; i < UVNRV1_SETTING_NUM; i++) {
48         pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
49 
50         pTuningParaV2->Setting[i].SNR_Mode = strdup(pSetting->snr_mode);
51         pTuningParaV2->Setting[i].Sensor_Mode = strdup(pSetting->sensor_mode);
52 
53         for(int j = 0; j < UVNRV1_ISO_NUM; j++) {
54             pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
55             pTuningISOV2->iso = pSetting->ISO[j];
56             pTuningISOV2->step0_uvgrad_ratio = pSetting->step0_uvgrad_ratio[j];
57             pTuningISOV2->step0_uvgrad_offset = pSetting->step0_uvgrad_offset[j];
58 
59             pTuningISOV2->step1_median_ratio = pSetting->step1_median_ratio[j];
60             pTuningISOV2->step1_bf_sigmaR = pSetting->step1_bf_sigmaR[j];
61             pTuningISOV2->step1_bf_uvgain = pSetting->step1_bf_uvgain[j];
62             pTuningISOV2->step1_bf_ratio = pSetting->step1_bf_ratio[j];
63 
64             pTuningISOV2->step2_median_ratio = pSetting->step2_median_ratio[j];
65             pTuningISOV2->step2_bf_sigmaR = pSetting->step2_bf_sigmaR[j];
66             pTuningISOV2->step2_bf_uvgain = pSetting->step2_bf_uvgain[j];
67             pTuningISOV2->step2_bf_ratio = pSetting->step2_bf_ratio[j];
68 
69             pTuningISOV2->step3_bf_sigmaR = pSetting->step3_bf_sigmaR[j];
70             pTuningISOV2->step3_bf_uvgain = pSetting->step3_bf_uvgain[j];
71             pTuningISOV2->step3_bf_ratio = pSetting->step3_bf_ratio[j];
72 
73         }
74 
75     }
76 
77     pKernel_Coeff = &pTuningParaV2->Kernel_Coeff;
78     memcpy(pKernel_Coeff->kernel_3x3, pCalibdb->mode_cell[mode_idx].setting[0].kernel_3x3, sizeof(pKernel_Coeff->kernel_3x3));
79     memcpy(pKernel_Coeff->kernel_5x5, pCalibdb->mode_cell[mode_idx].setting[0].kernel_5x5, sizeof(pKernel_Coeff->kernel_5x5));
80     memcpy(pKernel_Coeff->kernel_9x9, pCalibdb->mode_cell[mode_idx].setting[0].kernel_9x9, sizeof(pKernel_Coeff->kernel_9x9));
81     pKernel_Coeff->kernel_9x9_num = pCalibdb->mode_cell[mode_idx].setting[0].kernel_9x9_num;
82 
83     return 0;
84 
85 }
86 
87 
88 
uvnrV1_calibdbV2_to_calibdb(CalibDbV2_UVNR_t * pCalibdbV2,CalibDb_UVNR_2_t * pCalibdb,int mode_idx)89 int uvnrV1_calibdbV2_to_calibdb(CalibDbV2_UVNR_t *pCalibdbV2,  CalibDb_UVNR_2_t *pCalibdb,   int mode_idx)
90 {
91     CalibDbV2_UVNR_Tuning_t *pTuningParaV2 = NULL;
92     CalibDbV2_UVNR_T_ISO_t *pTuningISOV2 = NULL;
93     CalibDbV2_UVNR_Kernel_t *pKernel_Coeff;
94     CalibDb_UVNR_Params_t *pSetting = NULL;
95 
96     if(pCalibdb == NULL) {
97         printf(" pCalibdb is NULL pointer\n");
98         return -1;
99     }
100 
101     if(pCalibdbV2 == NULL) {
102         printf(" pCalibdbV2 is NULL pointer\n");
103         return -1;
104     }
105 
106     if(pCalibdb->mode_num < mode_idx) {
107         printf(" old xml file have no %d mode cell \n", mode_idx);
108         return -1;
109     }
110 
111     pTuningParaV2 = &pCalibdbV2->TuningPara;
112 
113 
114 
115     //assign the value
116     pCalibdb->enable = pTuningParaV2->enable;
117     strcpy(pCalibdb->version, pCalibdbV2->Version);
118 
119     //tuning
120     for(int i = 0; i < pTuningParaV2->Setting_len; i++) {
121         pSetting = &pCalibdb->mode_cell[mode_idx].setting[i];
122         strcpy(pSetting->snr_mode, pTuningParaV2->Setting[i].SNR_Mode);
123         strcpy(pSetting->sensor_mode, pTuningParaV2->Setting[i].Sensor_Mode);
124 
125         for(int j = 0; j < UVNRV1_ISO_NUM; j++) {
126             pTuningISOV2 = &pTuningParaV2->Setting[i].Tuning_ISO[j];
127             pSetting->ISO[j] = pTuningISOV2->iso;
128             pSetting->step0_uvgrad_ratio[j] = pTuningISOV2->step0_uvgrad_ratio;
129             pSetting->step0_uvgrad_offset[j] = pTuningISOV2->step0_uvgrad_offset;
130 
131             pSetting->step1_median_ratio[j] = pTuningISOV2->step1_median_ratio;
132             pSetting->step1_bf_sigmaR[j] = pTuningISOV2->step1_bf_sigmaR;
133             pSetting->step1_bf_uvgain[j] = pTuningISOV2->step1_bf_uvgain;
134             pSetting->step1_bf_ratio[j] = pTuningISOV2->step1_bf_ratio;
135 
136             pSetting->step2_median_ratio[j] = pTuningISOV2->step2_median_ratio;
137             pSetting->step2_bf_sigmaR[j] = pTuningISOV2->step2_bf_sigmaR;
138             pSetting->step2_bf_uvgain[j] = pTuningISOV2->step2_bf_uvgain;
139             pSetting->step2_bf_ratio[j] = pTuningISOV2->step2_bf_ratio;
140 
141             pSetting->step3_bf_sigmaR[j] = pTuningISOV2->step3_bf_sigmaR;
142             pSetting->step3_bf_uvgain[j] = pTuningISOV2->step3_bf_uvgain;
143             pSetting->step3_bf_ratio[j] = pTuningISOV2->step3_bf_ratio;
144 
145         }
146 
147     }
148 
149     pKernel_Coeff = &pTuningParaV2->Kernel_Coeff;
150     memcpy(pCalibdb->mode_cell[mode_idx].setting[0].kernel_3x3, pKernel_Coeff->kernel_3x3, sizeof(pKernel_Coeff->kernel_3x3));
151     memcpy(pCalibdb->mode_cell[mode_idx].setting[0].kernel_5x5, pKernel_Coeff->kernel_5x5, sizeof(pKernel_Coeff->kernel_5x5));
152     memcpy(pCalibdb->mode_cell[mode_idx].setting[0].kernel_9x9, pKernel_Coeff->kernel_9x9, sizeof(pKernel_Coeff->kernel_9x9));
153     pCalibdb->mode_cell[mode_idx].setting[0].kernel_9x9_num = pKernel_Coeff->kernel_9x9_num;
154 
155     return 0;
156 
157 }
158 
159 
uvnrV1_calibdbV2_free(CalibDbV2_UVNR_t * pCalibdbV2)160 void uvnrV1_calibdbV2_free(CalibDbV2_UVNR_t *pCalibdbV2)
161 {
162     if(pCalibdbV2) {
163         if(pCalibdbV2->Version) {
164             free(pCalibdbV2->Version);
165         }
166 
167         if(pCalibdbV2->TuningPara.Setting) {
168             for(int i = 0; i < pCalibdbV2->TuningPara.Setting_len; i++) {
169                 if(pCalibdbV2->TuningPara.Setting[i].SNR_Mode) {
170                     free(pCalibdbV2->TuningPara.Setting[i].SNR_Mode);
171                 }
172                 if(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode) {
173                     free(pCalibdbV2->TuningPara.Setting[i].Sensor_Mode);
174                 }
175                 if(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO) {
176                     free(pCalibdbV2->TuningPara.Setting[i].Tuning_ISO);
177                 }
178             }
179             free(pCalibdbV2->TuningPara.Setting);
180         }
181 
182         free(pCalibdbV2);
183     }
184 
185 }
186 
187