xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/iq_parser_v2/mfnr_head_v1.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * mfnr_head_v1.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_MFNR_HEADER_V1_H__
21 #define __CALIBDBV2_MFNR_HEADER_V1_H__
22 
23 #include <rk_aiq_comm.h>
24 
25 RKAIQ_BEGIN_DECLARE
26 
27 ///////////////////////////mfnr//////////////////////////////////////
28 typedef struct CalibDbV2_MFNR_C_ISO_s {
29     // M4_NUMBER_MARK_DESC("iso", "f32", M4_RANGE(50, 204800), "50", M4_DIGIT(1), "index2")
30     float iso;
31 
32     // M4_ARRAY_DESC("noise_curve", "f32", M4_SIZE(1,5), M4_RANGE(-65535,65535), "[-8.4303162971622996e-013,7.9640341802261105e-009,-2.6912484620871701e-005,3.3049135399760801e-002,1.8211244079810101e+001]", M4_DIGIT(6), M4_DYNAMIC(0))
33     float noise_curve[5];
34     // M4_NUMBER_DESC("noise_curve_x00", "f32", M4_RANGE(0.0, 4095), "3647", M4_DIGIT(0))
35     float noise_curve_x00;
36     // M4_ARRAY_DESC("y_lo_noiseprofile", "f32", M4_SIZE(1,4), M4_RANGE(0,1), "[1.00000,0.68993,0.41986,0.24798]", M4_DIGIT(6), M4_DYNAMIC(0))
37     float y_lo_noiseprofile[4];
38     // M4_ARRAY_DESC("y_hi_noiseprofile", "f32", M4_SIZE(1,4), M4_RANGE(0,1), "[0.77114,0.62293,0.46145,0.00000]", M4_DIGIT(6), M4_DYNAMIC(0))
39     float y_hi_noiseprofile[4];
40     // M4_ARRAY_DESC("uv_lo_noiseprofile", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "[1.00000,0.68993,0.41986]", M4_DIGIT(6), M4_DYNAMIC(0))
41     float uv_lo_noiseprofile[3];
42     // M4_ARRAY_DESC("uv_hi_noiseprofile", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "[0.77114,0.62293,0.35740]", M4_DIGIT(6), M4_DYNAMIC(0))
43     float uv_hi_noiseprofile[3];
44 } CalibDbV2_MFNR_C_ISO_t;
45 
46 typedef struct CalibDbV2_MFNR_C_Set_s {
47     // M4_STRING_MARK_DESC("SNR_Mode", M4_SIZE(1,1), M4_RANGE(0, 64), "LSNR",M4_DYNAMIC(0), "index1")
48     char *SNR_Mode;
49     // M4_STRING_DESC("Sensor_Mode", M4_SIZE(1,1), M4_RANGE(0, 64), "lcg", M4_DYNAMIC(0))
50     char *Sensor_Mode;
51     // M4_STRUCT_LIST_DESC("Calib_ISO", M4_SIZE_DYNAMIC, "double_index_list")
52     CalibDbV2_MFNR_C_ISO_t *Calib_ISO;
53     int Calib_ISO_len;
54 } CalibDbV2_MFNR_C_Set_t;
55 
56 typedef struct CalibDbV2_MFNR_Calib_s {
57     // M4_STRUCT_LIST_DESC("Setting", M4_SIZE_DYNAMIC, "double_index_list")
58     CalibDbV2_MFNR_C_Set_t *Setting;
59     int Setting_len;
60 } CalibDbV2_MFNR_Calib_t;
61 
62 typedef struct CalibDbV2_MFNR_Luma_s {
63     // M4_ARRAY_DESC("y_lumanrpoint", "f32", M4_SIZE(1,6), M4_RANGE(0,256), "[0.0000,32.0000,64.0000,128.0000,192.0000,256.0000]", M4_DIGIT(0), M4_DYNAMIC(0))
64     float y_lumanrpoint[6];
65     // M4_ARRAY_DESC("y_lumanrcurve", "f32", M4_SIZE(1,6), M4_RANGE(0,2.0), "[1.0,1.0,1.0,1.0,1.0,1.0]", M4_DIGIT(2), M4_DYNAMIC(0))
66     float y_lumanrcurve[6];
67     // M4_ARRAY_DESC("uv_lumanrpoint", "f32", M4_SIZE(1,6), M4_RANGE(0,256), "[0.0000,32.0000,64.0000,128.0000,192.0000,256.0000]", M4_DIGIT(0), M4_DYNAMIC(0))
68     float uv_lumanrpoint[6];
69     // M4_ARRAY_DESC("uv_lumanrcurve", "f32", M4_SIZE(1,6), M4_RANGE(0,2.0), "[1.0,1.0,1.0,1.0,1.0,1.0]", M4_DIGIT(2), M4_DYNAMIC(0))
70     float uv_lumanrcurve[6];
71 } CalibDbV2_MFNR_Luma_t;
72 
73 typedef struct CalibDbV2_MFNR_Ygfdelta_s {
74     // M4_ARRAY_DESC("y_lo_lvl0_gfdelta", "f32", M4_SIZE(1,6), M4_RANGE(0,1.0), "[0.06250,0.03906,0.03906,0.03906,0.03906,0.03906]", M4_DIGIT(6), M4_DYNAMIC(0))
75     float y_lo_lvl0_gfdelta[6];
76     // M4_ARRAY_DESC("y_hi_lvl0_gfdelta", "f32", M4_SIZE(1,6), M4_RANGE(0,1.0), "[0.06250,0.03906,0.03906,0.03906,0.03906,0.03906]", M4_DIGIT(6), M4_DYNAMIC(0))
77     float y_hi_lvl0_gfdelta[6];
78     // M4_ARRAY_DESC("y_lo_lvl1_gfdelta", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
79     float y_lo_lvl1_gfdelta[3];
80     // M4_ARRAY_DESC("y_hi_lvl1_gfdelta", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
81     float y_hi_lvl1_gfdelta[3];
82     // M4_ARRAY_DESC("y_lo_lvl2_gfdelta", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
83     float y_lo_lvl2_gfdelta[3];
84     // M4_ARRAY_DESC("y_hi_lvl2_gfdelta", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
85     float y_hi_lvl2_gfdelta[3];
86     // M4_ARRAY_DESC("y_lo_lvl3_gfdelta", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
87     float y_lo_lvl3_gfdelta[3];
88     // M4_ARRAY_DESC("y_hi_lvl3_gfdelta", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
89     float y_hi_lvl3_gfdelta[3];
90 } CalibDbV2_MFNR_Ygfdelta_t;
91 
92 typedef struct CalibDbV2_MFNR_UVgfdelta_s {
93     // M4_ARRAY_DESC("uv_lo_lvl0_gfdelta", "f32", M4_SIZE(1,6), M4_RANGE(0,1.0), "[0.06250,0.03906,0.03906,0.03906,0.03906,0.03906]", M4_DIGIT(6), M4_DYNAMIC(0))
94     float uv_lo_lvl0_gfdelta[6];
95     // M4_ARRAY_DESC("uv_hi_lvl0_gfdelta", "f32", M4_SIZE(1,6), M4_RANGE(0,1.0), "[0.06250,0.03906,0.03906,0.03906,0.03906,0.03906]", M4_DIGIT(6), M4_DYNAMIC(0))
96     float uv_hi_lvl0_gfdelta[6];
97     // M4_ARRAY_DESC("uv_lo_lvl1_gfdelta", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
98     float uv_lo_lvl1_gfdelta[3];
99     // M4_ARRAY_DESC("uv_hi_lvl1_gfdelta", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
100     float uv_hi_lvl1_gfdelta[3];
101     // M4_ARRAY_DESC("uv_lo_lvl2_gfdelta", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
102     float uv_lo_lvl2_gfdelta[3];
103     // M4_ARRAY_DESC("uv_hi_lvl2_gfdelta", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
104     float uv_hi_lvl2_gfdelta[3];
105 } CalibDbV2_MFNR_UVgfdelta_t;
106 
107 typedef struct CalibDbV2_MFNR_gfsigma_s {
108     // M4_ARRAY_DESC("lvl0_gfsigma", "f32", M4_SIZE(1,6), M4_RANGE(0,1.0), "[0.06250,0.03906,0.03906,0.03906,0.03906,0.03906]", M4_DIGIT(6), M4_DYNAMIC(0))
109     float lvl0_gfsigma[6];
110     // M4_ARRAY_DESC("lvl1_gfsigma", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
111     float lvl1_gfsigma[3];
112     // M4_ARRAY_DESC("lvl2_gfsigma", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
113     float lvl2_gfsigma[3];
114     // M4_ARRAY_DESC("lvl3_gfsigma", "f32", M4_SIZE(1,3), M4_RANGE(0,1.0), "[0.12500,0.10938,0.10938]", M4_DIGIT(6), M4_DYNAMIC(0))
115     float lvl3_gfsigma[3];
116 } CalibDbV2_MFNR_gfsigma_t;
117 
118 typedef struct CalibDbV2_MFNR_T_ISO_s {
119     // M4_NUMBER_MARK_DESC("iso", "f32", M4_RANGE(50, 204800), "50", M4_DIGIT(1), "index2")
120     float iso;
121 
122     // M4_NUMBER_DESC("weight_limit_y_0", "f32", M4_RANGE(0.0, 255), "64", M4_DIGIT(0))
123     float weight_limit_y_0;
124     // M4_NUMBER_DESC("weight_limit_y_1", "f32", M4_RANGE(0.0, 255), "64", M4_DIGIT(0))
125     float weight_limit_y_1;
126     // M4_NUMBER_DESC("weight_limit_y_2", "f32", M4_RANGE(0.0, 255), "64", M4_DIGIT(0))
127     float weight_limit_y_2;
128     // M4_NUMBER_DESC("weight_limit_y_3", "f32", M4_RANGE(0.0, 255), "64", M4_DIGIT(0))
129     float weight_limit_y_3;
130 
131     // M4_NUMBER_DESC("weight_limit_uv_0", "f32", M4_RANGE(0.0, 255), "64", M4_DIGIT(0))
132     float weight_limit_uv_0;
133     // M4_NUMBER_DESC("weight_limit_uv_1", "f32", M4_RANGE(0.0, 255), "64", M4_DIGIT(0))
134     float weight_limit_uv_1;
135     // M4_NUMBER_DESC("weight_limit_uv_2", "f32", M4_RANGE(0.0, 255), "64", M4_DIGIT(0))
136     float weight_limit_uv_2;
137 
138     // M4_NUMBER_DESC("ratio_frq_y_l", "f32", M4_RANGE(0.0, 7.9), "0.5", M4_DIGIT(1))
139     float ratio_frq_y_l;
140     // M4_NUMBER_DESC("ratio_frq_y_h", "f32", M4_RANGE(0.0, 7.9), "2.0", M4_DIGIT(1))
141     float ratio_frq_y_h;
142     // M4_NUMBER_DESC("ratio_frq_uv_l", "f32", M4_RANGE(0.0, 7.9), "0.5", M4_DIGIT(1))
143     float ratio_frq_uv_l;
144     // M4_NUMBER_DESC("ratio_frq_uv_h", "f32", M4_RANGE(0.0, 7.9), "2.0", M4_DIGIT(1))
145     float ratio_frq_uv_h;
146 
147     // M4_NUMBER_DESC("luma_w_in_chroma_0", "f32", M4_RANGE(0.0, 1.0), "1.0", M4_DIGIT(2))
148     float luma_w_in_chroma_0;
149     // M4_NUMBER_DESC("luma_w_in_chroma_1", "f32", M4_RANGE(0.0, 1.0), "1.0", M4_DIGIT(2))
150     float luma_w_in_chroma_1;
151     // M4_NUMBER_DESC("luma_w_in_chroma_2", "f32", M4_RANGE(0.0, 1.0), "1.0", M4_DIGIT(2))
152     float luma_w_in_chroma_2;
153 
154     // M4_NUMBER_DESC("y_lo_bfscale_0", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
155     float y_lo_bfscale_0;
156     // M4_NUMBER_DESC("y_lo_bfscale_1", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
157     float y_lo_bfscale_1;
158     // M4_NUMBER_DESC("y_lo_bfscale_2", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
159     float y_lo_bfscale_2;
160     // M4_NUMBER_DESC("y_lo_bfscale_3", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
161     float y_lo_bfscale_3;
162 
163     // M4_NUMBER_DESC("y_hi_bfscale_0", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
164     float y_hi_bfscale_0;
165     // M4_NUMBER_DESC("y_hi_bfscale_1", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
166     float y_hi_bfscale_1;
167     // M4_NUMBER_DESC("y_hi_bfscale_2", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
168     float y_hi_bfscale_2;
169     // M4_NUMBER_DESC("y_hi_bfscale_3", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
170     float y_hi_bfscale_3;
171     // M4_NUMBER_DESC("y_denoisestrength", "f32", M4_RANGE(0.0, 4.0), "1.0", M4_DIGIT(2))
172     float y_denoisestrength;
173 
174     // M4_NUMBER_DESC("uv_lo_bfscale_0", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
175     float uv_lo_bfscale_0;
176     // M4_NUMBER_DESC("uv_lo_bfscale_1", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
177     float uv_lo_bfscale_1;
178     // M4_NUMBER_DESC("uv_lo_bfscale_2", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
179     float uv_lo_bfscale_2;
180 
181     // M4_NUMBER_DESC("uv_hi_bfscale_0", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
182     float uv_hi_bfscale_0;
183     // M4_NUMBER_DESC("uv_hi_bfscale_1", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
184     float uv_hi_bfscale_1;
185     // M4_NUMBER_DESC("uv_hi_bfscale_2", "f32", M4_RANGE(0.0, 8.0), "0.5", M4_DIGIT(2))
186     float uv_hi_bfscale_2;
187     // M4_NUMBER_DESC("uv_denoisestrength", "f32", M4_RANGE(0.0, 4.0), "1.0", M4_DIGIT(2))
188     float uv_denoisestrength;
189 
190     // M4_ARRAY_TABLE_DESC("luma_para", "array_table_ui", "none")
191     CalibDbV2_MFNR_Luma_t luma_para;
192     // M4_ARRAY_TABLE_DESC("y_gfdelta_para", "array_table_ui", "none", M4_HIDE(1))
193     CalibDbV2_MFNR_Ygfdelta_t y_gfdelta_para;
194     // M4_ARRAY_TABLE_DESC("uv_gfdelta_para", "array_table_ui", "none", M4_HIDE(1))
195     CalibDbV2_MFNR_UVgfdelta_t uv_gfdelta_para;
196     // M4_ARRAY_TABLE_DESC("gfsigma_para", "array_table_ui", "none", M4_HIDE(1))
197     CalibDbV2_MFNR_gfsigma_t gfsigma_para;
198 
199 } CalibDbV2_MFNR_T_ISO_t;
200 
201 
202 typedef struct CalibDbV2_MFNR_T_Set_s {
203     // M4_STRING_MARK_DESC("SNR_Mode", M4_SIZE(1,1), M4_RANGE(0, 64), "LSNR",M4_DYNAMIC(0), "index1")
204     char *SNR_Mode;
205     // M4_STRING_DESC("Sensor_Mode", M4_SIZE(1,1), M4_RANGE(0, 64), "lcg", M4_DYNAMIC(0))
206     char *Sensor_Mode;
207     // M4_STRUCT_LIST_DESC("Tuning_ISO", M4_SIZE_DYNAMIC, "double_index_list")
208     CalibDbV2_MFNR_T_ISO_t *Tuning_ISO;
209     int Tuning_ISO_len;
210 } CalibDbV2_MFNR_T_Set_t;
211 
212 typedef struct CalibDbV2_MFNR_Dynamic_s {
213     // M4_BOOL_DESC("Enable", "1")
214     bool Enable;
215     // M4_NUMBER_DESC("LowTh_iso", "f32", M4_RANGE(0.0, 2.0), "1.0", M4_DIGIT(2))
216     float LowTh_iso;
217     // M4_NUMBER_DESC("LowTh_time", "f32", M4_RANGE(0.0, 2.0), "1.0", M4_DIGIT(2))
218     float LowTh_time;
219     // M4_NUMBER_DESC("HighTh_iso", "f32", M4_RANGE(0.0, 2.0), "1.0", M4_DIGIT(2))
220     float HighTh_iso;
221     // M4_NUMBER_DESC("HighTh_time", "f32", M4_RANGE(0.0, 2.0), "1.0", M4_DIGIT(2))
222     float HighTh_time;
223 } CalibDbV2_MFNR_Dynamic_t;
224 
225 
226 typedef struct CalibDbV2_MFNR_Motion_ISO_s {
227     // M4_NUMBER_DESC("iso", "f32", M4_RANGE(50, 204800), "50", M4_DIGIT(1))
228     float iso;
229     // M4_NUMBER_DESC("sigmaHScale", "f32", M4_RANGE(0.0, 2.0), "1.0", M4_DIGIT(2))
230     float sigmaHScale;
231     // M4_NUMBER_DESC("sigmaLScale", "f32", M4_RANGE(0.0, 2.0), "0.5", M4_DIGIT(2))
232     float sigmaLScale;
233     // M4_NUMBER_DESC("lightClp", "f32", M4_RANGE(0.0, 64), "32", M4_DIGIT(2))
234     float lightClp;
235     // M4_NUMBER_DESC("uvWeight", "f32", M4_RANGE(0.0, 1.0), "1.0", M4_DIGIT(2))
236     float uvWeight;
237     // M4_NUMBER_DESC("mfnrSigmaScale", "f32", M4_RANGE(1.0, 2.0), "1.0", M4_DIGIT(2))
238     float mfnrSigmaScale;
239     // M4_NUMBER_DESC("yuvnrGainScale0", "f32", M4_RANGE(1.0, 2.0), "1.0", M4_DIGIT(2))
240     float yuvnrGainScale0;
241     // M4_NUMBER_DESC("yuvnrGainScale1", "f32", M4_RANGE(1.0, 2.0), "1.0", M4_DIGIT(2))
242     float yuvnrGainScale1;
243     // M4_NUMBER_DESC("yuvnrGainScale2", "f32", M4_RANGE(1.0, 2.0), "1.0", M4_DIGIT(2))
244     float yuvnrGainScale2;
245     // M4_NUMBER_DESC("frame_limit_y", "f32", M4_RANGE(1.0, 255.0), "32.0", M4_DIGIT(2))
246     float frame_limit_y;
247     // M4_NUMBER_DESC("frame_limit_uv", "f32", M4_RANGE(1.0, 255.0), "32.0", M4_DIGIT(2))
248     float frame_limit_uv;
249 } CalibDbV2_MFNR_Motion_ISO_t;
250 
251 typedef struct CalibDbV2_MFNR_Motion_s {
252     // M4_STRUCT_LIST_DESC("Motion_ISO", M4_SIZE_DYNAMIC, "normal_ui_style")
253     CalibDbV2_MFNR_Motion_ISO_t *Motion_ISO;
254     int Motion_ISO_len;
255 } CalibDbV2_MFNR_Motion_t;
256 
257 
258 typedef struct CalibDbV2_MFNR_Tuning_s {
259     // M4_BOOL_DESC("enable", "1")
260     bool enable;
261     // M4_BOOL_DESC("mode_3to1", "0")
262     bool mode_3to1;
263     // M4_BOOL_DESC("local_gain_en", "1")
264     bool local_gain_en;
265     // M4_BOOL_DESC("motion_detect_en", "0")
266     bool motion_detect_en;
267 
268     // M4_STRUCT_DESC("Dynamic", "normal_ui_style")
269     CalibDbV2_MFNR_Dynamic_t Dynamic;
270     // M4_STRUCT_DESC("Motion", "normal_ui_style")
271     CalibDbV2_MFNR_Motion_t Motion;
272     // M4_STRUCT_LIST_DESC("Setting", M4_SIZE_DYNAMIC, "double_index_list")
273     CalibDbV2_MFNR_T_Set_t *Setting;
274     int Setting_len;
275 } CalibDbV2_MFNR_Tuning_t;
276 
277 
278 typedef struct CalibDbV2_MFNR_s {
279     // M4_STRING_DESC("Version", M4_SIZE(1,1), M4_RANGE(0, 64), "V1", M4_DYNAMIC(0))
280     char *Version;
281     // M4_STRUCT_DESC("CalibPara", "normal_ui_style")
282     CalibDbV2_MFNR_Calib_t CalibPara;
283     // M4_STRUCT_DESC("TuningPara", "normal_ui_style")
284     CalibDbV2_MFNR_Tuning_t TuningPara;
285 } CalibDbV2_MFNR_t;
286 
287 RKAIQ_END_DECLARE
288 
289 #endif
290 
291