xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/iq_parser_v2/sharp_head_v33.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  *
3  *  Copyright (c) 2021 Rockchip Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 #ifndef _SHARP_HEAD_V33_H_
19 #define _SHARP_HEAD_V33_H_
20 
21 #include "rk_aiq_comm.h"
22 
23 RKAIQ_BEGIN_DECLARE
24 
25 ///////////////////////////sharp//////////////////////////////////////
26 // clang-format off
27 
28 typedef struct CalibDbV2_SharpV33_Luma_t {
29     // M4_ARRAY_DESC("luma_point", "u16", M4_SIZE(1,8), M4_RANGE(0,1024), "[0, 64, 128, 256, 384, 640, 896, 1024]", M4_DIGIT(1), M4_DYNAMIC(0))
30     uint16_t luma_point[8];
31     // M4_ARRAY_DESC("luma_sigma", "u16", M4_SIZE(1,8), M4_RANGE(0,1023), "[8, 12, 16, 16, 24, 20, 16, 16]", M4_DIGIT(0), M4_DYNAMIC(0))
32     uint16_t luma_sigma[8];
33     // M4_ARRAY_DESC("hf_clip", "u16", M4_SIZE(1,8), M4_RANGE(0,1023), "[256, 256, 256, 256, 350, 512, 512, 512]", M4_DIGIT(0), M4_DYNAMIC(0))
34     uint16_t hf_clip[8];
35 } CalibDbV2_SharpV33_Luma_t;
36 
37 typedef struct CalibDbV2_SharpV33_kernel_s {
38     // M4_ARRAY_DESC("prefilter_coeff", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "[0.2042,0.1238,0.0751]", M4_DIGIT(4), M4_DYNAMIC(0))
39     float prefilter_coeff[3];
40     // M4_ARRAY_DESC("GaussianFilter_coeff", "f32", M4_SIZE(1,6), M4_RANGE(0.0,1.0), "[0.2042,0.1238,0.0751,0,0,0]", M4_DIGIT(4), M4_DYNAMIC(0))
41     float GaussianFilter_coeff[6];
42     // M4_ARRAY_DESC("hfBilateralFilter_coeff", "f32", M4_SIZE(1,3), M4_RANGE(0.0,1.0), "[0.2042,0.1238,0.0751]", M4_DIGIT(4), M4_DYNAMIC(0))
43     float hfBilateralFilter_coeff[3];
44 
45     // M4_ARRAY_DESC("GaussianFilter_coeff_0", "f32", M4_SIZE(1,6), M4_RANGE(0.0,1.0), "[0.0632,0.0558,0.0492,0.0383,0.0338,0.0232]", M4_DIGIT(4), M4_DYNAMIC(0))
46     float GaussianFilter_coeff_0[6];
47     // M4_ARRAY_DESC("GaussianFilter_coeff_1", "f32", M4_SIZE(1,6), M4_RANGE(0.0,1.0), "[0.0632,0.0558,0.0492,0.0383,0.0338,0.0232]", M4_DIGIT(4), M4_DYNAMIC(0))
48     float GaussianFilter_coeff_1[6];
49 } CalibDbV2_SharpV33_kernel_t;
50 
51 typedef struct CalibDbV2_SharpV33_Ksigma_s {
52     // M4_NUMBER_MARK_DESC("prefilter_sigma", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
53     float prefilter_sigma;
54     // M4_NUMBER_MARK_DESC("hfBilateralFilter_sigma", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
55     float hfBilateralFilter_sigma;
56     // M4_NUMBER_MARK_DESC("GaussianFilter_sigma", "f32", M4_RANGE(0.0, 100.0), "1.5", M4_DIGIT(2))
57     float GaussianFilter_sigma;
58     // M4_NUMBER_MARK_DESC("GaussianFilter_radius", "u8", M4_RANGE(1, 2), "2", M4_DIGIT(0))
59     uint8_t GaussianFilter_radius;
60 
61     // M4_NUMBER_MARK_DESC("GaussianFilter_sigma_0", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
62     float GaussianFilter_sigma_0;
63     // M4_NUMBER_MARK_DESC("GaussianFilter_sigma_1", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
64     float GaussianFilter_sigma_1;
65     // M4_NUMBER_MARK_DESC("GaussianFilter_radius_0", "u8", M4_RANGE(1, 2), "2", M4_DIGIT(0))
66     uint8_t GaussianFilter_radius_0;
67     // M4_NUMBER_MARK_DESC("GaussianFilter_radius_1", "u8", M4_RANGE(1, 2), "2", M4_DIGIT(0))
68     uint8_t GaussianFilter_radius_1;
69 
70 } CalibDbV2_SharpV33_Ksigma_t;
71 
72 typedef struct CalibDbV2_SharpV33_T_ISO_s {
73     // M4_NUMBER_MARK_DESC("iso", "f32", M4_RANGE(50, 204800), "50", M4_DIGIT(1), "index2")
74     float iso;
75     // M4_BOOL_DESC("exgain_bypass", "0")
76     bool exgain_bypass;
77     // M4_NUMBER_DESC("pbf_gain", "f32", M4_RANGE(0.0, 4.0), "0.5", M4_DIGIT(2))
78     float pbf_gain;
79     // M4_NUMBER_DESC("pbf_ratio", "f32", M4_RANGE(0.0, 1.0), "0.5", M4_DIGIT(2))
80     float pbf_ratio;
81     // M4_NUMBER_DESC("pbf_add", "f32", M4_RANGE(0.0, 1023.0), "0.0", M4_DIGIT(2))
82     float pbf_add;
83     // M4_NUMBER_DESC("gaus_ratio", "f32", M4_RANGE(0.0, 1.0), "0.0", M4_DIGIT(2))
84     float gaus_ratio;
85     // M4_NUMBER_DESC("sharp_ratio", "f32", M4_RANGE(0.0, 31.275), "8", M4_DIGIT(2))
86     float sharp_ratio;
87 
88     // M4_NUMBER_DESC("sharp_ratio_0", "f32", M4_RANGE(0.0, 31.275), "4", M4_DIGIT(2))
89     float sharp_ratio_0;
90     // M4_NUMBER_DESC("sharp_ratio_1", "f32", M4_RANGE(0.0, 31.275), "4", M4_DIGIT(2))
91     float sharp_ratio_1;
92 
93     // M4_NUMBER_DESC("bf_gain", "f32", M4_RANGE(0.0, 4.0), "0.5", M4_DIGIT(2))
94     float bf_gain;
95     // M4_NUMBER_DESC("bf_ratio", "f32", M4_RANGE(0.0, 1.0), "0.5", M4_DIGIT(2))
96     float bf_ratio;
97     // M4_NUMBER_DESC("bf_add", "f32", M4_RANGE(0.0, 1023.0), "0.0", M4_DIGIT(2))
98     float bf_add;
99     // M4_NUMBER_DESC("global_gain", "f32", M4_RANGE(0.0, 63.0), "1.0", M4_DIGIT(2))
100     float global_gain;
101     // M4_NUMBER_DESC("global_gain_alpha", "f32", M4_RANGE(0.0, 1.0), "0.0", M4_DIGIT(2))
102     float global_gain_alpha;
103     // M4_NUMBER_DESC("local_gainscale", "f32", M4_RANGE(0.0, 1.0), "0.0", M4_DIGIT(2))
104     float local_gainscale;
105     // M4_NUMBER_DESC("global_hf_clip_pos", "u8", M4_RANGE(0, 2), "0", M4_DIGIT(0))
106     uint8_t global_hf_clip_pos;
107     // M4_NUMBER_DESC("noiseclip_strength", "f32", M4_RANGE(0, 10.0), "1", M4_DIGIT(1))
108     float noiseclip_strength;
109     // M4_NUMBER_DESC("enhance_bit", "u8", M4_RANGE(0, 9), "3", M4_DIGIT(0))
110     uint8_t enhance_bit;
111     // M4_BOOL_DESC("noiseclip_mode","0")
112     bool noiseclip_mode;
113     // M4_NUMBER_DESC("noise_sigma_clip", "u16", M4_RANGE(0, 1023), "1023", M4_DIGIT(0))
114     uint16_t noise_sigma_clip;
115     // M4_ARRAY_DESC("gain_adj_sharp_strength", "f32", M4_SIZE(1,14), M4_RANGE(0.0,31.275), "[1.0]", M4_DIGIT(3), M4_DYNAMIC(0))
116     float gain_adj_sharp_strength[14];
117     // M4_ARRAY_DESC("dis_adj_sharp_strength", "f32", M4_SIZE(1,22), M4_RANGE(0.0,1.0), "[1.0]", M4_DIGIT(3), M4_DYNAMIC(0))
118     float dis_adj_sharp_strength[22];
119     // M4_ARRAY_TABLE_DESC("lumaPara", "array_table_ui", "none")
120     CalibDbV2_SharpV33_Luma_t luma_para;
121     // M4_ARRAY_TABLE_DESC("kernel_para", "array_table_ui", "none")
122     CalibDbV2_SharpV33_kernel_t kernel_para;
123     // M4_ARRAY_TABLE_DESC("kernel_sigma", "array_table_ui", "none")
124     CalibDbV2_SharpV33_Ksigma_t kernel_sigma;
125 
126 } CalibDbV2_SharpV33_T_ISO_t;
127 typedef struct CalibDbV2_SharpV33_T_Set_s {
128     // M4_STRING_MARK_DESC("SNR_Mode", M4_SIZE(1,1), M4_RANGE(0, 64), "LSNR",M4_DYNAMIC(0), "index1")
129     char* SNR_Mode;
130     // M4_STRING_DESC("Sensor_Mode", M4_SIZE(1,1), M4_RANGE(0, 64), "lcg", M4_DYNAMIC(0))
131     char* Sensor_Mode;
132     // M4_STRUCT_LIST_DESC("Tuning_ISO", M4_SIZE_DYNAMIC, "double_indx_list")
133     CalibDbV2_SharpV33_T_ISO_t* Tuning_ISO;
134     int Tuning_ISO_len;
135 } CalibDbV2_SharpV33_T_Set_t;
136 
137 typedef struct CalibDbV2_SharpV33_Tuning_s {
138     // M4_BOOL_DESC("enable", "1")
139     bool enable;
140     // M4_BOOL_DESC("sharp_ratio_seperate_en", "0")
141     bool sharp_ratio_seperate_en;
142     // M4_BOOL_DESC("kernel_sigma_enable", "0")
143     bool kernel_sigma_enable;
144     // M4_BOOL_DESC("Center_Mode", "0")
145     bool Center_Mode;
146     // M4_STRUCT_LIST_DESC("Setting", M4_SIZE_DYNAMIC, "double_index_list")
147     CalibDbV2_SharpV33_T_Set_t* Setting;
148     int Setting_len;
149 } CalibDbV2_SharpV33_Tuning_t;
150 
151 
152 typedef struct CalibDbV2_SharpV33LT_Luma_t {
153     // M4_ARRAY_DESC("luma_point", "u16", M4_SIZE(1,8), M4_RANGE(0,1024), "[0, 64, 128, 256, 384, 640, 896, 1024]", M4_DIGIT(1), M4_DYNAMIC(0))
154     uint16_t luma_point[8];
155     // M4_ARRAY_DESC("luma_sigma", "u16", M4_SIZE(1,8), M4_RANGE(0,1023), "[8, 12, 16, 16, 24, 20, 16, 16]", M4_DIGIT(0), M4_DYNAMIC(0))
156     uint16_t luma_sigma[8];
157     // M4_ARRAY_DESC("hf_clip", "u16", M4_SIZE(1,8), M4_RANGE(0,1023), "[256, 256, 256, 256, 350, 512, 512, 512]", M4_DIGIT(0), M4_DYNAMIC(0))
158     uint16_t hf_clip[8];
159     // M4_ARRAY_DESC("hf_clip_neg", "u16", M4_SIZE(1,8), M4_RANGE(0,1023), "[256, 256, 256, 256, 350, 512, 512, 512]", M4_DIGIT(0), M4_DYNAMIC(0))
160     uint16_t hf_clip_neg[8];
161     // M4_ARRAY_DESC("local_sharp_strength", "f32", M4_SIZE(1,8), M4_RANGE(0,1023), "[256, 256, 256, 256, 350, 512, 512, 512]", M4_DIGIT(1), M4_DYNAMIC(0))
162     float local_sharp_strength[8];
163 } CalibDbV2_SharpV33LT_Luma_t;
164 
165 typedef struct CalibDbV2_SharpV33LT_T_ISO_s {
166     // M4_NUMBER_MARK_DESC("iso", "f32", M4_RANGE(50, 204800), "50", M4_DIGIT(1), "index2")
167     float iso;
168     // M4_BOOL_DESC("exgain_bypass", "0")
169     bool exgain_bypass;
170 
171     // M4_BOOL_DESC("clip_hf_mode", "0")
172     bool clip_hf_mode;
173     // M4_BOOL_DESC("add_mode", "0")
174     bool add_mode;
175 
176     // M4_NUMBER_DESC("pbf_gain", "f32", M4_RANGE(0.0, 4.0), "0.5", M4_DIGIT(2))
177     float pbf_gain;
178     // M4_NUMBER_DESC("pbf_ratio", "f32", M4_RANGE(0.0, 1.0), "0.5", M4_DIGIT(2))
179     float pbf_ratio;
180     // M4_NUMBER_DESC("pbf_add", "f32", M4_RANGE(0.0, 1023.0), "0.0", M4_DIGIT(2))
181     float pbf_add;
182     // M4_NUMBER_DESC("gaus_ratio", "f32", M4_RANGE(0.0, 1.0), "0.0", M4_DIGIT(2))
183     float gaus_ratio;
184     // M4_NUMBER_DESC("sharp_ratio", "f32", M4_RANGE(0.0, 31.275), "8", M4_DIGIT(2))
185     float sharp_ratio;
186 
187     // M4_NUMBER_DESC("sharp_ratio_0", "f32", M4_RANGE(0.0, 31.275), "4", M4_DIGIT(2))
188     float sharp_ratio_0;
189     // M4_NUMBER_DESC("sharp_ratio_1", "f32", M4_RANGE(0.0, 31.275), "4", M4_DIGIT(2))
190     float sharp_ratio_1;
191 
192     // M4_NUMBER_DESC("bf_gain", "f32", M4_RANGE(0.0, 4.0), "0.5", M4_DIGIT(2))
193     float bf_gain;
194     // M4_NUMBER_DESC("bf_ratio", "f32", M4_RANGE(0.0, 1.0), "0.5", M4_DIGIT(2))
195     float bf_ratio;
196     // M4_NUMBER_DESC("bf_add", "f32", M4_RANGE(0.0, 1023.0), "0.0", M4_DIGIT(2))
197     float bf_add;
198     // M4_NUMBER_DESC("global_gain", "f32", M4_RANGE(0.0, 63.0), "1.0", M4_DIGIT(2))
199     float global_gain;
200     // M4_NUMBER_DESC("global_gain_alpha", "f32", M4_RANGE(0.0, 1.0), "0.0", M4_DIGIT(2))
201     float global_gain_alpha;
202     // M4_NUMBER_DESC("local_gainscale", "f32", M4_RANGE(0.0, 1.0), "1.0", M4_DIGIT(2))
203     float local_gainscale;
204 #if 0
205     // M4_NUMBER_DESC("global_hf_clip_pos", "u8", M4_RANGE(0, 2), "0", M4_DIGIT(0))
206     uint8_t global_hf_clip_pos;
207     // M4_NUMBER_DESC("noiseclip_strength", "f32", M4_RANGE(0, 10.0), "1", M4_DIGIT(1))
208     float noiseclip_strength;
209     // M4_NUMBER_DESC("enhance_bit", "u8", M4_RANGE(0, 9), "3", M4_DIGIT(0))
210     uint8_t enhance_bit;
211     // M4_BOOL_DESC("noiseclip_mode","0")
212     bool noiseclip_mode;
213     // M4_NUMBER_DESC("noise_sigma_clip", "u16", M4_RANGE(0, 1023), "1023", M4_DIGIT(0))
214     uint16_t noise_sigma_clip;
215 #endif
216     // M4_ARRAY_DESC("gain_adj_sharp_strength", "f32", M4_SIZE(1,14), M4_RANGE(0.0,31.275), "[1.0]", M4_DIGIT(3), M4_DYNAMIC(0))
217     float gain_adj_sharp_strength[14];
218     // M4_ARRAY_DESC("dis_adj_sharp_strength", "f32", M4_SIZE(1,22), M4_RANGE(0.0,1.0), "[1.0]", M4_DIGIT(3), M4_DYNAMIC(0))
219     float dis_adj_sharp_strength[22];
220     // M4_ARRAY_TABLE_DESC("lumaPara", "array_table_ui", "none")
221     CalibDbV2_SharpV33LT_Luma_t luma_para;
222     // M4_ARRAY_TABLE_DESC("kernel_para", "array_table_ui", "none")
223     CalibDbV2_SharpV33_kernel_t kernel_para;
224     // M4_ARRAY_TABLE_DESC("kernel_sigma", "array_table_ui", "none")
225     CalibDbV2_SharpV33_Ksigma_t kernel_sigma;
226 
227 } CalibDbV2_SharpV33LT_T_ISO_t;
228 
229 typedef struct CalibDbV2_SharpV33LT_T_Set_s {
230     // M4_STRING_MARK_DESC("SNR_Mode", M4_SIZE(1,1), M4_RANGE(0, 64), "LSNR",M4_DYNAMIC(0), "index1")
231     char* SNR_Mode;
232     // M4_STRING_DESC("Sensor_Mode", M4_SIZE(1,1), M4_RANGE(0, 64), "lcg", M4_DYNAMIC(0))
233     char* Sensor_Mode;
234     // M4_STRUCT_LIST_DESC("Tuning_ISO", M4_SIZE_DYNAMIC, "double_indx_list")
235     CalibDbV2_SharpV33LT_T_ISO_t* Tuning_ISO;
236     int Tuning_ISO_len;
237 } CalibDbV2_SharpV33LT_T_Set_t;
238 
239 typedef struct CalibDbV2_SharpV33LT_Tuning_s {
240     // M4_BOOL_DESC("enable", "1")
241     bool enable;
242     // M4_BOOL_DESC("sharp_ratio_seperate_en", "0")
243     bool sharp_ratio_seperate_en;
244     // M4_BOOL_DESC("kernel_sigma_enable", "0")
245     bool kernel_sigma_enable;
246     // M4_BOOL_DESC("Center_Mode", "0")
247     bool Center_Mode;
248     // M4_STRUCT_LIST_DESC("Setting", M4_SIZE_DYNAMIC, "double_index_list")
249     CalibDbV2_SharpV33LT_T_Set_t* Setting;
250     int Setting_len;
251 } CalibDbV2_SharpV33LT_Tuning_t;
252 
253 
254 typedef struct CalibDbV2_SharpV33_s {
255     // M4_STRING_DESC("Version", M4_SIZE(1,1), M4_RANGE(0, 64), "V33", M4_DYNAMIC(0))
256     char* Version;
257     // M4_STRUCT_DESC("TuningPara", "normal_ui_style")
258     CalibDbV2_SharpV33_Tuning_t TuningPara;
259 } CalibDbV2_SharpV33_t;
260 
261 typedef struct CalibDbV2_SharpV33Lite_s {
262     // M4_STRING_DESC("Version", M4_SIZE(1,1), M4_RANGE(0, 64), "V33", M4_DYNAMIC(0))
263     char* Version;
264     // M4_STRUCT_DESC("TuningPara", "normal_ui_style")
265     CalibDbV2_SharpV33LT_Tuning_t TuningPara;
266 } CalibDbV2_SharpV33Lite_t;
267 
268 // clang-format on
269 RKAIQ_END_DECLARE
270 
271 #endif
272