95 lines
3.9 KiB
C
Executable File
95 lines
3.9 KiB
C
Executable File
/*
|
|
Copyright (c), 2001-2022, Shenshu Tech. Co., Ltd.
|
|
*/
|
|
|
|
#ifndef __OT_COMMON_SNAP_H__
|
|
#define __OT_COMMON_SNAP_H__
|
|
|
|
#include "ot_common.h"
|
|
#include "ot_common_video.h"
|
|
#include "ot_common_isp.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
#define OT_ERR_SNAP_INVALID_PIPE_ID OT_DEFINE_ERR(OT_ID_SNAP, OT_ERR_LEVEL_ERROR, OT_ERR_INVALID_PIPE_ID)
|
|
#define OT_ERR_SNAP_ILLEGAL_PARAM OT_DEFINE_ERR(OT_ID_SNAP, OT_ERR_LEVEL_ERROR, OT_ERR_ILLEGAL_PARAM)
|
|
#define OT_ERR_SNAP_NULL_PTR OT_DEFINE_ERR(OT_ID_SNAP, OT_ERR_LEVEL_ERROR, OT_ERR_NULL_PTR)
|
|
#define OT_ERR_SNAP_NOT_SUPPORT OT_DEFINE_ERR(OT_ID_SNAP, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_SUPPORT)
|
|
#define OT_ERR_SNAP_NOT_PERM OT_DEFINE_ERR(OT_ID_SNAP, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_PERM)
|
|
#define OT_ERR_SNAP_NO_MEM OT_DEFINE_ERR(OT_ID_SNAP, OT_ERR_LEVEL_ERROR, OT_ERR_NO_MEM)
|
|
#define OT_ERR_SNAP_NOT_READY OT_DEFINE_ERR(OT_ID_SNAP, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_READY)
|
|
|
|
typedef enum {
|
|
OT_SNAP_TYPE_NORM, /* ZSL and none-ZSL type */
|
|
OT_SNAP_TYPE_PRO, /* Professional type support HDR, AEB, LongExposure */
|
|
OT_SNAP_TYPE_BUTT
|
|
} ot_snap_type;
|
|
|
|
typedef struct {
|
|
td_u32 frame_cnt; /* RW; Set capture frame counts */
|
|
td_u32 repeat_send_times; /*
|
|
* RW; Range: [0, 3];
|
|
* When FE-BE is offline, the first raw frame that is triggered
|
|
* should be sent repeatedly to the BE.
|
|
*/
|
|
|
|
td_bool zsl_en; /* RW; statical attrs */
|
|
td_u32 frame_depth; /* RW; buffer depth: [1,8] */
|
|
td_u32 rollback_ms; /* RW; Rollback time, unit(ms), invalid when zsl_en is TD_FALSE */
|
|
td_u32 interval; /* RW; For continuous capture, select frame every intercal frames */
|
|
} ot_snap_norm_attr;
|
|
|
|
typedef struct {
|
|
td_u32 exp_time[OT_ISP_PRO_MAX_FRAME_NUM]; /*
|
|
* RW; Range: [0x0, 0xFFFFFFFF], sensor exposure time (unit: us),
|
|
* it's related to the specific sensor.
|
|
*/
|
|
|
|
td_u32 sys_gain[OT_ISP_PRO_MAX_FRAME_NUM]; /*
|
|
* RW; Range: [0x400, 0xFFFFFFFF],
|
|
* system gain (unit: times, 10bit precision),
|
|
* it's related to the specific sensor and ISP d_gain range.
|
|
*/
|
|
} ot_snap_pro_manual_param;
|
|
|
|
typedef struct {
|
|
td_u16 exp_step[OT_ISP_PRO_MAX_FRAME_NUM]; /*
|
|
* RW; Range:[0x0, 0xFFFF],
|
|
* Professional exposure step (unit: times, 8bit precision).
|
|
*/
|
|
} ot_snap_pro_auto_param;
|
|
|
|
typedef struct {
|
|
ot_op_mode op_mode;
|
|
ot_snap_pro_auto_param auto_param;
|
|
ot_snap_pro_manual_param manual_param;
|
|
} ot_snap_pro_param;
|
|
|
|
typedef struct {
|
|
td_u32 frame_cnt; /* RW; Range: [1, OT_ISP_PRO_MAX_FRAME_NUM] */
|
|
td_u32 repeat_send_times; /*
|
|
* RW; Range: [0, 3];
|
|
* When FE-BE is offline, the first raw frame that is triggered
|
|
* should be sent repeatedly to the BE.
|
|
*/
|
|
|
|
ot_snap_pro_param pro_param;
|
|
} ot_snap_pro_attr;
|
|
|
|
typedef struct {
|
|
ot_snap_type snap_type; /* snap type */
|
|
td_bool load_ccm_en; /* TD_TRUE:use CCM of snap_isp_info, TD_FALSE: Algorithm calculate */
|
|
union {
|
|
ot_snap_norm_attr norm_attr; /* AUTO: ot_snap_type:OT_SNAP_TYPE_NORM. */
|
|
ot_snap_pro_attr pro_attr; /* AUTO: ot_snap_type:OT_SNAP_TYPE_PRO. */
|
|
};
|
|
} ot_snap_attr;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* __OT_COMMON_SNAP_H__ */
|