108 lines
4.6 KiB
C
Executable File
108 lines
4.6 KiB
C
Executable File
/*
|
|
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 */ |