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