123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- /******************************************************************************
- Copyright (C), 2016, Hisilicon Tech. Co., Ltd.
- ******************************************************************************
- File Name : hi_comm_gdc.h
- Version : Initial Draft
- Author : Hisilicon multimedia software group
- Created : 2016/07/15
- Last Modified :
- Description :
- Function List :
- ******************************************************************************/
- #ifndef __HI_COMM_GDC_H__
- #define __HI_COMM_GDC_H__
- #ifdef __cplusplus
- #if __cplusplus
- extern "C" {
- #endif
- #endif /* __cplusplus */
- #include "hi_type.h"
- #include "hi_common.h"
- #include "hi_errno.h"
- #include "hi_comm_video.h"
- //#define MAKE_DWORD(high,low) (((low)&0x0000ffff)|((high)<<16))
- //#define HIGH_WORD(x) (((x)&0xffff0000)>>16)
- //#define LOW_WORD(x) ((x)&0x0000ffff)
- /* failure caused by malloc buffer */
- #define HI_ERR_GDC_NOBUF HI_DEF_ERR(HI_ID_GDC, EN_ERR_LEVEL_ERROR, EN_ERR_NOBUF)
- #define HI_ERR_GDC_BUF_EMPTY HI_DEF_ERR(HI_ID_GDC, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_EMPTY)
- #define HI_ERR_GDC_NULL_PTR HI_DEF_ERR(HI_ID_GDC, EN_ERR_LEVEL_ERROR, EN_ERR_NULL_PTR)
- #define HI_ERR_GDC_ILLEGAL_PARAM HI_DEF_ERR(HI_ID_GDC, EN_ERR_LEVEL_ERROR, EN_ERR_ILLEGAL_PARAM)
- #define HI_ERR_GDC_BUF_FULL HI_DEF_ERR(HI_ID_GDC, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_FULL)
- #define HI_ERR_GDC_SYS_NOTREADY HI_DEF_ERR(HI_ID_GDC, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY)
- #define HI_ERR_GDC_NOT_SUPPORT HI_DEF_ERR(HI_ID_GDC, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_SUPPORT)
- #define HI_ERR_GDC_NOT_PERMITTED HI_DEF_ERR(HI_ID_GDC, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM)
- #define HI_ERR_GDC_BUSY HI_DEF_ERR(HI_ID_GDC, EN_ERR_LEVEL_ERROR, EN_ERR_BUSY)
- #define HI_ERR_GDC_INVALID_CHNID HI_DEF_ERR(HI_ID_GDC, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_CHNID)
- #define HI_ERR_GDC_CHN_UNEXIST HI_DEF_ERR(HI_ID_GDC, EN_ERR_LEVEL_ERROR, EN_ERR_UNEXIST)
- #define FISHEYE_MAX_REGION_NUM 4
- #define FISHEYE_LMFCOEF_NUM 128
- #define GDC_PMFCOEF_NUM 9
- typedef HI_S32 GDC_HANDLE;
- typedef struct hiGDC_TASK_ATTR_S
- {
- VIDEO_FRAME_INFO_S stImgIn; /* Input picture */
- VIDEO_FRAME_INFO_S stImgOut; /* Output picture */
- HI_U64 au64privateData[4]; /* RW; Private data of task */
- HI_U64 reserved; /* RW; Debug information,state of current picture */
- } GDC_TASK_ATTR_S;
- /* Mount mode of device*/
- typedef enum hiFISHEYE_MOUNT_MODE_E
- {
- FISHEYE_DESKTOP_MOUNT = 0, /* Desktop mount mode */
- FISHEYE_CEILING_MOUNT = 1, /* Ceiling mount mode */
- FISHEYE_WALL_MOUNT = 2, /* wall mount mode */
- FISHEYE_MOUNT_MODE_BUTT
- } FISHEYE_MOUNT_MODE_E;
- /* View mode of client*/
- typedef enum hiFISHEYE_VIEW_MODE_E
- {
- FISHEYE_VIEW_360_PANORAMA = 0, /* 360 panorama mode of gdc correction */
- FISHEYE_VIEW_180_PANORAMA = 1, /* 180 panorama mode of gdc correction */
- FISHEYE_VIEW_NORMAL = 2, /* normal mode of gdc correction */
- FISHEYE_NO_TRANSFORMATION = 3, /* no gdc correction */
- FISHEYE_VIEW_MODE_BUTT
- } FISHEYE_VIEW_MODE_E;
- /*Fisheye region correction attribute */
- typedef struct hiFISHEYE_REGION_ATTR_S
- {
- FISHEYE_VIEW_MODE_E enViewMode; /* RW; gdc view mode */
- HI_U32 u32InRadius; /* RW; inner radius of gdc correction region*/
- HI_U32 u32OutRadius; /* RW; out radius of gdc correction region*/
- HI_U32 u32Pan; /* RW; Range: [0, 360] */
- HI_U32 u32Tilt; /* RW; Range: [0, 360] */
- HI_U32 u32HorZoom; /* RW; Range: [1, 4095] */
- HI_U32 u32VerZoom; /* RW; Range: [1, 4095] */
- RECT_S stOutRect; /* RW; out Imge rectangle attribute */
- } FISHEYE_REGION_ATTR_S;
- /*Fisheye all regions correction attribute */
- typedef struct hiFISHEYE_ATTR_S
- {
- HI_BOOL bEnable; /* RW; whether enable fisheye correction or not */
- HI_BOOL bLMF; /* RW; whether gdc len's LMF coefficient is from user config or from default linear config */
- HI_BOOL bBgColor; /* RW; whether use background color or not */
- HI_U32 u32BgColor; /* RW; Range: [0,0xffffff]the background color RGB888*/
- HI_S32 s32HorOffset; /* RW; Range: [-511, 511], the horizontal offset between image center and physical center of len*/
- HI_S32 s32VerOffset; /* RW; Range: [-511, 511], the vertical offset between image center and physical center of len*/
- HI_U32 u32TrapezoidCoef; /* RW; Range: [0, 32], strength coefficient of trapezoid correction */
- HI_S32 s32FanStrength; /* RW; Range: [-760, 760], strength coefficient of fan correction */
- FISHEYE_MOUNT_MODE_E enMountMode; /* RW; gdc mount mode */
- HI_U32 u32RegionNum; /* RW; Range: [1, FISHEYE_MAX_REGION_NUM], gdc correction region number */
- FISHEYE_REGION_ATTR_S astFishEyeRegionAttr[FISHEYE_MAX_REGION_NUM]; /* RW; attribution of gdc correction region */
- } FISHEYE_ATTR_S;
- /*Spread correction attribute */
- typedef struct hiSPREAD_ATTR_S
- {
- HI_BOOL bEnable; /* RW; whether enable spread or not */
- HI_U32 u32SpreadCoef; /* RW; Range: [0, 18],strength coefficient of spread correction */
- SIZE_S stDestSize; /* RW; dest size of spread*/
- } SPREAD_ATTR_S;
- /*Fisheye Job Config */
- typedef struct hiFISHEYE_JOB_CONFIG_S
- {
- HI_U64 u64LenMapPhyAddr; /* LMF coefficient Physic Addr*/
- } FISHEYE_JOB_CONFIG_S;
- /*Fisheye Config */
- typedef struct hiFISHEYE_CONFIG_S
- {
- HI_U16 au16LMFCoef[FISHEYE_LMFCOEF_NUM]; /*RW; LMF coefficient of gdc len */
- } FISHEYE_CONFIG_S;
- /*Gdc PMF Attr */
- typedef struct hiGDC_PMF_ATTR_S
- {
- HI_S64 as64PMFCoef[GDC_PMFCOEF_NUM]; /*W; PMF coefficient of gdc */
- } GDC_PMF_ATTR_S;
- #ifdef __cplusplus
- #if __cplusplus
- }
- #endif
- #endif /* __cplusplus */
- #endif /* __HI_COMM_GDC_H__ */
|