xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/iq_parser_v2/RkAiqCalibDbV2Helper.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Copyright (c) 2021-2022 Rockchip Eletronics Co., Ltd.
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 #ifndef ___RK_AIQ_CALIB_DB_V2_HELPER_H__
17 #define ___RK_AIQ_CALIB_DB_V2_HELPER_H__
18 
19 #include "RkAiqCalibDbTypes.h"
20 #include "RkAiqCalibDbTypesV2.h"
21 
22 //typedef void CamCalibDbV2Context_t;
23 
24 #define CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(nm) \
25     CALIB_MODULE_RELATIVE_OFFSET(CamCalibDbV2ContextIsp20_t, nm)
26 
27 #ifdef ISP_HW_V20
28 static calibdb_ctx_member_offset_info_t info_CamCalibDbV2ContextIsp20_t[] = {
29     {"ae_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(ae_calib)},
30     {"wb_v20", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(wb_v20)},
31     {"agamma_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(agamma_calib_v10)},
32     {"ablc_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(ablc_calib)},
33     {"adegamma_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(adegamma_calib)},
34     {"agic_calib_v20", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(agic_calib_v20)},
35     {"adehaze_calib_v10", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(adehaze_calib_v10)},
36     {"adpcc_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(adpcc_calib)},
37     {"amerge_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(amerge_calib_v10)},
38     {"atmo_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(atmo_calib)},
39     {"cpsl", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(cpsl)},
40     {"orb", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(orb)},
41     {"bayernr_v1", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(bayernr_v1)},
42     {"mfnr_v1", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(mfnr_v1)},
43     {"uvnr_v1", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(uvnr_v1)},
44     {"ynr_v1", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(ynr_v1)},
45     {"sharp_v1", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(sharp_v1)},
46     {"edgefilter_v1", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(edgefilter_v1)},
47     {"debayer", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(debayer)},
48     {"cproc", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(cproc)},
49     {"ie", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(ie)},
50     {"lsc_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(lsc_v2)},
51     {"eis_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(eis_calib)},
52     {"aldch", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(aldch)},
53     {"afec", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(afec)},
54     {"lumaDetect", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(lumaDetect)},
55     {"colorAsGrey", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(colorAsGrey)},
56     {"ccm_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(ccm_calib)},
57     {"lut3d_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(lut3d_calib)},
58     {"af", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(af)},
59     {"thumbnails", CALIBV2_MODULE_RELATIVE_OFFSET_ISP20(thumbnails)},
60     {NULL, 0},
61 };
62 #endif
63 
64 #define CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(nm) \
65     CALIB_MODULE_RELATIVE_OFFSET(CamCalibDbV2ContextIsp21_t, nm)
66 
67 #ifdef ISP_HW_V21
68 static calibdb_ctx_member_offset_info_t info_CamCalibDbV2ContextIsp21_t[] = {
69     {"ae_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(ae_calib)},
70     {"wb_v21", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(wb_v21)},
71     {"agamma_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(agamma_calib_v10)},
72     {"ablc_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(ablc_calib)},
73     {"adegamma_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(adegamma_calib)},
74     {"agic_calib_v21", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(agic_calib_v21)},
75     {"adehaze_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(adehaze_calib_v11)},
76     {"adpcc_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(adpcc_calib)},
77     {"amerge_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(amerge_calib_v10)},
78     {"cpsl", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(cpsl)},
79     {"debayer", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(debayer)},
80     {"cproc", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(cproc)},
81     {"ie", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(ie)},
82     {"lsc_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(lsc_v2)},
83     {"aldch", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(aldch)},
84     {"lumaDetect", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(lumaDetect)},
85     {"colorAsGrey", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(colorAsGrey)},
86     {"ccm_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(ccm_calib)},
87     {"lut3d_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(lut3d_calib)},
88     {"af", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(af)},
89     {"adrc_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(adrc_calib_v10)},
90     {"thumbnails", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(thumbnails)},
91     {"bayernr_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(bayernr_v2)},
92     {"cnr_v1", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(cnr_v1)},
93     {"ynr_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(ynr_v2)},
94     {"sharp_v3", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(sharp_v3)},
95     {"csm", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(csm)},
96     {"cgc", CALIBV2_MODULE_RELATIVE_OFFSET_ISP21(cgc)},
97     {NULL, 0},
98 };
99 #endif
100 
101 #define CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(nm) \
102     CALIB_MODULE_RELATIVE_OFFSET(CamCalibDbV2ContextIsp30_t, nm)
103 
104 #ifdef ISP_HW_V30
105 static calibdb_ctx_member_offset_info_t info_CamCalibDbV2ContextIsp30_t[] = {
106     {"ae_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(ae_calib)},
107     {"wb_v21", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(wb_v21)},
108     {"ablc_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(ablc_calib)},
109     {"adegamma_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(adegamma_calib)},
110     {"agic_calib_v21", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(agic_calib_v21)},
111     {"debayer", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(debayer)},
112     {"colorAsGrey", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(colorAsGrey)},
113     {"ccm_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(ccm_calib)},
114     {"lut3d_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(lut3d_calib)},
115     {"aldch", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(aldch)},
116     {"adpcc_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(adpcc_calib)},
117     {"ie", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(ie)},
118     {"cpsl", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(cpsl)},
119     {"cproc", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(cproc)},
120     {"amerge_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(amerge_calib_v11)},
121     {"adrc_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(adrc_calib_v11)},
122     {"agamma_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(agamma_calib_v11)},
123     {"adehaze_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(adehaze_calib_v11)},
124     {"lsc_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(lsc_v2)},
125     {"ynr_v3", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(ynr_v3)},
126     {"cnr_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(cnr_v2)},
127     {"sharp_v4", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(sharp_v4)},
128     {"bayer2dnr_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(bayer2dnr_v2)},
129     {"bayertnr_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(bayertnr_v2)},
130     {"cac_v03", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(cac_v03)},
131     {"cac_v10", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(cac_v10)},
132     {"af_v30", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(af_v30)},
133     {"gain_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(gain_v2)},
134     {"csm", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(csm)},
135     {"cgc", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(cgc)},
136     {"afec", CALIBV2_MODULE_RELATIVE_OFFSET_ISP30(afec)},
137     {NULL, 0},
138 };
139 #endif
140 
141 #define CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(nm) \
142     CALIB_MODULE_RELATIVE_OFFSET(CamCalibDbV2ContextIsp32_t, nm)
143 
144 #if defined(ISP_HW_V32) || defined(ISP_HW_V32_LITE)
145 static calibdb_ctx_member_offset_info_t info_CamCalibDbV2ContextIsp32_t[] = {
146     {"ae_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(ae_calib)},
147     {"wb_v32", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(wb_v32)},
148     {"ablcV32_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(ablcV32_calib)},
149     {"adegamma_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(adegamma_calib)},
150 #if defined(ISP_HW_V32)
151     {"agic_calib_v21", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(agic_calib_v21)},
152 #endif
153 #if RKAIQ_HAVE_DEBAYER_V2_LITE
154     {"debayer_v2_lite", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(debayer_v2_lite)},
155 #endif
156 #if RKAIQ_HAVE_DEBAYER_V2
157     {"debayer_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(debayer_v2)},
158 #endif
159     {"colorAsGrey", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(colorAsGrey)},
160     {"ccm_calib_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(ccm_calib_v2)},
161     {"lut3d_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(lut3d_calib)},
162     {"aldch", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(aldch)},
163     {"adpcc_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(adpcc_calib)},
164     {"ie", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(ie)},
165 #if RKAIQ_HAVE_ASD_V10
166     {"cpsl", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(cpsl)},
167 #endif
168     {"cproc", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(cproc)},
169     {"amerge_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(amerge_calib_v12)},
170 #if RKAIQ_HAVE_DRC_V12
171     {"adrc_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(adrc_calib_v12)},
172 #endif
173 #if RKAIQ_HAVE_DRC_V12_LITE
174     {"adrc_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(adrc_calib_v12_lite)},
175 #endif
176     {"agamma_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(agamma_calib_v11)},
177     {"adehaze_calib", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(adehaze_calib_v12)},
178     {"lsc_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(lsc_v2)},
179     {"ynr_v22", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(ynr_v22)},
180     {"cnr_v30", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(cnr_v30)},
181     {"sharp_v33", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(sharp_v33)},
182 #if (RKAIQ_HAVE_BAYER2DNR_V23)
183     {"bayer2dnr_v23", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(bayer2dnr_v23)},
184 #endif
185     {"bayertnr_v23", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(bayertnr_v23)},
186 #if defined(ISP_HW_V32)
187     {"cac_v11", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(cac_v11)},
188 #endif
189 #if defined(ISP_HW_V32)
190     {"af_v31", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(af_v31)},
191 #elif defined(ISP_HW_V32_LITE)
192     {"af_v32", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(af_v32)},
193 #endif
194     {"gain_v2", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(gain_v2)},
195     {"csm", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(csm)},
196     {"cgc", CALIBV2_MODULE_RELATIVE_OFFSET_ISP32(cgc)},
197     {NULL, 0},
198 };
199 #endif
200 
201 
202 #pragma GCC diagnostic push
203 #pragma GCC diagnostic ignored "-Wunused-variable"
204 static calibdb_ctx_infos_t info_CamCalibDbV2Context_array[] = {
205 #ifdef ISP_HW_V20
206     {20, info_CamCalibDbV2ContextIsp20_t},
207 #endif
208 #ifdef ISP_HW_V21
209     {21, info_CamCalibDbV2ContextIsp21_t},
210 #endif
211 #ifdef ISP_HW_V30
212     {30, info_CamCalibDbV2ContextIsp30_t},
213 #endif
214 #if defined(ISP_HW_V32)
215     {32, info_CamCalibDbV2ContextIsp32_t},
216 #endif
217 #if defined(ISP_HW_V32_LITE)
218     {321, info_CamCalibDbV2ContextIsp32_t},
219 #endif
220 };
221 #pragma GCC diagnostic pop
222 
223 // TODO: implement ops for different isp hw
calibdbV2_scene_ctx_size(CamCalibDbContext_t * ctx)224 static inline size_t calibdbV2_scene_ctx_size(CamCalibDbContext_t* ctx) {
225     (void)(ctx);
226 #ifdef ISP_HW_V20
227     return sizeof(CamCalibDbV2ContextIsp20_t);
228 #endif
229 #ifdef ISP_HW_V21
230     return sizeof(CamCalibDbV2ContextIsp21_t);
231 #endif
232 #ifdef ISP_HW_V30
233     return sizeof(CamCalibDbV2ContextIsp30_t);
234 #endif
235 #if defined(ISP_HW_V32) || defined(ISP_HW_V32_LITE)
236     return sizeof(CamCalibDbV2ContextIsp32_t);
237 #endif
238     return 0;
239 }
240 
241 CamCalibDbV2Context_t* calibdbV2_ctx_new();
242 void calibdbV2_ctx_delete(CamCalibDbV2Context_t* ctx);
243 
calibdbv2_get_scene_ctx_struct_name(const void * scene_ctx)244 static inline const char* calibdbv2_get_scene_ctx_struct_name(const void* scene_ctx) {
245     (void)(scene_ctx);
246 #ifdef ISP_HW_V20
247     return "CamCalibDbV2ContextIsp20_t";
248 #endif
249 #ifdef ISP_HW_V21
250     return "CamCalibDbV2ContextIsp21_t";
251 #endif
252 #ifdef ISP_HW_V30
253     return "CamCalibDbV2ContextIsp30_t";
254 #endif
255 #if defined(ISP_HW_V32) || defined(ISP_HW_V32_LITE)
256     return "CamCalibDbV2ContextIsp32_t";
257 #endif
258     return NULL;
259 }
260 
261 static inline void*
calibdbv2_get_scene_ptr(CamCalibSubSceneList_t * scene)262 calibdbv2_get_scene_ptr(CamCalibSubSceneList_t* scene) {
263     (void)(scene);
264 #if defined(ISP_HW_V20)
265     if (CHECK_ISP_HW_V20())
266         return (&scene->scene_isp20);
267 #elif defined(ISP_HW_V21)
268     if (CHECK_ISP_HW_V21())
269         return (&scene->scene_isp21);
270 #elif defined(ISP_HW_V30)
271     if (CHECK_ISP_HW_V30())
272         return (&scene->scene_isp30);
273 #elif defined(ISP_HW_V32) || defined(ISP_HW_V32_LITE)
274     if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE())
275         return (&scene->scene_isp32);
276 #else
277     return NULL;
278 #endif
279     return NULL;
280 }
281 
282 static inline void*
calibdbV2_get_module_ptr(void * ctx,calibdb_ctx_infos_t * info_array,const char * module_name)283 calibdbV2_get_module_ptr(void* ctx,
284                          calibdb_ctx_infos_t* info_array,
285                          const char* module_name) {
286     if (strcmp(module_name, "sensor_calib") == 0)
287         return ((CamCalibDbV2Context_t*)ctx)->sensor_info;
288     else if(strcmp(module_name, "module_calib") == 0)
289         return ((CamCalibDbV2Context_t*)ctx)->module_info;
290     else if(strcmp(module_name, "sys_static_cfg") == 0)
291         return ((CamCalibDbV2Context_t*)ctx)->sys_cfg;
292     else
293         return calibdb_get_module_ptr(((CamCalibDbV2Context_t*)ctx)->calib_scene, info_array, module_name);
294 }
295 
calibdbV2_to_tuningdb(CamCalibDbV2Tuning_t * dst,const CamCalibDbV2Context_t * src)296 static inline int calibdbV2_to_tuningdb(CamCalibDbV2Tuning_t *dst,
297                                         const CamCalibDbV2Context_t *src) {
298     memcpy(&dst->sensor_calib, src->sensor_info, sizeof(CalibDb_Sensor_ParaV2_t));
299     memcpy(&dst->module_calib, src->module_info, sizeof(CalibDb_Module_ParaV2_t));
300     memcpy(&dst->sys_static_cfg, src->sys_cfg,
301            sizeof(CalibDb_SysStaticCfg_ParaV2_t));
302 #if defined(ISP_HW_V20)
303     memcpy(&dst->calib_scene, src->calib_scene,
304            sizeof(CamCalibDbV2ContextIsp20_t));
305 #elif defined(ISP_HW_V21)
306     memcpy(&dst->calib_scene, src->calib_scene,
307            sizeof(CamCalibDbV2ContextIsp21_t));
308 #elif defined(ISP_HW_V30)
309     memcpy(&dst->calib_scene, src->calib_scene,
310            sizeof(CamCalibDbV2ContextIsp30_t));
311 #elif defined(ISP_HW_V32) || defined(ISP_HW_V32_LITE)
312     memcpy(&dst->calib_scene, src->calib_scene,
313            sizeof(CamCalibDbV2ContextIsp32_t));
314 #else
315 #error "WRONG ISP_HW_VERSION, ONLY SUPPORT V20 AND V21 AND V30 NOW !"
316 #endif
317     return 0;
318 }
319 
calibdbV2_from_tuningdb(CamCalibDbV2Context_t * dst,const CamCalibDbV2Tuning_t * src)320 static inline int calibdbV2_from_tuningdb(CamCalibDbV2Context_t *dst,
321         const CamCalibDbV2Tuning_t *src) {
322     memcpy(dst->sensor_info, &src->sensor_calib, sizeof(CalibDb_Sensor_ParaV2_t));
323     memcpy(dst->module_info, &src->module_calib, sizeof(CalibDb_Module_ParaV2_t));
324     memcpy(dst->sys_cfg, &src->sys_static_cfg,
325            sizeof(CalibDb_SysStaticCfg_ParaV2_t));
326 #if defined(ISP_HW_V20)
327     memcpy(dst->calib_scene, &src->calib_scene,
328            sizeof(CamCalibDbV2ContextIsp20_t));
329 #elif defined(ISP_HW_V21)
330     memcpy(dst->calib_scene, &src->calib_scene,
331            sizeof(CamCalibDbV2ContextIsp21_t));
332 #elif defined(ISP_HW_V30)
333     memcpy(dst->calib_scene, &src->calib_scene,
334            sizeof(CamCalibDbV2ContextIsp30_t));
335 #elif defined(ISP_HW_V32) || defined(ISP_HW_V32_LITE)
336     memcpy(dst->calib_scene, &src->calib_scene,
337            sizeof(CamCalibDbV2ContextIsp32_t));
338 #else
339 #error "WRONG ISP_HW_VERSION, ONLY SUPPORT V20 AND V21 AND V30 NOW !"
340 #endif
341     return 0;
342 }
343 
344 #define CALIBDBV2_GET_MODULE_PTR(ctx, module) \
345         calibdbV2_get_module_ptr(ctx, info_CamCalibDbV2Context_array, #module)
346 #endif
347