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