137 lines
4.2 KiB
C
137 lines
4.2 KiB
C
/*
|
|
* Copyright (c) XMEDIA. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __XMEDIA_AF_H__
|
|
#define __XMEDIA_AF_H__
|
|
|
|
#include "xmedia_type.h"
|
|
#include "xmedia_video_common.h"
|
|
#include "xmedia_isp.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define XMEDIA_AF_SPC_GAIN_MAP_X_DIR_NUM 8
|
|
#define XMEDIA_AF_SPC_GAIN_MAP_Y_DIR_NUM 6
|
|
#define XMEDIA_AF_DCC_MAP_X_DIR_NUM 8
|
|
#define XMEDIA_AF_DCC_MAP_Y_DIR_NUM 6
|
|
|
|
typedef struct {
|
|
xmedia_bool vertical_binning_en;
|
|
xmedia_u32 vertical_binning_times; // [0, 32]
|
|
xmedia_bool xcorr_smooth_en;
|
|
xmedia_s32 xcorr_calc_upper_thd; // [-32, 32]
|
|
xmedia_s32 xcorr_calc_lower_thd; // [-32, 32]
|
|
xmedia_u32 luma_thd; // [0, 128]
|
|
xmedia_s32 phase_disparity_thd; // [0, 32]
|
|
xmedia_s32 dcc_slope_adj_coeff; // [-1024, 1024]
|
|
xmedia_s32 confidence_thd_low; // [-1024, 1024]
|
|
xmedia_s32 confidence_thd_high; // [-1024, 1024]
|
|
|
|
xmedia_bool spc_en;
|
|
xmedia_u32 left_spc_gain[XMEDIA_AF_SPC_GAIN_MAP_Y_DIR_NUM][XMEDIA_AF_SPC_GAIN_MAP_X_DIR_NUM]; // [0, 1024]
|
|
xmedia_u32 right_spc_gain[XMEDIA_AF_SPC_GAIN_MAP_Y_DIR_NUM][XMEDIA_AF_SPC_GAIN_MAP_X_DIR_NUM]; // [0, 1024]
|
|
xmedia_s32 dcc_slope[XMEDIA_AF_DCC_MAP_Y_DIR_NUM][XMEDIA_AF_DCC_MAP_X_DIR_NUM]; // [-1024, 1024]
|
|
xmedia_s32 dcc_offset[XMEDIA_AF_DCC_MAP_Y_DIR_NUM][XMEDIA_AF_DCC_MAP_X_DIR_NUM]; // [-1024, 1024]
|
|
} xmedia_af_pdaf_attr;
|
|
|
|
typedef struct {
|
|
} xmedia_af_cdaf_attr;
|
|
|
|
typedef enum {
|
|
XMEDIA_AF_TYPE_CDAF,
|
|
XMEDIA_AF_TYPE_PDAF,
|
|
XMEDIA_AF_TYPE_HYBRID,
|
|
XMEDIA_AF_TYPE_MAX,
|
|
} xmedia_af_type;
|
|
|
|
typedef struct {
|
|
xmedia_bool enable;
|
|
xmedia_af_type type;
|
|
xmedia_video_rect roi;
|
|
xmedia_u8 run_interval;
|
|
xmedia_af_pdaf_attr pdaf_attr;
|
|
xmedia_af_cdaf_attr cdaf_attr;
|
|
} xmedia_af_attr;
|
|
|
|
typedef struct {
|
|
xmedia_u64 frame_cnt;
|
|
xmedia_video_rect roi; // 实际生效的roi区域
|
|
|
|
xmedia_u32 position; // 镜头绝对位置
|
|
xmedia_s32 defocus; // 镜头移动量 unit: dac
|
|
xmedia_s32 confidence_level; // -1: CDAF only, 0: PDAF and CDAF, 1: PDAF only
|
|
xmedia_s32 phase_disparity; // unit: pixel
|
|
} xmedia_af_info;
|
|
|
|
/*
|
|
* 函数功能: 注册af库到ISP
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe无效
|
|
* XMEDIA_ERRCODE_EXIST - af库已注册
|
|
* XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 内存不足
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数无效
|
|
* XMEDIA_ERRCODE_NOT_PERMITTED - 不允许的操作
|
|
*/
|
|
xmedia_s32 xmedia_af_register(xmedia_u32 pipe);
|
|
|
|
/*
|
|
* 函数功能: 反注册af库
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe无效
|
|
* XMEDIA_ERRCODE_NOT_EXIST - 未注册af库
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数无效
|
|
* XMEDIA_ERRCODE_NOT_PERMITTED - 不允许的操作
|
|
*/
|
|
xmedia_s32 xmedia_af_unregister(xmedia_u32 pipe);
|
|
|
|
/*
|
|
* 函数功能: 设置af参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* af_attr - 输入参数,af属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数无效
|
|
*/
|
|
xmedia_s32 xmedia_af_set_attr(xmedia_u32 pipe, const xmedia_af_attr *af_attr);
|
|
|
|
/*
|
|
* 函数功能: 获取af参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* af_attr - 输出参数,af属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数无效
|
|
*/
|
|
xmedia_s32 xmedia_af_get_attr(xmedia_u32 pipe, xmedia_af_attr *af_attr);
|
|
|
|
/*
|
|
* 函数功能: 查询af信息
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* af_info - 输出参数,af信息
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数无效
|
|
*/
|
|
xmedia_s32 xmedia_af_query_info(xmedia_u32 pipe, xmedia_af_info *af_info);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // __XMEDIA_API_AF_H__
|