/* * af_head.h * * Copyright (c) 2021 Rockchip Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ #ifndef __CALIBDBV2_AF_HEADER_H__ #define __CALIBDBV2_AF_HEADER_H__ #include "rk_aiq_comm.h" RKAIQ_BEGIN_DECLARE #define CALIBDBV2_MAX_ISO_LEVEL 13 typedef enum CalibDbV2_Af_SearchDir_s { CalibDbV2_CAM_AFM_POSITIVE_SEARCH = 0, CalibDbV2_CAM_AFM_NEGATIVE_SEARCH = 1, CalibDbV2_CAM_AFM_ADAPTIVE_SEARCH = 2 } CalibDbV2_Af_SearchDir_t; typedef enum CalibDbV2_Af_SS_s { CalibDbV2_CAM_AFM_FSS_INVALID = 0, CalibDbV2_CAM_AFM_FSS_FULLRANGE = 1, /**< scan the full focus range to find the point of best focus */ CalibDbV2_CAM_AFM_FSS_HILLCLIMBING = 2, /**< use hillclimbing search */ CalibDbV2_CAM_AFM_FSS_ADAPTIVE_RANGE = 3, /**< similar to full range search, but with multiple subsequent scans with decreasing range and step size will be performed. */ CalibDbV2_CAM_AFM_FSS_MUTIWINDOW = 4, /**< search by muti-window statistics */ CalibDbV2_CAM_AFM_FSS_MAX } CalibDbV2_Af_SS_t; typedef enum CalibDbV2_AF_MODE_s { CalibDbV2_AF_MODE_NOT_SET = -1, CalibDbV2_AF_MODE_AUTO, CalibDbV2_AF_MODE_MACRO, CalibDbV2_AF_MODE_INFINITY, CalibDbV2_AF_MODE_FIXED, CalibDbV2_AF_MODE_EDOF, CalibDbV2_AF_MODE_CONTINUOUS_VIDEO, CalibDbV2_AF_MODE_CONTINUOUS_PICTURE, CalibDbV2_AF_MODE_ONESHOT_AFTER_ZOOM, } CalibDbV2_AF_MODE_t; typedef struct CalibDbV2_Af_Contrast_s { // M4_NUMBER_DESC("Enable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0)) unsigned char enable; // M4_ENUM_DESC("SearchStrategy", "CalibDbV2_Af_SS_t", "CalibDbV2_CAM_AFM_FSS_ADAPTIVE_RANGE") CalibDbV2_Af_SS_t Afss; /**< enumeration type for search strategy */ // M4_ENUM_DESC("FullDir", "CalibDbV2_Af_SearchDir_t", "CalibDbV2_CAM_AFM_ADAPTIVE_SEARCH") CalibDbV2_Af_SearchDir_t FullDir; // M4_NUMBER_DESC("FullSteps", "u8", M4_RANGE(0, 65), "0", M4_DIGIT(0)) unsigned char FullSteps; // M4_ARRAY_DESC("FullRangeTbl", "u16", M4_SIZE(1,65), M4_RANGE(0,64), "0", M4_DIGIT(0), M4_DYNAMIC(0)) unsigned short FullRangeTbl[65]; /**< full range search table*/ // M4_ENUM_DESC("AdaptiveDir", "CalibDbV2_Af_SearchDir_t", "CalibDbV2_CAM_AFM_ADAPTIVE_SEARCH") CalibDbV2_Af_SearchDir_t AdaptiveDir; // M4_NUMBER_DESC("AdaptiveSteps", "u8", M4_RANGE(0, 65), "0", M4_DIGIT(0)) unsigned char AdaptiveSteps; // M4_ARRAY_DESC("AdaptRangeTbl", "u16", M4_SIZE(1,65), M4_RANGE(0,64), "0", M4_DIGIT(0), M4_DYNAMIC(0)) unsigned short AdaptRangeTbl[65]; /**< adaptive range search table*/ // M4_NUMBER_DESC("TrigThers", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0)) float TrigThers; /**< AF trigger threshold */ // M4_NUMBER_DESC("LumaTrigThers", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0)) float LumaTrigThers; // M4_NUMBER_DESC("StableThers", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0)) float StableThers; /**< AF stable threshold */ // M4_NUMBER_DESC("StableFrames", "u16", M4_RANGE(0,65535), "0", M4_DIGIT(0),M4_HIDE(0)) unsigned short StableFrames; /**< AF stable status must hold frames */ // M4_NUMBER_DESC("StableTime", "u16", M4_RANGE(0,65535), "0", M4_DIGIT(3),M4_HIDE(0)) unsigned short StableTime; /**< AF stable status must hold time */ // M4_NUMBER_DESC("SceneDiffEnable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0),M4_HIDE(0)) unsigned char SceneDiffEnable; // M4_NUMBER_DESC("SceneDiffThers", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0)) float SceneDiffThers; // M4_NUMBER_DESC("SceneDiffBlkThers", "u16", M4_RANGE(0,225), "0", M4_DIGIT(0),M4_HIDE(0)) unsigned short SceneDiffBlkThers; // M4_NUMBER_DESC("CenterSceneDiffThers", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0)) float CenterSceneDiffThers; // M4_NUMBER_DESC("ValidMaxMinRatio", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0)) float ValidMaxMinRatio; // M4_NUMBER_DESC("ValidValueThers", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0)) float ValidValueThers; // M4_NUMBER_DESC("OutFocusValue", "f32", M4_RANGE(0,1000000), "0", M4_DIGIT(3),M4_HIDE(0)) float OutFocusValue; /**< out of focus vlaue*/ // M4_NUMBER_DESC("OutFocusPos", "u16", M4_RANGE(0,65), "0", M4_DIGIT(0),M4_HIDE(0)) unsigned short OutFocusPos; /**< out of focus position*/ // M4_NUMBER_DESC("WeightEnable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0),M4_HIDE(0)) unsigned char WeightEnable; // M4_ARRAY_DESC("Weight", "u16", M4_SIZE(15,15), M4_RANGE(0,65535), "0", M4_DIGIT(0), M4_DYNAMIC(0)) unsigned short Weight[225]; /**< weight */ // M4_NUMBER_DESC("SearchPauseLumaEnable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0),M4_HIDE(0)) unsigned char SearchPauseLumaEnable; // M4_NUMBER_DESC("SearchPauseLumaThers", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0)) float SearchPauseLumaThers; // M4_NUMBER_DESC("StableFrames", "u16", M4_RANGE(0,65535), "0", M4_DIGIT(3),M4_HIDE(0)) unsigned short SearchLumaStableFrames; // M4_NUMBER_DESC("SearchLumaStableThers", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0)) float SearchLumaStableThers; // M4_NUMBER_DESC("FlatValue", "f32", M4_RANGE(0,65535), "0", M4_DIGIT(3),M4_HIDE(0)) float FlatValue; } CalibDbV2_Af_Contrast_t; typedef struct CalibDbV2_Af_Laser_s { // M4_NUMBER_DESC("enable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0)) unsigned char enable; // M4_ARRAY_DESC("vcmDot", "f32", M4_SIZE(1,7), M4_RANGE(0,64), "0", M4_DIGIT(0), M4_DYNAMIC(0)) float vcmDot[7]; // M4_ARRAY_DESC("distanceDot", "f32", M4_SIZE(1,7), M4_RANGE(0,65535), "0", M4_DIGIT(4), M4_DYNAMIC(0)) float distanceDot[7]; } CalibDbV2_Af_Laser_t; typedef struct CalibDbV2_Af_Pdaf_s { // M4_NUMBER_DESC("enable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0)) unsigned char enable; } CalibDbV2_Af_Pdaf_t; typedef struct CalibDbV2_Af_VcmCfg_s { // M4_NUMBER_DESC("start current", "s32", M4_RANGE(-1, 1000), "-1", M4_DIGIT(0)) int start_current; // M4_NUMBER_DESC("rated current", "s32", M4_RANGE(-1, 1000), "-1", M4_DIGIT(0)) int rated_current; // M4_NUMBER_DESC("step mode", "s32", M4_RANGE(-1, 1000), "-1", M4_DIGIT(0)) int step_mode; // M4_NUMBER_DESC("extra delay", "s32", M4_RANGE(-10000,10000), "0", M4_DIGIT(0)) int extra_delay; } CalibDbV2_Af_VcmCfg_t; typedef struct CalibDbV2_Af_MeasIsoCfg_s { // M4_NUMBER_DESC("iso", "u32", M4_RANGE(0, 1000000), "0", M4_DIGIT(0)) int iso; // M4_NUMBER_DESC("afmThres", "u16", M4_RANGE(0, 255), "4", M4_DIGIT(0)) unsigned short afmThres; // M4_ARRAY_MARK_DESC("Gamma_curve", "u16", M4_SIZE(1,17), M4_RANGE(0, 1023), "[0,45,108,179,245,344,409,459,500,567,622,676,759,833,896,962,1023]", M4_DIGIT(0), M4_DYNAMIC(0), "curve_table") unsigned short gammaY[17]; // M4_ARRAY_DESC("gaussWeight", "u8", M4_SIZE(1,3), M4_RANGE(0,128), "[16,14,14]", M4_DIGIT(0), M4_DYNAMIC(0)) unsigned char gaussWeight[3]; } CalibDbV2_Af_MeasIsoCfg_t; typedef struct CalibDbV2_Af_DefCode_s { // M4_NUMBER_DESC("code", "u8", M4_RANGE(0, 64), "0", M4_DIGIT(0)) unsigned char code; } CalibDbV2_Af_DefCode_t; typedef struct CalibDbV2_Af_ZoomFocusTbl_s { // M4_NUMBER_DESC("table length", "u32", M4_RANGE(0, 1000000), "0", M4_DIGIT(0)) int tbl_len; // M4_ARRAY_DESC("focal length", "f32", M4_SIZE(1,15), M4_RANGE(0,1000), "0", M4_DIGIT(3), M4_DYNAMIC(1)) float *focal_length; int focal_length_len; // M4_ARRAY_DESC("zoom pos", "s32", M4_SIZE(1,15), M4_RANGE(-1000000,1000000), "0", M4_DIGIT(0), M4_DYNAMIC(1)) int *zoom_pos; int zoom_pos_len; // M4_ARRAY_DESC("focus infpos", "s32", M4_SIZE(1,256), M4_RANGE(-1000000,1000000), "0", M4_DIGIT(0), M4_DYNAMIC(1)) int *focus_infpos; int focus_infpos_len; // M4_ARRAY_DESC("focus macropos", "s32", M4_SIZE(1,256), M4_RANGE(-1000000,1000000), "0", M4_DIGIT(0), M4_DYNAMIC(1)) int *focus_macropos; int focus_macropos_len; } CalibDbV2_Af_ZoomFocusTbl_t; typedef struct CalibDbV2_AF_Tuning_Para_s { // M4_ENUM_DESC("mode", "CalibDbV2_AF_MODE_t", "CalibDbV2_AF_MODE_CONTINUOUS_PICTURE") CalibDbV2_AF_MODE_t af_mode; // M4_NUMBER_DESC("win_h_offs", "u16", M4_RANGE(0,2048), "0", M4_DIGIT(0),M4_HIDE(0)) unsigned short win_h_offs; // M4_NUMBER_DESC("win_v_offs", "u16", M4_RANGE(0,2048), "0", M4_DIGIT(0),M4_HIDE(0)) unsigned short win_v_offs; // M4_NUMBER_DESC("win_h_size", "u16", M4_RANGE(0,2048), "0", M4_DIGIT(0),M4_HIDE(0)) unsigned short win_h_size; // M4_NUMBER_DESC("win_v_size", "u16", M4_RANGE(0,2048), "0", M4_DIGIT(0),M4_HIDE(0)) unsigned short win_v_size; // M4_STRUCT_DESC("fixed mode", "normal_ui_style") CalibDbV2_Af_DefCode_t fixed_mode; // M4_STRUCT_DESC("macro mode", "normal_ui_style") CalibDbV2_Af_DefCode_t macro_mode; // M4_STRUCT_DESC("infinity mode", "normal_ui_style") CalibDbV2_Af_DefCode_t infinity_mode; // M4_STRUCT_DESC("contrast af", "normal_ui_style") CalibDbV2_Af_Contrast_t contrast_af; // M4_STRUCT_DESC("laser af", "normal_ui_style") CalibDbV2_Af_Laser_t laser_af; // M4_STRUCT_DESC("pdaf", "normal_ui_style") CalibDbV2_Af_Pdaf_t pdaf; // M4_STRUCT_DESC("vcmcfg", "normal_ui_style") CalibDbV2_Af_VcmCfg_t vcmcfg; // M4_STRUCT_LIST_DESC("meas iso config", M4_SIZE(1,13), "normal_ui_style") CalibDbV2_Af_MeasIsoCfg_t measiso_cfg[CALIBDBV2_MAX_ISO_LEVEL]; // M4_STRUCT_DESC("zoomfocus_tbl", "normal_ui_style") CalibDbV2_Af_ZoomFocusTbl_t zoomfocus_tbl; } CalibDbV2_AF_Tuning_Para_t; typedef struct { // M4_STRUCT_DESC("TuningPara", "normal_ui_style") CalibDbV2_AF_Tuning_Para_t TuningPara; } CalibDbV2_AF_t; RKAIQ_END_DECLARE #endif