📄 ae_awb.h
字号:
} AE_METERING_DYNAMIC;
typedef enum
{
TV00020=0, TV00025, TV00030, TV00035, TV00040, TV00045, TV00050, TV00055,
TV00060, TV00070, TV00080, TV00090, TV00100, TV00110, TV00120, TV00130,
TV00140, TV00150, TV00170, TV00200, TV00240, TV00250, TV00300, TV00330,
TV00400, TV00500, TV00600, TV01000, TV01200, TV01250, TV01400, TV01600,
TV01750, TV02000, TV02500, TV03200, TV04000, TV05000, TV06400, TV08000,
TV10000, TV12000, TV14000, TV16000, TV18000, TV20000, TV_NO
}TIME_VALUE_INDEX;
typedef enum
{
AV020=0, AV028, AV035, AV040, AV045, AV050, AV056, AV063, AV071, AV080,
AV090, AV100, AV110, AV130, AV140, AV160, AV180, AV200, AV220, AV_NO
}APERTURE_VALUE_INDEX;
typedef enum
{
ISO100=0, ISO200, ISO400, ISO_NO
}ISO_VALUE_INDEX;
typedef enum
{
CAMERA_SHADING_NORMAL_SET=0,
CAMERA_SHADING_PREVIEW_COPY2_TAKE,
CAMERA_SHADING_TAKE_COPY2_PREVIEW,
CAMERA_SHADING_SET_FAIL_KEEP_NORMAL_SET,
CAMERA_SHADING_END
} camera_shading_mode_set_num;
typedef enum
{
AWB_NORMAL_FINISH = 0,
AWB_PWRON_FASTRUN,
AWB_OVER_LUM,
AWB_FEW_COUNT,
AWB_LOWER_VALUE,
AWB_FASTFLAG,
AWB_RGAIN_MAX,
AWB_BGAIN_MAX
}AWB_STATUS_INDEX;
typedef enum
{
FLASHLIGHT_NONE = 0,
FLASHLIGHT_LED_ONOFF, // LED always on/off
FLASHLIGHT_LED_CONSTANT, // CONSTANT type LED
FLASHLIGHT_LED_PEAK, // peak strobe type LED
FLASHLIGHT_XENON_PEAK // peak strobe type Xenon
} FLASHLIGHT_TYPE;
typedef struct
{
kal_uint16 value; //Tv*100000
kal_uint16 prtinfo; //1/Tv *10
}shutter_info_struct;
typedef struct
{
kal_uint8 value; //Av*10
kal_uint8 prtinfo; //Av*10
}aperture_info_struct;
typedef struct
{
shutter_info_struct tv[TV_NO];
aperture_info_struct av[AV_NO];
}tv_av_info_struct;
typedef struct
{
kal_uint16 shutter;
kal_uint16 sensorgain;
kal_uint8 ispgain;
}exposure_lut_struct;
typedef struct
{
kal_uint8 metering;
kal_uint16 tv;
kal_uint8 av;
kal_uint8 iso;
kal_uint8 flash;
}ae_operation_struct;
typedef struct
{
kal_uint8 trigger;
kal_uint8 index;
kal_uint8 mode;
kal_uint8 metering;
kal_uint8 mfdir;
kal_uint8 range;
}af_operation_struct;
typedef struct
{
kal_uint8 dscmode;
ae_operation_struct ae;
af_operation_struct af;
}dsc_operation_struct;
typedef struct
{
kal_uint32 mwb_buffer_address;
kal_uint16 mwb_image_width;
kal_uint16 mwb_image_height;
} camera_mwb_process_struct;
typedef struct
{
kal_bool ae_mode; /* QUALITY_PRIORITY, FRAME_RATE_PRIORITY */
kal_bool enable_cap_shutter_compensate; /* KAL_TRUE, KAL_FALSE */
kal_bool gain_priority; /* ISP_GAIN_PRIORITY, SENSOR_GAIN_PRIORITY */
kal_uint8 pregain_mode; /* ISP_ONLY, SENSOR_ONLY, ISP_SENSOR_BOTH */
kal_uint16 pregain_max; /* Whole Camera Pregain Upper Bound */
kal_uint16 isp_pregain_max; /* ISP Digital Pregain Upper Bound */
kal_uint16 sensor_pregain_max; /* Sensor Pregain Upper Bound */
kal_uint16 pregain_compensate_max; /* For FRAME_RATE_PRIORITY in Preview Mode */
kal_uint16 shutter_compensate_max; /* For Capture Mode Quality*/
kal_uint16 pregain_min; /* ISP driver assign, 1x gain */
kal_uint16 isp_pregain_min; /* ISP driver assign, 1x gain */
kal_uint16 sensor_pregain_min; /* ISP driver assign, 1x gain */
kal_uint8 preview_display_wait_frame; /* Wait AE stable to display fist frame image */
kal_uint8 ae_smooth_upper_bound; /* Smooth range upper bound */
kal_uint8 ae_smooth_lower_bound; /* Smooth range lower bound */
kal_uint8 ae_awb_cal_period; /* AE AWB calculation period */
kal_uint8 ae_setting_gain_delay_frame; /* The frame of setting gain */
kal_uint8 ae_setting_shut_delay_frame; /* The frame of setting shutter */
kal_uint8 ae_setting_cal_delay_frame; /* The frame of calculation */
kal_uint8 capture_delay_frame; /* wait stable frame when sensor change mode (pre to cap) */
kal_uint8 preview_delay_frame; /* wait stable frame when sensor change mode (cap to pre) */
kal_uint8 ae_lowlight_threshold; /* low light threshold of luminance for camera */
kal_uint8 ae_lowlight_off_threshold; /* low light turn off threshold of luminance for camera */
kal_uint8 ae_video_lowlight_threshold; /* low light threshold of luminance for video */
kal_uint8 ae_video_lowlight_off_threshold; /* low light turn off threshold of luminance for video */
kal_bool ae_high_banding_target_enable; /* enable/disable banding taeget (default enable) */
kal_bool flare_camera_enable; /* flare algorithm enable for camera */
kal_bool flare_video_enable; /* flare algorithm enable for video */
kal_uint8 flare_lower_bound_percentage; /* percentage of total pixel for flare lower bound */
kal_uint8 flare_upper_bound_percentage; /* percentage of total pixel for flare upper bound */
kal_uint8 flare_gain_max; /* the gain to maximize flare gain to prevent saturation earier */
kal_uint8 ae_setting_sensor_gain_delay_frame; /* The frame of setting sensor gain */
kal_bool preview_defect_table_enable; /* KAL_TRUE or KAL_FALSE */
kal_bool capture_defect_table_enable; /* KAL_TRUE or KAL_FALSE */
camera_shading_mode_set_num shading_table_mode_set; /* shading table mode set */
kal_uint8 yuv_af_timeout_frame; /* frame no of af result status checking for YUV sensor */
kal_uint8 flashlight_mode; /* FLASH_LIGHT_TYPE */
kal_uint8 flashlight_delta_main_lum; /* delta main lum@60cm / delta sub lum@60cm * 64 */
kal_uint8 extreme_CT_fixWB_enable; /*enable/disable extreme low and high color temperature to limit to A and D75*/
kal_uint8 outdoorIdx; /*AE index for outdoor condition*/
kal_uint8 outdoor_fixWB_enable; /*enable/disable outdoor fix WB*/
kal_uint16 out_Rgain; /*outdoor Rgain*/
kal_uint16 out_GRgain; /*outdoor GRgain*/
kal_uint16 out_Bgain; /*outdoor Bgain*/
kal_uint16 out_GBgain; /*outdoor GBgain*/
}camera_operation_para_struct;
extern kal_uint8 ae_range;
extern kal_uint8 expo_level;
extern kal_uint8 high_expo_level;
extern kal_uint8 low_expo_level;
extern kal_uint8 light_band;
extern kal_uint32 eShutter;
extern kal_uint32 lum[9];
extern kal_uint8 BaseShutter;
extern kal_uint32 avglum;
extern kal_uint32 histogram[5],Rhist[5],Ghist[5],Bhist[5];
extern kal_uint8 flare_offset;
extern kal_uint8 flare_gain;
extern kal_uint8 histogram_b1,histogram_b2,histogram_b3,histogram_b4,histogram_b5;
#if (defined(MT6228)||defined(MT6229)||defined(MT6230))
extern kal_uint32 ae_result[7][9];
#endif
#if (!defined(MT6219))
extern dsc_operation_struct dsc_status;
#endif
extern kal_uint16 pregain;
extern kal_uint8 isp_pregain;
extern kal_uint16 sensor_pregain;
extern kal_uint8 iris_no;
#if (defined(MT6219))
extern kal_uint16 AWB_Rgain,AWB_Ggain,AWB_Bgain;
extern kal_uint16 tmp_Rgain,tmp_Ggain,tmp_Bgain;
#else
extern kal_uint16 AWB_Rgain,AWB_GRgain,AWB_Bgain,AWB_GBgain;
extern kal_uint16 tmp_Rgain,tmp_GRgain,tmp_Bgain,tmp_GBgain;
#endif
extern kal_uint16 Rgain_max,Ggain_max,Bgain_max;
extern kal_uint16 Rgain_min,Ggain_min,Bgain_min;
extern kal_uint32 Acc_R,Acc_G,Acc_B,Acc_Cnt;
extern kal_uint8 awbEntryCnt;
extern kal_bool awbFastFlag;
extern kal_bool ae_enable_flag,awb_enable_flag;
extern camera_operation_para_struct camera_oper_data;
extern kal_uint8 ae_awb_cal_complete;
extern kal_bool ae_bypass_enable_flag; // AE bypass mode: bypass ae cal
extern kal_uint8 AE_BYPASS_INDEX;
#if (!defined(MT6219))
extern const exposure_lut_struct *AE_LUT;
extern const kal_uint8 *IRIS_LUT;
#endif
#if (!defined(MT6219))
/* DSC AE */
extern const tv_av_info_struct tv_av_info;
extern kal_bool shutter_pri_60hz_info[TV_NO];
extern kal_bool shutter_pri_50hz_info[TV_NO];
extern kal_bool aperture_pri_info[AV_NO];
extern kal_bool iso_pri_info[ISO_NO];
extern kal_uint16 iso_gain_info[ISO_NO];
extern kal_uint8 AE_INDEX, AE_INDEX_C;
#endif
/* AE AWB Main */
void init_ae_awb(void);
void ae_awb_main(void);
void ae_on_off(kal_bool flag);
void ae_select_band(kal_uint8 band);
void awb_on_off(kal_bool flag);
void awb_fast_method(kal_bool flag);
void awb_reset(void);
void get_ae_awb_info(void);
void get_histogram_info(kal_uint8 color);
void ae_bypass_mode_on_off(kal_bool flag);
kal_uint32 get_lum_info(void);
/* Auto-Exposure */
void ae_config(kal_uint16 Hsize,kal_uint16 Vsize);
void ae_proc(void);
void ae_banding_factor(void);
void ae_cal_lum(void);
void ae_compute(void);
void cal_shutter(void);
void cal_pregain(void);
void ae_set_pregain(kal_uint16 pre_gain);
void ae_set_lut_gain(void);
void ae_set_isp_pregain(void);
void ae_set_ini_shutter(kal_uint16 shutter);
void ae_select_stepperev(kal_uint8 step);
void ae_set_expovalue(kal_uint8 target);
void ae_set_shutter(kal_uint16 lines);
void init_histogram_setting (void);
kal_int8 ae_get_ev_level(void);
kal_uint8 ae_set_ev(kal_int8 level);
kal_uint8 ae_get_totalevlevel(void);
kal_uint8 ae_get_stepperev(void);
kal_uint8 ae_get_expovalue(void);
kal_uint16 ae_get_ini_shutter(void);
kal_uint16 ae_get_current_shutter(void);
kal_uint32 get_shutter_from_time(kal_uint32 time, kal_uint16 pixel_width);
#if (!defined(MT6219))
void ae_set_ini_expo_idx(kal_uint8 idx);
kal_uint8 ae_get_ini_expo_idx(void);
#endif
/* Auto-White-Balance */
void awb_config(kal_uint16 Hsize,kal_uint16 Vsize);
void awb_set_manual_gain(kal_uint8 light);
void awb_save_manual_gain(kal_uint8 light, kal_uint16 color_temp, kal_uint16 r_gain, kal_uint16 g_gain, kal_uint16 b_gain);
void awb_read_all_manual_gain(kal_uint16 manualWB[5][4]);
void awb_proc(void);
void awb_set_gain(void);
void awb_gain_max_min(void);
#if (defined(MT6228)||defined(MT6229)||defined(MT6230))
void camera_manual_wb_setting(void);
void camera_mwb_process(camera_mwb_process_struct *mwb_data);
void backup_mwb_setting(void);
void restore_mwb_setting(void);
#endif
#if (!defined(MT6219))
void flash_config(kal_uint16 delay_line,kal_uint16 duty_line);
void get_shutter_priority_info(kal_uint8 tv_index, shutter_info_struct *tv_data);
void get_aperture_priority_info(kal_uint8 av_index, aperture_info_struct *av_data);
#if (defined(EXIF_SUPPORT))
void exif_update_cam_para_struct(exif_cam_para_struct *exif_para);
#endif
#endif
#endif /* _AE_AWB_H */
#endif /* MT6219||MT6228||MT6226||MT6227||MT6229 ||MT6230*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -