ss928_framework/ss928sdk/include/ot_common_dis.h

108 lines
4.6 KiB
C
Raw Normal View History

2024-12-16 13:31:45 +08:00
/*
Copyright (c), 2001-2022, Shenshu Tech. Co., Ltd.
*/
#ifndef OT_COMMON_DIS_H
#define OT_COMMON_DIS_H
#include "ot_common_video.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif /* __cplusplus */
#define OT_ERR_DIS_NO_BUF OT_DEFINE_ERR(OT_ID_DIS, OT_ERR_LEVEL_ERROR, OT_ERR_NO_BUF)
#define OT_ERR_DIS_BUF_EMPTY OT_DEFINE_ERR(OT_ID_DIS, OT_ERR_LEVEL_ERROR, OT_ERR_BUF_EMPTY)
#define OT_ERR_DIS_NULL_PTR OT_DEFINE_ERR(OT_ID_DIS, OT_ERR_LEVEL_ERROR, OT_ERR_NULL_PTR)
#define OT_ERR_DIS_ILLEGAL_PARAM OT_DEFINE_ERR(OT_ID_DIS, OT_ERR_LEVEL_ERROR, OT_ERR_ILLEGAL_PARAM)
#define OT_ERR_DIS_BUF_FULL OT_DEFINE_ERR(OT_ID_DIS, OT_ERR_LEVEL_ERROR, OT_ERR_BUF_FULL)
#define OT_ERR_DIS_SYS_NOT_READY OT_DEFINE_ERR(OT_ID_DIS, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_READY)
#define OT_ERR_DIS_NOT_SUPPORT OT_DEFINE_ERR(OT_ID_DIS, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_SUPPORT)
#define OT_ERR_DIS_NOT_PERM OT_DEFINE_ERR(OT_ID_DIS, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_PERM)
#define OT_ERR_DIS_BUSY OT_DEFINE_ERR(OT_ID_DIS, OT_ERR_LEVEL_ERROR, OT_ERR_BUSY)
#define OT_ERR_DIS_INVALID_CHN_ID OT_DEFINE_ERR(OT_ID_DIS, OT_ERR_LEVEL_ERROR, OT_ERR_INVALID_CHN_ID)
#define OT_ERR_DIS_CHN_UNEXIST OT_DEFINE_ERR(OT_ID_DIS, OT_ERR_LEVEL_ERROR, OT_ERR_UNEXIST)
/* Different mode of DIS */
typedef enum {
OT_DIS_MODE_4_DOF_GME = 0, /* Only use with GME in 4 dof. */
OT_DIS_MODE_6_DOF_GME, /* Only use with GME in 6 dof. */
OT_DIS_MODE_GYRO, /* Only use with gryo in 6 dof. */
OT_DIS_MODE_BUTT,
} ot_dis_mode;
/* The motion level of camera */
typedef enum {
OT_DIS_MOTION_LEVEL_LOW = 0, /* Low motion level. */
OT_DIS_MOTION_LEVEL_NORM, /* Normal motion level. */
OT_DIS_MOTION_LEVEL_HIGH, /* High motion level. */
OT_DIS_MOTION_LEVEL_BUTT
} ot_dis_motion_level;
/* Different product type used DIS */
typedef enum {
OT_DIS_PDT_TYPE_IPC = 0, /* IPC product type. */
OT_DIS_PDT_TYPE_DV, /* DV product type. */
OT_DIS_PDT_TYPE_DRONE, /* DRONE product type. */
OT_DIS_PDT_TYPE_BUTT
} ot_dis_pdt_type;
/* The parameter of DIS */
typedef struct {
/*
* RW; [0,100],
* 0: attenuate large motion most in advance,
* 100: never attenuate large motion;
* larger value -> better stability but more likely to crop to the border with large motion.
*/
td_u32 large_motion_stable_coef;
/*
* RW; [0,100],
* 0: never preserve the low frequency motion,
* 100: keep all the low frequency motion;
* small value -> better stability but more likely to crop to the border even with low level motion.
*/
td_u32 low_freq_motion_preserve;
/*
* RW; [0,100],
* 0: lowest cut frequency,
* 100: highest cut frequency;
* small value -> better stability but more likely to crop to the border even with large motion.
*/
td_u32 low_freq_motion_freq;
} ot_dis_param;
/* The attribute of DIS */
typedef struct {
td_bool enable; /* RW; DIS enable. */
td_bool gdc_bypass; /* RW; gdc correction process , DIS = GME&GDC correction. */
td_u32 moving_subject_level; /* RW; Range:[0,6]; Moving Subject level. */
td_s32 rolling_shutter_coef; /* RW; Range:[0,1000]; Rolling shutter coefficients. */
td_s32 timelag; /* RW; Range:[-2000000,2000000]; Timestamp delay between Gyro and Frame PTS. */
td_u32 hor_limit; /* RW; Range:[0,1000]; Parameter to limit horizontal drift by large foreground. */
td_u32 ver_limit; /* RW; Range:[0,1000]; Parameter to limit vertical drift by large foreground. */
td_bool still_crop; /* RW; The stabilization not working,but the output image still be cropped. */
td_u32 strength; /* RW; The DIS strength for different light. */
} ot_dis_attr;
/* The config of DIS */
typedef struct {
ot_dis_mode mode; /* RW; DIS Mode. */
ot_dis_motion_level motion_level; /* RW; DIS Motion level of the camera. */
ot_dis_pdt_type pdt_type; /* RW; DIS product type. */
td_u32 buf_num; /* RW; Range:[5,10]; Buf num for DIS. */
td_u32 crop_ratio; /* RW; Range:[50,98]; Crop ratio of output image. */
td_u32 frame_rate; /* RW; Frame rate. */
td_bool camera_steady; /* RW; The camera is steady or not. */
td_bool scale; /* RW; Scale output image or not. */
} ot_dis_cfg;
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */
#endif /* OT_COMMON_DIS_H */