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