xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/iq_parser_v2/alsc_head.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * alsc_head.h
3  *
4  *  Copyright (c) 2021 Rockchip Corporation
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19 
20 #ifndef __CALIBDBV2_ALSC_HEAD_H__
21 #define __CALIBDBV2_ALSC_HEAD_H__
22 
23 #include "rk_aiq_comm.h"
24 #include "alsc/rk_aiq_types_alsc_hw.h"
25 #include "alsc/rk_aiq_types_alsc_common.h"
26 
27 RKAIQ_BEGIN_DECLARE
28 
29 #ifndef CIFISP_LSC_SIZE_TBL_SIZE
30 #define CIFISP_LSC_SIZE_TBL_SIZE    8
31 #endif
32 #ifndef LSC_PROFILES_NUM_MAX
33 #define LSC_PROFILES_NUM_MAX        5
34 #endif
35 #ifndef LSC_SIZE_TBL_SIZE_V2X
36 #define LSC_SIZE_TBL_SIZE_V2X       8
37 #endif
38 typedef struct resolution_s {
39     char name[LSC_NAME];
40     uint32_t width;
41     uint32_t height;
42 } resolution_t;
43 
44 /**
45  * @brief illumination case in different <using case>, <resolution>, <color temperature>
46 */
47 typedef struct CalibDbV2_AlscCof_ill_s {
48     // M4_NUMBER_DESC("usedForCase", "u32", M4_RANGE(0,100), "0", M4_DIGIT(0))
49     uint32_t    usedForCase;
50     // M4_STRING_DESC("name", M4_SIZE(1,1), M4_RANGE(0, 32), "default", M4_DYNAMIC(0))
51     char        name[LSC_NAME];
52     // M4_ARRAY_DESC("wbGain", "f32", M4_SIZE(1,2), M4_RANGE(0,10000), "0", M4_DIGIT(4), M4_DYNAMIC(0))
53     float       wbGain[2];
54     // M4_STRUCT_LIST_DESC("tableUsed", M4_SIZE_DYNAMIC, "normal_ui_style")
55     lsc_name_t* tableUsed;
56     int         tableUsed_len;
57     // M4_ARRAY_DESC("gains", "f32", M4_SIZE(1,100), M4_RANGE(0,10000), "0", M4_DIGIT(4), M4_DYNAMIC(1))
58     float*      gains;
59     int         gains_len;
60     // M4_ARRAY_DESC("vig", "f32", M4_SIZE(1,100), M4_RANGE(0,100), "0", M4_DIGIT(2), M4_DYNAMIC(1))
61     float*      vig;
62     int         vig_len;
63 } CalibDbV2_AlscCof_ill_t;
64 
65 typedef struct CalibDbV2_Lsc_Resolution_s {
66     // M4_STRING_DESC("name", M4_SIZE(1,1), M4_RANGE(0, 32), "default", M4_DYNAMIC(0))
67     char        name[LSC_NAME];
68 #if defined(ISP_HW_V20) || defined(ISP_HW_V21)
69     // M4_ARRAY_DESC("lsc_sect_size_x", "u16", M4_SIZE(1,8), M4_RANGE(0,10000), "0", M4_DIGIT(0), M4_DYNAMIC(0))
70     uint16_t    lsc_sect_size_x[LSC_SIZE_TBL_SIZE_V2X];
71     // M4_ARRAY_DESC("lsc_sect_size_y", "u16", M4_SIZE(1,8), M4_RANGE(0,10000), "0", M4_DIGIT(0), M4_DYNAMIC(0))
72     uint16_t    lsc_sect_size_y[LSC_SIZE_TBL_SIZE_V2X];
73 #elif defined(ISP_HW_V30) || defined(ISP_HW_V32) || defined(ISP_HW_V32_LITE)
74     // M4_ARRAY_DESC("lsc_sect_size_x", "u16", M4_SIZE(1,16), M4_RANGE(0,10000), "0", M4_DIGIT(0), M4_DYNAMIC(0))
75     uint16_t    lsc_sect_size_x[LSC_SIZE_TBL_SIZE];
76     // M4_ARRAY_DESC("lsc_sect_size_y", "u16", M4_SIZE(1,16), M4_RANGE(0,10000), "0", M4_DIGIT(0), M4_DYNAMIC(0))
77     uint16_t    lsc_sect_size_y[LSC_SIZE_TBL_SIZE];
78 #else
79 #error "WRONG ISP_HW_VERSION, ONLY SUPPORT V20 AND V21 AND V3X NOW !"
80 #endif
81 } CalibDbV2_Lsc_Resolution_t;
82 
83 typedef struct CalibDbV2_Lsc_Common_s {
84     // M4_BOOL_DESC("enable", "1")
85     bool                            enable;
86     // M4_STRUCT_LIST_DESC("resolutionAll", M4_SIZE_DYNAMIC, "normal_ui_style")
87     CalibDbV2_Lsc_Resolution_t*     resolutionAll;
88     int                             resolutionAll_len;
89 } CalibDbV2_Lsc_Common_t;
90 
91 typedef struct CalibDbV2_AlscCof_s {
92     // M4_BOOL_DESC("damp_enable", "1")
93     bool                            damp_enable;
94     // M4_STRUCT_LIST_DESC("illAll", M4_SIZE_DYNAMIC, "normal_ui_style")
95     CalibDbV2_AlscCof_ill_t*        illAll;
96     int                             illAll_len;
97 } CalibDbV2_AlscCof_t;
98 
99 typedef struct CalibDbV2_LscTable {
100     // M4_STRUCT_LIST_DESC("tableAll", M4_SIZE_DYNAMIC, "normal_ui_style")
101     CalibDbV2_LscTableProfile_t*    tableAll;
102     int                             tableAll_len;
103 } CalibDbV2_LscTable_t;
104 
105 typedef struct CalibDb_LscV2_s {
106     // M4_STRUCT_DESC("common", "normal_ui_style")
107     CalibDbV2_Lsc_Common_t          common;
108     // M4_STRUCT_DESC("alscCoef", "normal_ui_style")
109     CalibDbV2_AlscCof_t             alscCoef;
110     // M4_STRUCT_DESC("table_list", "normal_ui_style")
111     CalibDbV2_LscTable_t            tbl;
112 } CalibDbV2_LSC_t;
113 
114 RKAIQ_END_DECLARE
115 
116 #endif
117