Hi35xx启动VPSS分为几个步骤:
1. /*** 设置 Vpss Grp 属性 ***/
/*Define attributes of vpss GROUP*/
typedef struct hiVPSS_GRP_ATTR_S
{
/*statistic attributes*/
HI_U32 u32MaxW; /*MAX width of the group*/
HI_U32 u32MaxH; /*MAX height of the group*/
PIXEL_FORMAT_E enPixFmt; /*Pixel format*/
HI_BOOL bIeEn; /*Image enhance enable*/
HI_BOOL bDciEn; /*Dynamic contrast Improve enable*/
HI_BOOL bNrEn; /*Noise reduce enable*/
HI_BOOL bHistEn; /*Hist enable*/
HI_BOOL bEsEn; /*Edge smooth enable*/
VPSS_DIE_MODE_E enDieMode; /*De-interlace enable*/
}VPSS_GRP_ATTR_S;
按照VPSS_GRP_ATTR_S 这个结构体的属性设置就好了。
2./*** 创建VPSS组 ***/
HI_S32 VPSS_CreateGrp(VPSS_GRP VpssGrp, VPSS_GRP_ATTR_S *pstVpssGrpAttr)
3. /*** 设置VPSS参数 ***/
这一步先获取参数,再设置参数
HI_S32 HI_MPI_VPSS_SetGrpParam(VPSS_GRP VpssGrp, VPSS_GRP_PARAM_S *pstVpssParam);
HI_S32 HI_MPI_VPSS_GetGrpParam(VPSS_GRP VpssGrp, VPSS_GRP_PARAM_S *pstVpssParam);
4. /*** 使能VPSS通道,一个VPSS组支持4个通道 ***/
这一步需要设置VPSS通道组属性,先了解一下这通道属性结构体 VPSS_CHN_ATTR_S 和边框结构体 BORDER_S。
typedef struct hiBORDER_S
{
HI_U32 u32TopWidth; /* top border weight, in pixel*/
HI_U32 u32BottomWidth; /* bottom border weight, in pixel*/
HI_U32 u32LeftWidth; /* left border weight, in pixel*/
HI_U32 u32RightWidth; /* right border weight, in pixel*/
HI_U32 u32Color; /* border color, RGB888*/
} BORDER_S;
/*Define attributes of vpss channel*/
typedef struct hiVPSS_CHN_ATTR_S
{
HI_BOOL bSpEn; /*Sharpen enable*/
HI_BOOL bUVInvert; /* UV Invert enable*/
HI_BOOL bBorderEn; /*Frame enable*/
BORDER_S stBorder;
}VPSS_CHN_ATTR_S;
设置通道属性的函数为
HI_S32 HI_MPI_VPSS_SetChnAttr(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VPSS_CHN_ATTR_S *pstChnAttr);
5.设置通道模式
设置通道模式,需要先设置VPSS_CHN_MODE_S结构体的属性
/*Define vpss channel's work mode*/
typedef enum hiVPSS_CHN_MODE_E
{
VPSS_CHN_MODE_AUTO = 0, /*Auto mode*/
VPSS_CHN_MODE_USER /*User mode*/
}VPSS_CHN_MODE_E;
/*Define attributes of vpss channel's work mode*/
typedef struct hiVPSS_CHN_MODE_S
{
VPSS_CHN_MODE_E enChnMode; /*Vpss channel's work mode*/
HI_U32 u32Width; /*Width of target image*/
HI_U32 u32Height; /*Height of target image*/
HI_BOOL bDouble; /*Field-frame transfer, only valid for VPSS_CHN2*/
VPSS_FRAME_RATE_S stFrameRate;
ASPECT_RATIO_S stAspectRatio;
PIXEL_FORMAT_E enPixelFormat;/*Pixel format of target image*/
COMPRESS_MODE_E enCompressMode; /*Compression mode of the output*/
}VPSS_CHN_MODE_S;
设置通道模式的函数原型为
HI_S32 HI_MPI_VPSS_SetChnMode(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VPSS_CHN_MODE_S *pstVpssMode);
6. /*** 通道使能 ***/
通道使能的函数原型为
HI_S32 HI_MPI_VPSS_EnableChn(VPSS_GRP VpssGrp, VPSS_CHN s32VpssChnl);
7. /*** 启动VPSS组 ***/
启动VPSS组函数原型为
HI_S32 HI_MPI_VPSS_StartGrp(VPSS_GRP VpssGrp);