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