xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/iq_parser_v2/sharp_uapi_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 _CALIBDBV2_SHARP_UAPI_HEAD_V33_H_
19 #define _CALIBDBV2_SHARP_UAPI_HEAD_V33_H_
20 
21 #include "rk_aiq_comm.h"
22 
23 
24 RKAIQ_BEGIN_DECLARE
25 
26 
27 #define RK_SHARP_V33_LUMA_POINT_NUM (8)
28 
29 #define RK_SHARP_V33_PBF_DIAM                 3
30 #define RK_SHARP_V33_RF_DIAM                  5
31 #define RK_SHARP_V33_BF_DIAM                  3
32 #define RK_SHARP_V33_AVG_DIAM                 3
33 #define RK_SHARP_V33_SHARP_ADJ_GAIN_TABLE_LEN 14
34 #define RK_SHARP_V33_STRENGTH_TABLE_LEN       22
35 ///////////////////////////sharp//////////////////////////////////////
36 // clang-format off
37 
38 
39 typedef struct RK_SHARP_Params_V33_Select_s {
40     // M4_BOOL_DESC("enable", "1")
41     bool enable;
42     // M4_BOOL_DESC("sharp_ratio_seperate_en", "0")
43     bool sharp_ratio_seperate_en;
44     // M4_BOOL_DESC("kernel_sigma_enable", "1")
45     bool kernel_sigma_enable;
46     // M4_BOOL_DESC("Center_Mode", "0")
47     bool Center_Mode;
48     // M4_BOOL_DESC("exgain_bypass", "0")
49     bool exgain_bypass;
50 
51     // 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))
52     uint16_t luma_point[8];
53     // 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))
54     uint16_t luma_sigma[8];
55     // 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))
56     uint16_t hf_clip[8];
57 
58 
59     // M4_NUMBER_DESC("pbf_gain", "f32", M4_RANGE(0.0, 4.0), "0.5", M4_DIGIT(2))
60     float pbf_gain;
61     // M4_NUMBER_DESC("pbf_ratio", "f32", M4_RANGE(0.0, 1.0), "0.5", M4_DIGIT(2))
62     float pbf_ratio;
63     // M4_NUMBER_DESC("pbf_add", "f32", M4_RANGE(0.0, 1023.0), "0.0", M4_DIGIT(2))
64     float pbf_add;
65     // M4_NUMBER_DESC("gaus_ratio", "f32", M4_RANGE(0.0, 1.0), "0.0", M4_DIGIT(2))
66     float gaus_ratio;
67 
68     // M4_NUMBER_DESC("sharp_ratio", "f32", M4_RANGE(0.0, 31.275), "8", M4_DIGIT(2))
69     float sharp_ratio;
70 
71     // M4_NUMBER_DESC("sharp_ratio_0", "f32", M4_RANGE(0.0, 31.275), "4", M4_DIGIT(2))
72     float sharp_ratio_0;
73     // M4_NUMBER_DESC("sharp_ratio_1", "f32", M4_RANGE(0.0, 31.275), "4", M4_DIGIT(2))
74     float sharp_ratio_1;
75 
76     // M4_NUMBER_DESC("bf_gain", "f32", M4_RANGE(0.0, 4.0), "0.5", M4_DIGIT(2))
77     float bf_gain;
78     // M4_NUMBER_DESC("bf_ratio", "f32", M4_RANGE(0.0, 1.0), "0.5", M4_DIGIT(2))
79     float bf_ratio;
80     // M4_NUMBER_DESC("bf_add", "f32", M4_RANGE(0.0, 1023.0), "0.0", M4_DIGIT(2))
81     float bf_add;
82     // M4_NUMBER_DESC("global_gain", "f32", M4_RANGE(0.0, 63.0), "1.0", M4_DIGIT(2))
83     float global_gain;
84     // M4_NUMBER_DESC("global_gain_alpha", "f32", M4_RANGE(0.0, 1.0), "0.0", M4_DIGIT(2))
85     float global_gain_alpha;
86     // M4_NUMBER_DESC("local_gainscale", "f32", M4_RANGE(0.0, 1.0), "1.0", M4_DIGIT(2))
87     float local_gainscale;
88     // M4_NUMBER_DESC("global_hf_clip_pos", "u8", M4_RANGE(0, 2), "0", M4_DIGIT(0))
89     uint8_t global_hf_clip_pos;
90     // M4_NUMBER_DESC("noiseclip_strength", "f32", M4_RANGE(0, 10.0), "1", M4_DIGIT(1))
91     float noiseclip_strength;
92     // M4_NUMBER_DESC("enhance_bit", "u8", M4_RANGE(0, 9), "3", M4_DIGIT(0))
93     uint8_t enhance_bit;
94     // M4_BOOL_DESC("noiseclip_mode","0")
95     bool noiseclip_mode;
96     // M4_NUMBER_DESC("noise_sigma_clip", "u16", M4_RANGE(0, 1023), "1023", M4_DIGIT(0))
97     uint16_t noise_sigma_clip;
98     // 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))
99     float gain_adj_sharp_strength[14];
100     // 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))
101     float dis_adj_sharp_strength[22];
102 
103 
104 
105     // M4_NUMBER_MARK_DESC("prefilter_sigma", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
106     float prefilter_sigma;
107     // M4_NUMBER_MARK_DESC("hfBilateralFilter_sigma", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
108     float hfBilateralFilter_sigma;
109     // M4_NUMBER_MARK_DESC("GaussianFilter_sigma", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
110     float GaussianFilter_sigma;
111     // M4_NUMBER_MARK_DESC("GaussianFilter_radius", "u8", M4_RANGE(1, 2), "2", M4_DIGIT(0))
112     uint8_t GaussianFilter_radius;
113 
114     // M4_NUMBER_MARK_DESC("GaussianFilter_sigma_0", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
115     float GaussianFilter_sigma_0;
116     // M4_NUMBER_MARK_DESC("GaussianFilter_sigma_1", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
117     float GaussianFilter_sigma_1;
118     // M4_NUMBER_MARK_DESC("GaussianFilter_radius_0", "u8", M4_RANGE(1, 2), "2", M4_DIGIT(0))
119     uint8_t GaussianFilter_radius_0;
120     // M4_NUMBER_MARK_DESC("GaussianFilter_radius_1", "u8", M4_RANGE(1, 2), "2", M4_DIGIT(0))
121     uint8_t GaussianFilter_radius_1;
122 
123 
124 
125     // 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))
126     float prefilter_coeff[3];
127     // 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))
128     float GaussianFilter_coeff[6];
129     // 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))
130     float hfBilateralFilter_coeff[3];
131 
132     // 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))
133     float GaussianFilter_coeff_0[6];
134     // 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))
135     float GaussianFilter_coeff_1[6];
136 
137 } RK_SHARP_Params_V33_Select_t;
138 
139 typedef struct RK_SHARP_Params_V33LT_Select_s {
140     // M4_BOOL_DESC("enable", "1")
141     bool enable;
142     // M4_BOOL_DESC("sharp_ratio_seperate_en", "0")
143     bool sharp_ratio_seperate_en;
144     // M4_BOOL_DESC("kernel_sigma_enable", "1")
145     bool kernel_sigma_enable;
146     // M4_BOOL_DESC("Center_Mode", "0")
147     bool Center_Mode;
148     // M4_BOOL_DESC("exgain_bypass", "0")
149     bool exgain_bypass;
150 
151     // M4_BOOL_DESC("clip_hf_mode", "0")
152     bool clip_hf_mode;
153     // M4_BOOL_DESC("add_mode", "0")
154     bool add_mode;
155 
156 
157     // 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))
158     uint16_t luma_point[8];
159     // 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))
160     uint16_t luma_sigma[8];
161     // 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))
162     uint16_t hf_clip[8];
163     // 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))
164     uint16_t hf_clip_neg[8];
165     // 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))
166     float local_sharp_strength[8];
167 
168 
169     // M4_NUMBER_DESC("pbf_gain", "f32", M4_RANGE(0.0, 4.0), "0.5", M4_DIGIT(2))
170     float pbf_gain;
171     // M4_NUMBER_DESC("pbf_ratio", "f32", M4_RANGE(0.0, 1.0), "0.5", M4_DIGIT(2))
172     float pbf_ratio;
173     // M4_NUMBER_DESC("pbf_add", "f32", M4_RANGE(0.0, 1023.0), "0.0", M4_DIGIT(2))
174     float pbf_add;
175     // M4_NUMBER_DESC("gaus_ratio", "f32", M4_RANGE(0.0, 1.0), "0.0", M4_DIGIT(2))
176     float gaus_ratio;
177 
178     // M4_NUMBER_DESC("sharp_ratio", "f32", M4_RANGE(0.0, 31.275), "8", M4_DIGIT(2))
179     float sharp_ratio;
180 
181     // M4_NUMBER_DESC("sharp_ratio_0", "f32", M4_RANGE(0.0, 31.275), "4", M4_DIGIT(2))
182     float sharp_ratio_0;
183     // M4_NUMBER_DESC("sharp_ratio_1", "f32", M4_RANGE(0.0, 31.275), "4", M4_DIGIT(2))
184     float sharp_ratio_1;
185 
186     // M4_NUMBER_DESC("bf_gain", "f32", M4_RANGE(0.0, 4.0), "0.5", M4_DIGIT(2))
187     float bf_gain;
188     // M4_NUMBER_DESC("bf_ratio", "f32", M4_RANGE(0.0, 1.0), "0.5", M4_DIGIT(2))
189     float bf_ratio;
190     // M4_NUMBER_DESC("bf_add", "f32", M4_RANGE(0.0, 1023.0), "0.0", M4_DIGIT(2))
191     float bf_add;
192     // M4_NUMBER_DESC("global_gain", "f32", M4_RANGE(0.0, 63.0), "1.0", M4_DIGIT(2))
193     float global_gain;
194     // M4_NUMBER_DESC("global_gain_alpha", "f32", M4_RANGE(0.0, 1.0), "0.0", M4_DIGIT(2))
195     float global_gain_alpha;
196     // M4_NUMBER_DESC("local_gainscale", "f32", M4_RANGE(0.0, 1.0), "1.0", M4_DIGIT(2))
197     float local_gainscale;
198 #if 0
199     // M4_NUMBER_DESC("global_hf_clip_pos", "u8", M4_RANGE(0, 2), "0", M4_DIGIT(0))
200     uint8_t global_hf_clip_pos;
201     // M4_NUMBER_DESC("noiseclip_strength", "f32", M4_RANGE(0, 10.0), "1", M4_DIGIT(1))
202     float noiseclip_strength;
203     // M4_NUMBER_DESC("enhance_bit", "u8", M4_RANGE(0, 9), "3", M4_DIGIT(0))
204     uint8_t enhance_bit;
205     // M4_BOOL_DESC("noiseclip_mode","0")
206     bool noiseclip_mode;
207     // M4_NUMBER_DESC("noise_sigma_clip", "u16", M4_RANGE(0, 1023), "1023", M4_DIGIT(0))
208     uint16_t noise_sigma_clip;
209 #endif
210     // 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))
211     float gain_adj_sharp_strength[14];
212     // 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))
213     float dis_adj_sharp_strength[22];
214 
215 
216 
217     // M4_NUMBER_MARK_DESC("prefilter_sigma", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
218     float prefilter_sigma;
219     // M4_NUMBER_MARK_DESC("hfBilateralFilter_sigma", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
220     float hfBilateralFilter_sigma;
221     // M4_NUMBER_MARK_DESC("GaussianFilter_sigma", "f32", M4_RANGE(0.0, 100.0), "1.5", M4_DIGIT(2))
222     float GaussianFilter_sigma;
223     // M4_NUMBER_MARK_DESC("GaussianFilter_radius", "u8", M4_RANGE(1, 2), "2", M4_DIGIT(0))
224     uint8_t GaussianFilter_radius;
225 
226     // M4_NUMBER_MARK_DESC("GaussianFilter_sigma_0", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
227     float GaussianFilter_sigma_0;
228     // M4_NUMBER_MARK_DESC("GaussianFilter_sigma_1", "f32", M4_RANGE(0.0, 100.0), "1.0", M4_DIGIT(2))
229     float GaussianFilter_sigma_1;
230     // M4_NUMBER_MARK_DESC("GaussianFilter_radius_0", "u8", M4_RANGE(1, 2), "2", M4_DIGIT(0))
231     uint8_t GaussianFilter_radius_0;
232     // M4_NUMBER_MARK_DESC("GaussianFilter_radius_1", "u8", M4_RANGE(1, 2), "2", M4_DIGIT(0))
233     uint8_t GaussianFilter_radius_1;
234 
235     // 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))
236     float prefilter_coeff[3];
237     // 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))
238     float GaussianFilter_coeff[6];
239     // 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))
240     float hfBilateralFilter_coeff[3];
241 
242     // 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))
243     float GaussianFilter_coeff_0[6];
244     // 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))
245     float GaussianFilter_coeff_1[6];
246 
247 } RK_SHARP_Params_V33LT_Select_t;
248 
249 typedef struct Asharp_ExpInfo_V33_s {
250     // M4_NUMBER_DESC("hdr_mode", "u8", M4_RANGE(0, 2), "0", M4_DIGIT(0))
251     int hdr_mode;
252     // M4_NUMBER_DESC("snr_mode", "s8", M4_RANGE(0, 2), "0", M4_DIGIT(0))
253     int   snr_mode;
254 
255     // M4_ARRAY_DESC("time", "f32", M4_SIZE(1,3), M4_RANGE(0, 1024), "0.01", M4_DIGIT(6))
256     float arTime[3];
257     // M4_ARRAY_DESC("again", "f32", M4_SIZE(1,3), M4_RANGE(0, 204800), "1", M4_DIGIT(3))
258     float arAGain[3];
259     // M4_ARRAY_DESC("dgain", "f32", M4_SIZE(1,3), M4_RANGE(0, 204800), "1", M4_DIGIT(3))
260     float arDGain[3];
261     // M4_ARRAY_DESC("isp_dgain", "f32", M4_SIZE(1,3), M4_RANGE(0, 204800), "1", M4_DIGIT(3))
262     float isp_dgain[3];
263     // M4_NUMBER_DESC("blc_ob_predgain", "f32", M4_RANGE(0, 204800), "1", M4_DIGIT(3))
264     float blc_ob_predgain;
265     // M4_ARRAY_DESC("iso", "u32", M4_SIZE(1,3), M4_RANGE(0, 204800), "1", M4_DIGIT(0))
266     int   arIso[3];
267 
268     // M4_NUMBER_DESC("isoLevelLow", "u8", M4_RANGE(0, 12), "0", M4_DIGIT(0))
269     int isoLevelLow;
270     // M4_NUMBER_DESC("isoLevelHig", "u8", M4_RANGE(0, 12), "0", M4_DIGIT(0))
271     int isoLevelHig;
272 
273     // M4_NUMBER_DESC("rawWidth", "s32", M4_RANGE(0, 65535), "0", M4_DIGIT(0))
274     int rawWidth;
275     // M4_NUMBER_DESC("rawHeight", "s32", M4_RANGE(0, 65535), "0", M4_DIGIT(0))
276     int rawHeight;
277 
278 } Asharp_ExpInfo_V33_t;
279 
280 
281 typedef struct rk_aiq_sharp_info_v33_s {
282     // M4_ARRAY_TABLE_DESC("sync", "array_table_ui", "none", "1")
283     rk_aiq_uapi_sync_t sync;
284     // M4_NUMBER_DESC("iso", "u32", M4_RANGE(0, 204800), "50", M4_DIGIT(0), "0", "0")
285     int iso;
286     // M4_ARRAY_TABLE_DESC("expo_info", "normal_ui_style", "none", "0", "0")
287     Asharp_ExpInfo_V33_t expo_info;
288 } rk_aiq_sharp_info_v33_t;
289 
290 // clang-format on
291 RKAIQ_END_DECLARE
292 
293 #endif
294