Hi35xx基础篇1----启动VPSS

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);

 

你可能感兴趣的:(海思)