xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/iq_parser_v2/af_xml2json.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  *  Copyright (c) 2019 Rockchip Corporation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 
18 #include "af_xml2json.h"
19 
CalibV2AfFree(CamCalibDbV2Context_t * calibV2)20 void CalibV2AfFree(CamCalibDbV2Context_t *calibV2) {
21 
22     CalibDbV2_AF_t* af_v2 = (CalibDbV2_AF_t*)(CALIBDBV2_GET_MODULE_PTR(calibV2, af));
23     if (af_v2 == NULL)
24         return;
25 
26     CalibDbV2_AF_Tuning_Para_t* af_json = &af_v2->TuningPara;
27     if (af_json->zoomfocus_tbl.focal_length)
28         free(af_json->zoomfocus_tbl.focal_length);
29     if (af_json->zoomfocus_tbl.zoom_pos)
30         free(af_json->zoomfocus_tbl.zoom_pos);
31     if (af_json->zoomfocus_tbl.focus_infpos)
32         free(af_json->zoomfocus_tbl.focus_infpos);
33     if (af_json->zoomfocus_tbl.focus_macropos)
34         free(af_json->zoomfocus_tbl.focus_macropos);
35 
36 }
37 
convertAfCalibV1ToCalibV2(const CamCalibDbContext_t * calib,CamCalibDbV2Context_t * calibV2)38 void convertAfCalibV1ToCalibV2(const CamCalibDbContext_t *calib, CamCalibDbV2Context_t *calibV2) {
39 
40     //1. copy xml params from pointer
41     const CalibDb_AF_t *af_xml = (CalibDb_AF_t*)CALIBDB_GET_MODULE_PTR((void*)calib, af);
42     if (af_xml == NULL)
43         return;
44 
45     //2. convert xml params 2 json params
46     CalibDbV2_AF_t* af_v2 = (CalibDbV2_AF_t*)(CALIBDBV2_GET_MODULE_PTR(calibV2, af));
47     if (af_v2 == NULL)
48         return;
49 
50     CalibDbV2_AF_Tuning_Para_t* af_json = &af_v2->TuningPara;
51     memset(af_json, 0x00, sizeof(CalibDbV2_AF_Tuning_Para_t));
52 
53     af_json->af_mode = (CalibDbV2_AF_MODE_t)af_xml->af_mode;
54     af_json->win_h_offs = af_xml->win_h_offs;
55     af_json->win_v_offs = af_xml->win_v_offs;
56     af_json->win_h_size = af_xml->win_h_size;
57     af_json->win_v_size = af_xml->win_v_size;
58     af_json->fixed_mode.code = af_xml->fixed_mode.code;
59     af_json->macro_mode.code = af_xml->macro_mode.code;
60     af_json->infinity_mode.code = af_xml->infinity_mode.code;
61 
62     af_json->contrast_af.enable = af_xml->contrast_af.enable;
63     af_json->contrast_af.Afss = (CalibDbV2_Af_SS_t)af_xml->contrast_af.Afss;
64     af_json->contrast_af.FullDir = (CalibDbV2_Af_SearchDir_t)af_xml->contrast_af.FullDir;
65     af_json->contrast_af.FullSteps = af_xml->contrast_af.FullSteps;
66     memcpy(af_json->contrast_af.FullRangeTbl, af_xml->contrast_af.FullRangeTbl, sizeof(af_json->contrast_af.FullRangeTbl));
67     af_json->contrast_af.AdaptiveDir = (CalibDbV2_Af_SearchDir_t)af_xml->contrast_af.AdaptiveDir;
68     af_json->contrast_af.AdaptiveSteps = af_xml->contrast_af.AdaptiveSteps;
69     memcpy(af_json->contrast_af.AdaptRangeTbl, af_xml->contrast_af.AdaptRangeTbl, sizeof(af_json->contrast_af.AdaptRangeTbl));
70     af_json->contrast_af.TrigThers[0] = af_xml->contrast_af.TrigThers;
71     af_json->contrast_af.TrigThersFv[0] = 0;
72     af_json->contrast_af.TrigThersNums = 1;
73     af_json->contrast_af.LumaTrigThers = af_xml->contrast_af.LumaTrigThers;
74     af_json->contrast_af.ExpTrigThers = 2.0f;
75 
76     af_json->contrast_af.StableThers = af_xml->contrast_af.StableThers;
77     af_json->contrast_af.StableFrames = af_xml->contrast_af.StableFrames;
78     af_json->contrast_af.StableTime = af_xml->contrast_af.StableTime;
79 
80     af_json->contrast_af.SceneDiffEnable = af_xml->contrast_af.SceneDiffEnable;
81     af_json->contrast_af.SceneDiffThers = af_xml->contrast_af.SceneDiffThers;
82     af_json->contrast_af.SceneDiffBlkThers = af_xml->contrast_af.SceneDiffBlkThers;
83     af_json->contrast_af.CenterSceneDiffThers = af_xml->contrast_af.CenterSceneDiffThers;
84 
85     af_json->contrast_af.ValidMaxMinRatio = af_xml->contrast_af.ValidMaxMinRatio;
86     af_json->contrast_af.ValidValueThers = af_xml->contrast_af.ValidValueThers;
87 
88     af_json->contrast_af.OutFocusValue = af_xml->contrast_af.OutFocusValue;
89     af_json->contrast_af.OutFocusPos = af_xml->contrast_af.OutFocusPos;
90 
91     af_json->contrast_af.WeightEnable = af_xml->contrast_af.WeightEnable;
92     memcpy(af_json->contrast_af.Weight, af_xml->contrast_af.Weight, sizeof(af_json->contrast_af.Weight));
93 
94     af_json->contrast_af.SearchPauseLumaEnable = af_xml->contrast_af.SearchPauseLumaEnable;
95     af_json->contrast_af.SearchPauseLumaThers = af_xml->contrast_af.SearchPauseLumaThers;
96     af_json->contrast_af.SearchLumaStableFrames = af_xml->contrast_af.SearchLumaStableFrames;
97     af_json->contrast_af.SearchLumaStableThers = af_xml->contrast_af.SearchLumaStableThers;
98 
99     af_json->contrast_af.FlatValue = af_xml->contrast_af.FlatValue;
100 
101     af_json->contrast_af.PointLightLumaTh = 3000;
102     af_json->contrast_af.PointLightCntTh = 300;
103 
104     af_json->laser_af.enable = af_xml->laser_af.enable;
105     memcpy(af_json->laser_af.vcmDot, af_xml->laser_af.vcmDot, sizeof(af_json->laser_af.vcmDot));
106     memcpy(af_json->laser_af.distanceDot, af_xml->laser_af.distanceDot, sizeof(af_json->laser_af.distanceDot));
107 
108     af_json->pdaf.enable = af_xml->pdaf.enable;
109 
110     af_json->vcmcfg.start_current = af_xml->vcmcfg.start_current;
111     af_json->vcmcfg.rated_current = af_xml->vcmcfg.rated_current;
112     af_json->vcmcfg.step_mode = af_xml->vcmcfg.step_mode;
113     af_json->vcmcfg.extra_delay = af_xml->vcmcfg.extra_delay;
114 
115     for (int i = 0; i < CALIBDB_MAX_ISO_LEVEL; i++) {
116         af_json->measiso_cfg[i].iso = af_xml->measiso_cfg[i].iso;
117         af_json->measiso_cfg[i].afmThres = af_xml->measiso_cfg[i].afmThres;
118 
119         memcpy(af_json->measiso_cfg[i].gammaY, af_xml->measiso_cfg[i].gammaY, sizeof(af_json->measiso_cfg[i].gammaY));
120         memcpy(af_json->measiso_cfg[i].gaussWeight, af_xml->measiso_cfg[i].gaussWeight, sizeof(af_json->measiso_cfg[i].gaussWeight));
121     }
122 
123     af_json->zoomfocus_tbl.tbl_len = af_xml->zoomfocus_tbl.tbl_len;
124     af_json->zoomfocus_tbl.zoom_pos_len = af_xml->zoomfocus_tbl.tbl_len;
125     af_json->zoomfocus_tbl.focal_length_len = af_xml->zoomfocus_tbl.tbl_len;
126     af_json->zoomfocus_tbl.focus_infpos_len = af_xml->zoomfocus_tbl.tbl_len;
127     af_json->zoomfocus_tbl.focus_macropos_len = af_xml->zoomfocus_tbl.tbl_len;
128     if (af_json->zoomfocus_tbl.tbl_len > 0) {
129         af_json->zoomfocus_tbl.focal_length = (float*)malloc(af_json->zoomfocus_tbl.tbl_len * sizeof(float));
130         af_json->zoomfocus_tbl.zoom_pos = (int*)malloc(af_json->zoomfocus_tbl.tbl_len * sizeof(int));
131         af_json->zoomfocus_tbl.focus_infpos = (int*)malloc(af_json->zoomfocus_tbl.tbl_len * sizeof(int));
132         af_json->zoomfocus_tbl.focus_macropos = (int*)malloc(af_json->zoomfocus_tbl.tbl_len * sizeof(int));
133     } else {
134         af_json->zoomfocus_tbl.focal_length = NULL;
135         af_json->zoomfocus_tbl.zoom_pos = NULL;
136         af_json->zoomfocus_tbl.focus_infpos = NULL;
137         af_json->zoomfocus_tbl.focus_macropos = NULL;
138     }
139 
140     for (int i = 0; i < af_json->zoomfocus_tbl.tbl_len; i++) {
141         af_json->zoomfocus_tbl.focal_length[i] = af_xml->zoomfocus_tbl.focal_length[i];
142         af_json->zoomfocus_tbl.zoom_pos[i] = af_xml->zoomfocus_tbl.zoom_pos[i];
143         af_json->zoomfocus_tbl.focus_infpos[i] = af_xml->zoomfocus_tbl.focus_infpos[i];
144         af_json->zoomfocus_tbl.focus_macropos[i] = af_xml->zoomfocus_tbl.focus_macropos[i];
145     }
146 }
147