| /* | 
|  * 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 |