You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
4.6 KiB

/******************************************************************************
Copyright (C), 2013-2033, Hisilicon Tech. Co., Ltd.
******************************************************************************
File Name : hi_comm_vgs.h
Version :
Author : Hisilicon Hi35xx MPP Team
Created : 2013/07/24
Last Modified :
Description : common struct definition for VGS
Function List :
History :
******************************************************************************/
#ifndef __HI_COMM_VGS_H__
#define __HI_COMM_VGS_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"
/* failure caused by malloc buffer */
#define HI_ERR_VGS_NOBUF HI_DEF_ERR(HI_ID_VGS, EN_ERR_LEVEL_ERROR, EN_ERR_NOBUF)
#define HI_ERR_VGS_BUF_EMPTY HI_DEF_ERR(HI_ID_VGS, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_EMPTY)
#define HI_ERR_VGS_NULL_PTR HI_DEF_ERR(HI_ID_VGS, EN_ERR_LEVEL_ERROR, EN_ERR_NULL_PTR)
#define HI_ERR_VGS_ILLEGAL_PARAM HI_DEF_ERR(HI_ID_VGS, EN_ERR_LEVEL_ERROR, EN_ERR_ILLEGAL_PARAM)
#define HI_ERR_VGS_BUF_FULL HI_DEF_ERR(HI_ID_VGS, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_FULL)
#define HI_ERR_VGS_SYS_NOTREADY HI_DEF_ERR(HI_ID_VGS, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY)
#define HI_ERR_VGS_NOT_SUPPORT HI_DEF_ERR(HI_ID_VGS, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_SUPPORT)
#define HI_ERR_VGS_NOT_PERMITTED HI_DEF_ERR(HI_ID_VGS, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM)
typedef HI_S32 VGS_HANDLE;
typedef struct hiVGS_TASK_ATTR_S
{
VIDEO_FRAME_INFO_S stImgIn; /* input picture */
VIDEO_FRAME_INFO_S stImgOut; /* output picture */
HI_U32 au32privateData[4]; /* task's private data */
HI_U32 reserved; /* save current picture's state while debug */
}VGS_TASK_ATTR_S;
typedef struct hiVGS_LINE_S
{
POINT_S stStartPoint; /* line start point [-8191, 8191] */
POINT_S stEndPoint; /* line end point [-8191, 8191] */
HI_U32 u32Thick; /* width of line [0, 14] */
HI_U32 u32Color; /* color of line */
}VGS_LINE_S;
typedef enum hiVGS_COVER_TYPE_E
{
COVER_RECT = 0,
COVER_QUAD_RANGLE,
COVER_BUTT
} VGS_COVER_TYPE_E;
typedef struct hiVGS_QUADRANGLE_COVER_S
{
HI_BOOL bSolid; /* solid or hollow cover */
HI_U32 u32Thick; /* width of hollow cover */
POINT_S stPoint[4]; /* four coordinate of quadrangle */
} VGS_QUADRANGLE_COVER_S;
typedef struct hiVGS_COVER_S
{
VGS_COVER_TYPE_E enCoverType;
union
{
RECT_S stDstRect; /* config of rectrangle */
VGS_QUADRANGLE_COVER_S stQuadRangle; /* config of quadrangle */
};
HI_U32 u32Color; /* color of cover */
}VGS_COVER_S;
typedef struct hiVGS_OSD_S
{
RECT_S stRect; /* start point, width and height of osd [0, 8192] */
HI_U32 u32BgColor; /* background color of osd */
PIXEL_FORMAT_E enPixelFmt; /* pixel format of osd */
HI_U32 u32PhyAddr;
HI_U32 u32Stride;
HI_U32 u32BgAlpha;
HI_U32 u32FgAlpha;
}VGS_OSD_S;
typedef enum hiVGS_ROTATE_E
{
VGS_ROTATE_NONE = 0, /* no rotate */
VGS_ROTATE_90 = 1, /* 90 degrees clockwise */
VGS_ROTATE_180 = 2, /* 180 degrees clockwise */
VGS_ROTATE_270 = 3, /* 270 degrees clockwise */
VGS_ROTATE_BUTT
} VGS_ROTATE_E;
typedef struct HI_VGS_BORDER_S
{
HI_U32 u32Width[4]; /* width of 4 frames,0:L,1:R,2:B,3:T */
HI_U32 u32Color; /* color of 4 frames,R/G/B */
}VGS_BORDER_S;
typedef struct hiVGS_ASPECTRATIO_S
{
RECT_S stVideoRect;
HI_U32 u32CoverData;
}VGS_ASPECTRATIO_S;
typedef struct hiVGS_ONLINE_S
{
HI_BOOL bCrop; /* if enable crop */
RECT_S stCropRect;
HI_BOOL bHSharpen; /* if enable sharpen */
HI_U32 u32LumaGain;
HI_BOOL bBorder; /* if enable Border */
VGS_BORDER_S stBorderOpt;
HI_BOOL bAspectRatio; /* if enable aspect ratio */
VGS_ASPECTRATIO_S stAspectRatioOpt;
HI_BOOL bForceHFilt; /* if enable horizontal filter */
HI_BOOL bForceVFilt; /* if enable vertical filter */
HI_BOOL bDeflicker; /* if enable deflicker */
}VGS_ONLINE_S;
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */
#endif /* __HI_COMM_VGS_H__ */