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