6.3. API参考¶
该功能模块为用户提供以下API:
CVI_VPSS_CreateGrp:创建一个VPSS GROUP。
CVI_VPSS_DestroyGrp:销毁一个VPSS GROUP。
CVI_VPSS_GetAvailableGrp:获取一个可用的VPSS GROUP号。
CVI_VPSS_GetGrpAttr:获取VPSS GROUP属性。
CVI_VPSS_SetGrpAttr:设置VPSS GROUP属性。
CVI_VPSS_StartGrp:启用 VPSS GROUP。
CVI_VPSS_StopGrp:禁用 VPSS GROUP。
CVI_VPSS_ResetGrp:重置一个 VPSS GROUP。
CVI_VPSS_GetGrpProcAmpCtrl: 获取一个 VPSS GROUP 的颜色控制功能描述。
CVI_VPSS_GetGrpProcAmp: 获取一个 VPSS GROUP的颜色控制属性。
CVI_VPSS_SetGrpProcAmp: 设置一个 VPSS GROUP的颜色控制属性。
CVI_VPSS_GetAllProcAmp: 获取所有 VPSS GROUP的颜色控制属性。
CVI_VPSS_SetGrpParamfromBin: 根据Bin设置一个 VPSS GROUP的属性。
CVI_VPSS_SetGrpParam_fromLinuxBin: 根据linux中的Bin设置一个 VPSS GROUP的属性。
CVI_VPSS_GetBinScene: 根据Bin得到场景设定。
CVI_VPSS_GetChnAttr:获取 VPSS 通道属性。
CVI_VPSS_SetChnAttr:设置 VPSS 通道属性。
CVI_VPSS_EnableChn:启用 VPSS 通道。
CVI_VPSS_DisableChn:禁用 VPSS 通道
CVI_VPSS_SetGrpCrop:设置 VPSS GROUP CROP 功能属性。
CVI_VPSS_GetGrpCrop:获取 VPSS GROUP CROP 功能属性。
CVI_VPSS_SendFrame:用户向VPSS发送数据。
CVI_VPSS_GetChnFrame:用户从通道获取一帧处理完成的图像。
CVI_VPSS_SendChnFrame:用户向VPSS指定通道数据。
CVI_VPSS_ReleaseChnFrame:用户释放一帧通道处理完成的图像
CVI_VPSS_GetGrpFrame:用户从VPSS获得Group所属图像。
CVI_VPSS_ReleaseGrpFrame:用户释放该Group所属图像。
CVI_VPSS_SetChnCrop:设置VPSS信道裁剪功能属性。
CVI_VPSS_GetChnCrop:获取VPSS信道裁剪功能属性。
CVI_VPSS_SetChnRotation:设置 VPSS通道旋转的属性。
CVI_VPSS_GetChnRotation:获取VPSS通道图像旋转属性。
CVI_VPSS_SetChnLDCAttr:设置 VPSS 通道镜头畸变矫正的属性。
CVI_VPSS_GetChnLDCAttr:获取 VPSS 通道镜头畸变矫正的属性。
CVI_VPSS_GetChnFd:获取VPSS通道对应的设备文件句柄。
CVI_VPSS_CloseFd:关闭VPSS设备通道的文件句柄。
CVI_VPSS_AttachVbPool:将VPSS的通道绑定到某个视频缓存VB池中。
CVI_VPSS_DetachVbPool:将VPSS的通道从某个视频缓存VB池中解绑定。
CVI_VPSS_SetChnAlign:设置 VPSS 通道输出frame宽度对齐字节数。
CVI_VPSS_GetChnAlign:获取 VPSS 通道输出frame宽度对齐字节数。
CVI_VPSS_SetChnYRatio:设置 VPSS 通道图像Y分量的比率。
CVI_VPSS_GetChnYRatio:获取 VPSS 通道图像Y分量的比率。
CVI_VPSS_SetChnScaleCoefLevel:设置 VPSS 通道图像缩放算法。
CVI_VPSS_GetChnScaleCoefLevel:获取 VPSS 通道图像缩放算法。
CVI_VPSS_SetChnBufWrapAttr:设置低延时卷绕属性。
CVI_VPSS_GetChnBufWrapAttr: 获取低延时卷绕属性。
CVI_VPSS_GetWrapBufferSize: 获取所需低延时卷绕缓存大小。
CVI_VPSS_ShowChn: 显示VPSS 通道图像。
CVI_VPSS_HideChn: 隐藏VPSS 通道图像。
CVI_VPSS_GetRegionLuma: 获取指定图像区域的亮度总和。
CVI_VPSS_CreateStitch: 创建vpss stitch。
CVI_VPSS_DestroyStitch: 销毁vpss stitch。
CVI_VPSS_SetStitchAttr: 设置vpss stitch 属性。
CVI_VPSS_GetStitchAttr: 获取vpss stitch 属性。
CVI_VPSS_StartStitch: 开始vpss stitch。
CVI_VPSS_StopStitch: 停止vpss stitch。
CVI_VPSS_Suspend: vpss 休眠。
CVI_VPSS_Resume: vpss 唤醒。
6.3.1. CVI_VPSS_CreateGrp¶
【描述】
创建一个VPSS GROUP
【语法】
CVI_S32 CVI_VPSS_CreateGrp(VPSS_GRP VpssGrp, const VPSS_GRP_ATTR_S *pstGrpAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
pstGrpAttr |
VPSS GROUP 属性指针。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
使用之前要先创建 VPSS_GRP_ATTR_S
【举例】
VPSS_GRP_ATTR_S stVpssGrpAttr;
VPSS_CHN VpssChn = VPSS_CHN0;
CVI_BOOL abChnEnable[VPSS_MAX_PHY_CHN_NUM] = {0};
VPSS_CHN_ATTR_S astVpssChnAttr[VPSS_MAX_PHY_CHN_NUM];
CVI_S32 s32Ret = CVI_SUCCESS;
VPSS_CROP_INFO_S pstCropInfo;
stVpssGrpAttr.stFrameRate.s32SrcFrameRate = -1;
stVpssGrpAttr.stFrameRate.s32DstFrameRate = -1;
stVpssGrpAttr.enPixelFormat = PIXEL_FORMAT_YUV_PLANAR_420;
stVpssGrpAttr.u32MaxW = stSize.u32Width;
stVpssGrpAttr.u32MaxH = stSize.u32Height;
astVpssChnAttr[VpssChn].u32Width = 800;
astVpssChnAttr[VpssChn].u32Height = 600;
astVpssChnAttr[VpssChn].enChnMode = VPSS_CHN_MODE_USER;
astVpssChnAttr[VpssChn].enVideoFormat = VIDEO_FORMAT_LINEAR;
astVpssChnAttr[VpssChn].enPixelFormat = PIXEL_FORMAT_BGR_888_PLANAR;
astVpssChnAttr[VpssChn].stFrameRate.s32SrcFrameRate = 30;
astVpssChnAttr[VpssChn].stFrameRate.s32DstFrameRate = 30;
astVpssChnAttr[VpssChn].u32Depth = 0;
astVpssChnAttr[VpssChn].bMirror = CVI_FALSE;
astVpssChnAttr[VpssChn].bFlip = CVI_FALSE;
astVpssChnAttr[VpssChn].stAspectRatio.enMode = ASPECT_RATIO_NONE;
/*start vpss*/
VPSS_CHN VpssChn;
s32Ret = CVI_VPSS_CreateGrp(0, &stVpssGrpAttr);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("CVI_VPSS_CreateGrp failed with %#x!\n", s32Ret);
return CVI_FAILURE;
}
s32Ret = CVI_VPSS_SetChnAttr(0, 0, &astVpssChnAttr[0]);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("CVI_VPSS_SetChnAttr failed with %#x\n", s32Ret);
return CVI_FAILURE;
}
s32Ret = CVI_VPSS_EnableChn(0, 0);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("CVI_VPSS_EnableChn failed with %#x\n", s32Ret);
return CVI_FAILURE;
}
s32Ret = CVI_VPSS_StartGrp(0);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("CVI_VPSS_StartGrp failed with %#x\n", s32Ret);
return CVI_FAILURE;
}
s32Ret = CVI_VPSS_GetGrpCrop(0, &pstCropInfo);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("CVI_VPSS_ GetGrpCrop failed with %#x\n", s32Ret);
return CVI_FAILURE;
}
pstCropInfo.stCropRect.s32X = 0;
pstCropInfo.stCropRect.s32Y = 0;
pstCropInfo.stCropRect.u32Width = 600;
pstCropInfo.stCropRect.u32Height = 600;
s32Ret = CVI_VPSS_SetGrpCrop(0, &pstCropInfo);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("CVI_VPSS_ SetGrpCrop failed with %#x\n", s32Ret);
return CVI_FAILURE;
}
s32Ret = CVI_VPSS_DisableChn(0, 0);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("failed with %#x!\n", s32Ret);
return CVI_FAILURE;
}
s32Ret = CVI_VPSS_StopGrp(VpssGrp);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("failed with %#x!\n", s32Ret);
return CVI_FAILURE;
}
s32Ret = CVI_VPSS_DestroyGrp(VpssGrp);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("failed with %#x!\n", s32Ret);
return CVI_FAILURE;
}
【相关主题】
6.3.2. CVI_VPSS_DestroyGrp¶
【描述】
销毁一个VPSS GROUP
【语法】
CVI_S32 CVI_VPSS_DestroyGrp (VPSS_GRP VpssGrp);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
调用此接口之前,必须先调用CVI_VPSS_StopGrp 禁用此 GROUP
该函数会释放掉该grp下的所有vb_jobs
【举例】
【相关主题】
6.3.3. CVI_VPSS_GetAvailableGrp¶
【描述】
获取一个可用的VPSS组号。
【语法】
VPSS_GRP CVI_VPSS_GetAvailableGrp(CVI_VOID);
【参数】
无
【返回值】
返回值 |
描述 |
|---|---|
>=0 |
有效的组号。 |
-1 |
无可用的组号。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
调用此接口获取到一个有效的组号后必须要创建组。
【举例】
无
【相关主题】
6.3.4. CVI_VPSS_GetGrpAttr¶
【描述】
获取 VPSS GROUP 属性.
【语法】
CVI_S32 CVI_VPSS_GetGrpAttr (VPSS_GRP VpssGrp, VPSS_GRP_ATTR_S *pstGrpAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
pstGrpAttr |
VPSS GROUP 属性指针。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
GROUP 属性必须合法,其中部分静态属性不可动态设置,具体请参见VPSS_GRP_ATTR_S
【举例】
【相关主题】
6.3.5. CVI_VPSS_SetGrpAttr¶
【描述】
设置VPSS GROUP 属性.
【语法】
CVI_S32 CVI_VPSS_SetGrpAttr (VPSS_GRP VpssGrp, const VPSS_GRP_ATTR_S *pstGrpAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
pstGrpAttr |
VPSS GROUP 属性指针。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
GROUP 属性必须合法,其中部分静态属性不可动态设置,具体请参见VPSS_GRP_ATTR_S
【举例】
【相关主题】
6.3.6. CVI_VPSS_StartGrp¶
【描述】
启用VPSS GROUP.
【语法】
CVI_S32 CVI_VPSS_StartGrp (VPSS_GRP VpssGrp);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
重复调用该函数设置同一个组返回成功
【举例】
【相关主题】
6.3.7. CVI_VPSS_StopGrp¶
【描述】
禁用VPSS GROUP.
【语法】
CVI_S32 CVI_VPSS_StopGrp (VPSS_GRP VpssGrp);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建,不然会返回失败
重复禁用同一 VPSS GROUP 返回成功
【举例】
【相关主题】
6.3.8. CVI_VPSS_ResetGrp¶
【描述】
复位VPSS GROUP.
【语法】
CVI_S32 CVI_VPSS_ResetGrp (VPSS_GRP VpssGrp);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
【举例】
【相关主题】
6.3.9. CVI_VPSS_GetGrpProcAmpCtrl¶
【描述】
获取一个 VPSS GROUP 颜色控制功能描述.
【语法】
CVI_S32 CVI_VPSS_GetGrpProcAmpCtrl(VPSS_GRP VpssGrp, PROC_AMP_E type, PROC_AMP_CTRL_S *ctrl);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
type |
Proc Amp(颜色控制)种类 |
输入 |
ctrl |
定义ProcAmp的特定,包含min, max, step, default等 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
【举例】
PROC_AMP_CTRL_S stAmpCtrl;
CVI_S32 tmp;
if (CVI_VPSS_GetGrpProcAmp(0, PROC_AMP_BRIGHTNESS, &tmp) != CVI_SUCCESS) {
CVI_TRACE_LOG(CVI_DBG_ERR, "CVI_VPSS_GetGrpProcAmp NG on grp0!\n");
return CVI_FAILURE;
}
if (CVI_VPSS_GetGrpProcAmpCtrl(0, PROC_AMP_BRIGHTNESS, &stAmpCtrl) != CVI_SUCCESS) {
CVI_TRACE_LOG(CVI_DBG_ERR, "CVI_VPSS_GetGrpProcAmpCtrl NG on grp0!\n");
return CVI_FAILURE;
}
if (CVI_VPSS_SetGrpProcAmp(0, PROC_AMP_BRIGHTNESS, stAmpCtrl.maximum) != CVI_SUCCESS) {
CVI_TRACE_LOG(CVI_DBG_ERR, "CVI_VPSS_SetGrpProcAmp NG on grp0!\n");
return CVI_FAILURE;
}
【相关主题】
PROC_AMP_E
PROC_AMP_CTRL_S
6.3.10. CVI_VPSS_GetGrpProcAmp¶
【描述】
获取一个 VPSS GROUP的颜色控制属性.
【语法】
CVI_S32 CVI_VPSS_GetGrpProcAmp(VPSS_GRP VpssGrp, PROC_AMP_E type, CVI_S32 *value);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
type |
Proc Amp(颜色控制)种类 |
输入 |
value |
ProcAmp的设定 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
无。
【举例】
请参见 CVI_VPSS_GetGrpProcAmpCtrl
【相关主题】
PROC_AMP_E
PROC_AMP_CTRL_S
6.3.11. CVI_VPSS_SetGrpProcAmp¶
【描述】
设置一个 VPSS GROUP的颜色控制属性.
【语法】
CVI_S32 CVI_VPSS_SetGrpProcAmp(VPSS_GRP VpssGrp, PROC_AMP_E type, const CVI_S32 value);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
type |
ProcAmp(颜色控制)种类 |
输入 |
value |
ProcAmp的设定 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
无。
【举例】
请参见 CVI_VPSS_GetGrpProcAmpCtrl
【相关主题】
PROC_AMP_E
PROC_AMP_CTRL_S
6.3.12. CVI_VPSS_GetAllProcAmp¶
【描述】
设置所有 VPSS GROUP的颜色控制属性.
【语法】
CVI_S32 CVI_VPSS_GetAllProcAmp(struct vpss_all_proc_amp_cfg *cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
cfg |
颜色控制属性 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
无。
【举例】
无。
【相关主题】
vpss_all_proc_amp_cfg
6.3.13. CVI_VPSS_SetGrpParamfromBin¶
【描述】
根据Bin设置一个 VPSS GROUP的属性.
【语法】
CVI_S32 CVI_VPSS_SetGrpParamfromBin(VPSS_GRP VpssGrp, CVI_U8 scene);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
scene |
所欲套用的VPSS输入 Bin场景设定 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
若使用新的PQ bin,Group必须已经创建
若PQ bin不存在,则使用默认参数
目前仅支持套用ProcAmp(Brightness, Contrast, Hue, Saturation)的设定
【举例】
VPSS_GRP_ATTR_S stVpssGrpAttr;
VPSS_CHN VpssChn = VPSS_CHN0;
CVI_BOOL abChnEnable[VPSS_MAX_PHY_CHN_NUM] = {0};
VPSS_CHN_ATTR_S astVpssChnAttr[VPSS_MAX_PHY_CHN_NUM];
CVI_S32 s32Ret = CVI_SUCCESS;
VPSS_CROP_INFO_S pstCropInfo;
stVpssGrpAttr.stFrameRate.s32SrcFrameRate = -1;
stVpssGrpAttr.stFrameRate.s32DstFrameRate = -1;
stVpssGrpAttr.enPixelFormat = PIXEL_FORMAT_YUV_PLANAR_420;
stVpssGrpAttr.u32MaxW = stSize.u32Width;
stVpssGrpAttr.u32MaxH = stSize.u32Height;
astVpssChnAttr[VpssChn].u32Width = 800;
astVpssChnAttr[VpssChn].u32Height = 600;
astVpssChnAttr[VpssChn].enChnMode = VPSS_CHN_MODE_USER;
astVpssChnAttr[VpssChn].enVideoFormat = VIDEO_FORMAT_LINEAR;
astVpssChnAttr[VpssChn].enPixelFormat = PIXEL_FORMAT_BGR_888_PLANAR;
astVpssChnAttr[VpssChn].stFrameRate.s32SrcFrameRate = 30;
astVpssChnAttr[VpssChn].stFrameRate.s32DstFrameRate = 30;
astVpssChnAttr[VpssChn].u32Depth = 0;
astVpssChnAttr[VpssChn].bMirror = CVI_FALSE;
astVpssChnAttr[VpssChn].bFlip = CVI_FALSE;
astVpssChnAttr[VpssChn].stAspectRatio.enMode = ASPECT_RATIO_NONE;
/*start vpss*/
VPSS_CHN VpssChn;
s32Ret = CVI_VPSS_CreateGrp(0, &stVpssGrpAttr);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("CVI_VPSS_CreateGrp failed with %#x!\n", s32Ret);
return CVI_FAILURE;
}
/*vpss grp0套用场景0*/
s32Ret = CVI_VPSS_SetGrpParamfromBin(0, 0);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("CVI_VPSS_SetGrpParamfromBin failed with %#x!\n", s32Ret);
return CVI_FAILURE;
}
【相关主题】
PROC_AMP_E
PROC_AMP_CTRL_S
6.3.14. CVI_VPSS_SetGrpParam_fromLinuxBin¶
【描述】
根据linux中的Bin设置一个 VPSS GROUP的属性。
【语法】
CVI_S32 CVI_VPSS_SetGrpParam_fromLinuxBin(VPSS_GRP VpssGrp, struct vpss_proc_amp_cfg *csc_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
csc_cfg |
所欲套用的VPSS输入 Bin场景设定的相关属性 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
若使用新的PQ bin,Group必须已经创建
若PQ bin不存在,则使用默认参数
目前仅支持套用ProcAmp(Brightness, Contrast, Hue, Saturation)的设定
【举例】
请参见 CVI_VPSS_SetGrpParamfromBin
【相关主题】
vpss_proc_amp_cfg
6.3.15. CVI_VPSS_GetBinScene¶
【描述】
根据Bin得到场景设定。
【语法】
CVI_S32 CVI_VPSS_GetBinScene(VPSS_GRP VpssGrp, CVI_U8 *scene);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
scene |
Bin场景设定 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
若使用新的PQ bin,Group必须已经创建
【举例】
无
【相关主题】
无
6.3.16. CVI_VPSS_GetChnAttr¶
【描述】
获取 VPSS 通道属性.
【语法】
CVI_S32 CVI_VPSS_GetChnAttr (VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VPSS_CHN_ATTR_S *pstChnAttr)
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_PHY_CHN_NUM) |
输入 |
pstChnAttr |
VPSS 通道属性 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
【举例】
【相关主题】
6.3.17. CVI_VPSS_SetChnAttr¶
【描述】
设置 VPSS 通道属性.
【语法】
CVI_S32 CVI_VPSS_SetChnAttr (VPSS_GRP VpssGrp, VPSS_CHN VpssChn, const VPSS_CHN_ATTR_S *pstChnAttr)
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_PHY_CHN_NUM) |
输入 |
pstChnAttr |
VPSS 通道属性 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
【举例】
【相关主题】
6.3.18. CVI_VPSS_EnableChn¶
【描述】
启用 VPSS 通道.
【语法】
CVI_S32 CVI_VPSS_EnableChn(VPSS_GRP VpssGrp, VPSS_CHN VpssChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_PHY_CHN_NUM) |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
多次使能返回成功
【举例】
【相关主题】
6.3.19. CVI_VPSS_DisableChn¶
【描述】
禁用 VPSS 通道.
【语法】
CVI_S32 CVI_VPSS_DisableChn (VPSS_GRP VpssGrp, VPSS_CHN VpssChn)
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号。 取值范围:[0, VPSS_MAX_PHY_CHN_NUM)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
重复禁用返回成功
【举例】
【相关主题】
6.3.20. CVI_VPSS_SetGrpCrop¶
【描述】
设置 VPSS CROP 功能属性.
【语法】
CVI_S32 CVI_VPSS_SetGrpCrop (VPSS_GRP VpssGrp, const VPSS_CROP_INFO_S *pstCropInfo);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
pstCropInfo |
CROP 功能参数。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
CROP区域尺寸不能小于VPSS最小尺寸,不能超过最大尺寸,否则返回失败
Online不支持group裁剪
开启DIS情况下,本设置无效
【举例】
【相关主题】
6.3.21. CVI_VPSS_GetGrpCrop¶
【描述】
获取 VPSS CROP 功能属性.
【语法】
CVI_S32 CVI_VPSS_GetGrpCrop (VPSS_GRP VpssGrp, VPSS_CROP_INFO_S *pstCropInfo);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
pstCropInfo |
CROP 功能参数。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
【举例】
【相关主题】
6.3.22. CVI_VPSS_SendFrame¶
【描述】
用户向 VPSS 发送数据
【语法】
CVI_S32 CVI_VPSS_SendFrame (VPSS_GRP VpssGrp, const VIDEO_FRAME_INFO_S *pstVideoFrame,
CVI_S32 s32MilliSec);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
pstVideoFrame |
待发送的图像信息。具体描述请参见系统控制章节。 |
输入 |
s32MilliSec |
目前版本暂未用到。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建并且已经启动,不然会返回失败
【举例】
无
【相关主题】
无
6.3.23. CVI_VPSS_GetChnFrame¶
【描述】
用户从通道获取一帧处理完成的图像
【语法】
CVI_S32 CVI_VPSS_GetChnFrame(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VIDEO_FRAME_INFO_S *pstFrameInfo, CVI_S32 s32MilliSec);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
pstVideoFrame |
待发送的图像信息。具体描述请参见“系统控制”章节。 |
输出 |
s32MilliSec |
超时时间。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
该函数将获得的图像信息保存在pstvideoFrame里面,并包含了图像的虚拟地址和物理地址
【举例】
VIDEO_FRAME_INFO_S pstVideoFrame;
FILE *fp;
size_t image_size;
unsigned char ptr[image_size];
int count = 0;
CVI_VPSS_GetChnFrame(0, 0, &pstVideoFrame, 5000);
image_size = pstVideoFrame.stVFrame.u32Width * pstVideoFrame.stVFrame.u32Height * 3;
pstVideoFrame.
stVFrame.u64VirAddr[i] = CVI_SYS_Mmap(pstVideoFrame -> stVFrame .u64PhyAddr[0], image_size);
for (int i = 0; i < 3; i++) {
memcpy(&ptr[count], (const CVI_VOID *)pstVideoFrame.stVFrame.u64VirAddr[i], pstVideoFrame.stVFrame.u32Length[i]);
count += pstVideoFrame.stVFrame.u32Length[i];
}
fp = fopen("/tmp/dump.bin", "w");
if (fp == CVI_NULL) {
CVI_TRACE_VPSS(CVI_DBG_ERR, "open data file error\n");
return CVI_FAILURE;
}
fwrite(ptr, image_size, 1, fp);
fclose(fp);
CVI_SYS_Munmap(pstVideoFrame.
stVFrame.u64VirAddr[i], image_size);
if (CVI_VPSS_ReleaseChnFrame(0, 0, &pstVideoFrame) != 0)
SAMPLE_PRT("CVI_VI_ReleaseChnFrame NG\n");
【相关主题】
6.3.24. CVI_VPSS_SendChnFrame¶
【描述】
用户向VPSS指定通道数据。可藉此来达到画面拼接。
【语法】
CVI_S32 CVI_VPSS_SendChnFrame (VPSS_GRP VpssGrp, VPSS_CHN VpssChn, const VIDEO_FRAME_INFO_S *pstVideoFrame, CVI_S32 s32MilliSec);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM) |
输入 |
pstVideoFrame |
待发送的图像信息。具体 描述请参见“系统控制”章节 |
输入 |
s32MilliSec |
目前版本暂未用到 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group/Chn必须已经创建
【举例】
无
【相关主题】
无
6.3.25. CVI_VPSS_ReleaseChnFrame¶
【描述】
用户释放一帧通道处理完成的图像
【语法】
CVI_S32 CVI_VPSS_ReleaseChnFrame (VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VIDEO_FRAME_INFO_S *pstFrameInfo);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
pstVideoFrame |
待发送的图像信息。具体描述请参见“系统控制”章节。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
此接口要与 CVI_VPSS_GetChnFrame 配合使用
【举例】
【相关主题】
6.3.26. CVI_VPSS_GetGrpFrame¶
【描述】
目前该函数暂未实作
6.3.27. CVI_VPSS_ReleaseGrpFrame¶
【描述】
目前该函数暂未实作
6.3.28. CVI_VPSS_SetChnCrop¶
【描述】
设置 VPSS 信道裁剪功能属性
【语法】
CVI_S32 CVI_VPSS_SetChnCrop(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, const VPSS_CROP_INFO_S *pstCropInfo)
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入/输出 |
pstCropInfo |
待发送的图像信息。具体描述请参见“系统控制”章节。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已创建
CROP区域尺寸不能小于VPSS最小尺寸,不能超过最大尺寸,否则返回失败
该函数设置的是vpss输出通道的图像,而GrpCrop设置的是vpss输入的图像
【举例】
无
【相关主题】
6.3.29. CVI_VPSS_GetChnCrop¶
【描述】
获取 VPSS 信道裁剪功能属性
【语法】
CVI_S32 CVI_VPSS_GetChnCrop(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VPSS_CROP_INFO_S *pstCropInfo)
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
pstCropInfo |
CROP 功能参数。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
Group必须已创建
该函数获得的是vpss输出通道的图像裁剪信息,而 CVI_VPSS_GetGrpCrop 获得的是vpss输入的图像裁剪信息
【举例】
无
【相关主题】
6.3.30. CVI_VPSS_SetChnRotation¶
【描述】
设置 VPSS通道旋转的属性。
【语法】
CVI_S32 CVI_VPSS_SetChnRotation(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, ROTATION_E enRotation);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
enRotation |
旋转属性。详见 ROTATION_E 说明。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
使用本接口前,需先调用 CVI_VPSS_SetChnAttr ,否则提示失败。
必需在设置信道属性后才能设置此属性。
CV181x/CV180x不支持180°旋转,180°旋转可以利用mirror+flip实现。
仅支持NV12、NV21及YUV400三种格式的旋转。
- 旋转后,信道输出的图像大小可能发生变化。例如1920x1080输入的图像,旋转90度后,实际输出为1088x1920。因为旋转需要64像素对齐,所以会产生无效区域,如果后端对接vo或者venc,后端模块会自动裁剪有效部分,如果是GetChnFrame,有效区域在VIDEO_FRAME_S结构体s16OffsetTop、s16OffsetBottom、s16OffsetLeft、s16OffsetRight指定。
【举例】
无
【相关主题】
无
6.3.31. CVI_VPSS_GetChnRotation¶
【描述】
获取 VPSS通道旋转的属性。
【语法】
CVI_S32 CVI_VPSS_GetChnRotation(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, ROTATION_E *penRotation);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
penRotation |
旋转属性指针。 输出详见 ROTATION_E 说明。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
使用本接口前,需先调用 CVI_VPSS_SetChnAttr ,否则提示失败。
【举例】
无
【相关主题】
6.3.32. CVI_VPSS_SetChnLDCAttr¶
【描述】
设置 VPSS通道镜头畸变矫正的属性。
【语法】
CVI_S32 CVI_VPSS_SetChnLDCAttr(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, const VPSS_LDC_ATTR_S *pstLDCAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM) |
输入 |
pstLDCAttr |
镜头畸变矫正属性。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
使用本接口前,需先调用 CVI_VPSS_SetChnAttr ,否则提示失败。
必需在设置信道属性后才能设置此属性。
仅支持NV21及YUV400两种格式的旋转。
【举例】
无
【相关主题】
6.3.33. CVI_VPSS_GetChnLDCAttr¶
【描述】
获取 VPSS通道镜头畸变矫正的属性。
【语法】
CVI_S32 CVI_VPSS_GetChnLDCAttr(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VPSS_LDC_ATTR_S *pstLDCAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM) |
输入 |
pstLDCAttr |
镜头畸变矫正属性。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
使用本接口前,需先调用 CVI_VPSS_SetChnAttr ,否则提示失败。
【举例】
无
【相关主题】
6.3.34. CVI_VPSS_GetChnFd¶
【描述】
获取VPSS通道对应的设备文件句柄。
【语法】
CVI_S32 CVI_VPSS_GetChnFd(VPSS_GRP VpssGrp, VPSS_CHN VpssChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM) |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
正数值 |
成功。 |
非正数值 |
无效值。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
无
【举例】
无
【相关主题】
无
6.3.35. CVI_VPSS_CloseFd¶
【描述】
关闭VPSS设备通道的文件句柄。
【语法】
CVI_S32 CVI_VPSS_CloseFd(CVI_VOID);
【参数】
无
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
此接口调用后,VPSS其他 MMF接口失效。
【举例】
无
【相关主题】
6.3.36. CVI_VPSS_AttachVbPool¶
【描述】
将 VPSS 的通道绑定到某个视频缓存VB池中。
【语法】
CVI_S32 CVI_VPSS_AttachVbPool(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VB_POOL hVbPool);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
hVbPool |
视频缓存VB 池信息。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
重复调用该函数设置同一个组返回成功
当要切换当前组绑定的VB 池时,只需再调一次接口CVI_VPSS_AttachVbPool
正确配置需要绑定到的VB 池即可。
hVbPool必须保证是已创建VB池的有效PoolId。
- 在调用CVI_VPSS_DetachVbPool后,销毁创建的VB之前,需要保证VB没有被VPSS后端绑定的模块使用,可以通过sleep或清除后端模块通道缓存的方式先把VB 都释放,再销毁缓存VB 池。
VB大小根据VPSS通道输出图像计算,具体计算公式参考 cvi_buffer.h。
【举例】
无
【相关主题】
6.3.37. CVI_VPSS_DetachVbPool¶
【描述】
将 VPSS 的通道从某个视频缓存VB池中解绑定。
【语法】
CVI_S32 CVI_VPSS_DetachVbPool(VPSS_GRP VpssGrp, VPSS_CHN VpssChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM) |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
【举例】
无
【相关主题】
6.3.38. CVI_VPSS_SetChnAlign¶
【描述】
设置 VPSS 通道输出frame宽度对齐字节数。
【语法】
CVI_S32 CVI_VPSS_SetChnAlign(VPSS_GRP VpssGrp, VPSS_CHN VpssChn,
CVI_U32 u32Align);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
u32Align |
对齐字节数。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
必须在CVI_VPSS_SetChnAttr之后调用,默认是64 byte对齐。
设置u32Align=1可以使内存宽度和输出分辨率宽度一致。
【举例】
无
【相关主题】
无
6.3.39. CVI_VPSS_GetChnAlign¶
【描述】
获取 VPSS 通道输出frame宽度对齐字节数。
【语法】
CVI_S32 CVI_VPSS_GetChnAlign(VPSS_GRP VpssGrp, VPSS_CHN VpssChn,
CVI_U32 *pu32Align);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
pu32Align |
对齐字节数。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
无
【举例】
无
【相关主题】
无
6.3.40. CVI_VPSS_SetChnYRatio¶
【描述】
设置 VPSS 通道图像Y分量的比率。
【语法】
CVI_S32 CVI_VPSS_SetChnYRatio(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, CVI_FLOAT YRatio);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
YRatio |
比率 取值范围:[0, 1]。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
必须在CVI_VPSS_SetChnAttr之后调用,通道输出格式必须是YUV,默认是100。
不能和Normalize、Convert功能同时使用。
【举例】
无
【相关主题】
无
6.3.41. CVI_VPSS_GetChnYRatio¶
【描述】
获取 VPSS 通道图像Y分量的比率。
【语法】
CVI_S32 CVI_VPSS_GetChnYRatio(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, CVI_FLOAT *pYRatio);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
YRatio |
比率 取值范围:[0, 1]。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
无
【举例】
无
【相关主题】
无
6.3.42. CVI_VPSS_SetChnScaleCoefLevel¶
【描述】
设置 VPSS 通道图像缩放算法。
【语法】
CVI_S32 CVI_VPSS_SetChnScaleCoefLevel(VPSS_GRP VpssGrp, VPSS_CHN VpssChn,
VPSS_SCALE_COEF_E enCoef);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
enCoef |
resize算法枚举 取值范围:[0, VPSS_SCALE_COEF_MAX]。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建。
【举例】
无
【相关主题】
无
6.3.43. CVI_VPSS_GetChnScaleCoefLevel¶
【描述】
获取 VPSS 通道图像缩放算法。
【语法】
CVI_S32 CVI_VPSS_GetChnScaleCoefLevel(VPSS_GRP VpssGrp, VPSS_CHN VpssChn,
VPSS_SCALE_COEF_E *penCoef);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
penCoef |
resize算法枚举 取值范围:[0, VPSS_SCALE_COEF_MAX]。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建。
【举例】
无
【相关主题】
无
6.3.44. CVI_VPSS_SetChnBufWrapAttr¶
【描述】
设置低延时卷绕属性。
【语法】
CVI_S32 CVI_VPSS_SetChnBufWrapAttr(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, const VPSS_CHN_BUF_WRAP_S *pstVpssChnBufWrap);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM) |
输入 |
pstVpssChnBufWrap |
通道buffer卷绕属性结构体。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
通道使能状态下不支持。
必须在已设置通道属性的前提下才能设置此接口。
不支持semi-planar422 图像,不支持Flip。
信道低延时卷绕开启时,通道的获取、亮度、旋转、CoverEx、OverlayEx、任意角度旋转、LDC将无效
在低延时卷绕通道绑编码场景下,编码不支持软件抽帧。
【举例】
无
【相关主题】
6.3.45. CVI_VPSS_GetChnBufWrapAttr¶
【描述】
获取低延时卷绕属性。
【语法】
CVI_S32 CVI_VPSS_GetChnBufWrapAttr(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VPSS_CHN_BUF_WRAP_S *pstVpssChnBufWrap);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
pstVpssChnBufWrap |
通道buffer卷绕属性结构体。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建
【举例】
无
【相关主题】
6.3.46. CVI_VPSS_GetWrapBufferSize¶
【描述】
获取低延时卷绕所需缓存大小。
【语法】
CVI_U32 CVI_VPSS_GetWrapBufferSize(CVI_U32 u32Width, CVI_U32 u32Height, PIXEL_FORMAT_E enPixelFormat, CVI_U32 u32BufLine, CVI_U32 u32BufDepth);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
u32Width |
图像宽度 |
输入 |
u32Height |
图像高度 |
输入 |
enPixelFormat |
图像像素格式 |
输入 |
u32BufLine |
单个卷绕缓存line数 |
输入 |
u32BufDepth |
卷绕缓存个数 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
无
【举例】
无
【相关主题】
无
6.3.47. CVI_VPSS_ShowChn¶
【描述】
显示VPSS 通道图像。
【语法】
CVI_S32 CVI_VPSS_ShowChn(VPSS_GRP VpssGrp, VPSS_CHN VpssChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建。
【举例】
无
【相关主题】
无
6.3.48. CVI_VPSS_HideChn¶
【描述】
隐藏VPSS 通道图像。
【语法】
CVI_S32 CVI_VPSS_HideChn(VPSS_GRP VpssGrp, VPSS_CHN VpssChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建,调用本接口后图像全黑。
【举例】
无
【相关主题】
无
6.3.49. CVI_VPSS_GetRegionLuma¶
【描述】
获取指定图像区域的亮度总和。该接口主要用于对 OSD 区域进行亮度和统计,根据统计的亮度,进行反色处理,使 OSD 区域更加明显。
【语法】
CVI_S32 CVI_VPSS_GetRegionLuma(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, const
VIDEO_REGION_INFO_S *pstRegionInfo,CVI_U64 *pu64LumaData,
CVI_S32 s32MilliSec);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
VpssChn |
VPSS 通道号 取值范围:[0, VPSS_MAX_CHN_NUM)。 |
输入 |
pstRegionInfo |
区域信息。其中 pstRegionInfo->pstRegion 为统计区域的区域属性,即起始位置、宽、高;pstRegionInfo->u32RegionNum 为统计区域的个数。 |
输入 |
pu64LumaData |
接收区域亮度和统计信息的内存指针,该内存大小应该大于或等于 sizeof(CVI_U64)×pstRegionInfo->u32RegionNum。 |
输出 |
s32MilliSec |
超时参数 s32MilliSec 设为-1为阻塞接口;大于 0 时为超时等待时间。超时时间的单位为毫秒(ms)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_vpss.h, cvi_comm_vpss.h
库文件:libvpss.a
【注意】
Group必须已经创建。
仅支持YUV格式图像。
此接口针对的是VPSS 通道的输出图像。获取亮度统计信息的时机是这些图像被用户获取或被发送到后端模块之前。
统计区域的起始坐标的确定分两种情况:如果不使能 CROP,则起始坐标相对于原始图像的左上角坐标;如果使能 CROP,则起始坐标相对于 CROP 以后的图像的左上角坐标。统计区域不得超出原始图像或 CROP 之后的图像区域。
【举例】
无
【相关主题】
无
6.3.50. CVI_VPSS_CreateStitch¶
【描述】
创建vpss stitch。
【语法】
CVI_S32 CVI_VPSS_CreateStitch(VPSS_GRP VpssGrp, const CVI_STITCH_ATTR_S *pstStitchAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
pstStitchAttr |
VPSS stitch 属性指针。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
使用之前要先创建 CVI_STITCH_ATTR_S
【举例】
CVI_STITCH_ATTR_S stStitchAttr;
stStitchAttr.u8ChnNum = 2;
stStitchAttr.VoChn = 0;
stStitchAttr.s32OutFps = 2;
stStitchAttr.enOutPixelFormat = PIXEL_FORMAT_RGB_888_PLANAR;
stStitchAttr.stOutSize.u32Width = 720;
stStitchAttr.stOutSize.u32Height = 1280;
stStitchAttr.hVbPool = 0;
stStitchAttr.astStitchChn[0].stDstRect.s32X = 0;
stStitchAttr.astStitchChn[0].stDstRect.s32Y = 0;
stStitchAttr.astStitchChn[0].stDstRect.u32Width = 360;
stStitchAttr.astStitchChn[0].stDstRect.u32Height = 640;
stStitchAttr.astStitchChn[0].stStitchSrc.VpssGrp = 0;
stStitchAttr.astStitchChn[0].stStitchSrc.VpssChn = 0;
stStitchAttr.astStitchChn[1].stDstRect.s32X = 360;
stStitchAttr.astStitchChn[1].stDstRect.s32Y = 640;
stStitchAttr.astStitchChn[1].stDstRect.u32Width = 360;
stStitchAttr.astStitchChn[1].stDstRect.u32Height = 640;
stStitchAttr.astStitchChn[1].stStitchSrc.VpssGrp = 0;
stStitchAttr.astStitchChn[1].stStitchSrc.VpssChn = 0;
s32Ret = CVI_VPSS_CreateStitch(1, &stStitchAttr);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("CVI_VPSS_CreateStitch failed. s32Ret: 0x%x !\n", s32Ret);
return s32Ret;
}
s32Ret = CVI_VPSS_StartGrp(VpssGrp);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("CVI_VPSS_StartGrp failed with %#x\n", s32Ret);
return CVI_FAILURE;
}
s32Ret = CVI_VPSS_StartStitch(1);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("CVI_VPSS_StartStitch failed. s32Ret: 0x%x !\n", s32Ret);
return s32Ret;
}
CVI_VPSS_StopStitch(1);
CVI_VPSS_DestroyStitch(1);
【相关主题】
6.3.51. CVI_VPSS_DestroyStitch¶
【描述】
销毁vpss stitch。
【语法】
CVI_S32 CVI_VPSS_DestroyStitch(VPSS_GRP VpssGrp);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
使用之前要先创建 vpss stitch
【举例】
【相关主题】
6.3.52. CVI_VPSS_SetStitchAttr¶
【描述】
设置vpss stitch 属性。
【语法】
CVI_S32 CVI_VPSS_SetStitchAttr(VPSS_GRP VpssGrp, const CVI_STITCH_ATTR_S *pstStitchAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
pstStitchAttr |
VPSS stitch 属性指针。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
使用之前要先创建 vpss stitch
【举例】
【相关主题】
6.3.53. CVI_VPSS_GetStitchAttr¶
【描述】
获取vpss stitch 属性。
【语法】
CVI_S32 CVI_VPSS_GetStitchAttr(VPSS_GRP VpssGrp, CVI_STITCH_ATTR_S *pstStitchAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
pstStitchAttr |
VPSS stitch 属性指针。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
使用之前要先创建 vpss stitch
【举例】
【相关主题】
6.3.54. CVI_VPSS_StartStitch¶
【描述】
开始vpss stitch。
【语法】
CVI_S32 CVI_VPSS_StartStitch(VPSS_GRP VpssGrp);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
使用之前要先创建 vpss stitch
【举例】
【相关主题】
6.3.55. CVI_VPSS_StopStitch¶
【描述】
停止vpss stitch。
【语法】
CVI_S32 CVI_VPSS_StopStitch(VPSS_GRP VpssGrp);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
VpssGrp |
VPSS GROUP 号。 取值范围:[0, VPSS_MAX_GRP_NUM)。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
使用之前要先创建 vpss stitch
【举例】
【相关主题】
6.3.56. CVI_VPSS_Suspend¶
【描述】
vpss 休眠, 仅双系统SDK支持。
【语法】
CVI_S32 CVI_VPSS_Suspend(void);
【参数】
无
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
无
【举例】
无
【相关主题】
6.3.57. CVI_VPSS_Resume¶
【描述】
vpss 唤醒, 仅双系统SDK支持。
【语法】
CVI_S32 CVI_VPSS_Resume(void);
【参数】
无
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码 。 |
【需求】
头文件:cvi_comm_vpss.h、cvi_vpss.h
库文件:libvpss.a
【注意】
无
【举例】
无
【相关主题】