5.3. API参考

视频输出(VO)实现视频输出设备,视频曾,信道等功能。

该功能模块所支持的 API,以下由大而小分别从设备、视频层、通道等方面进行介绍

设备相关API 如下:

视频层相关API如下:

通道相关API 如下:


5.3.1. CVI_VO_Enable

【描述】

启用视频输出设备。

【语法】

CVI_S32 CVI_VO_Enable(VO_DEV VoDev);

【参数】

参数名称

描述

输入/输出

VoDev

视频输出设备号。

取值范围:[0, VO_MAX_DEV_NUM]。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

  • 必须在使用视频输出功能前先进行设备使能操作。

  • 在调用设备使能前,必须对设备公共属性进行配置,否则返回设备未配置错误。

  • 如果希望更改 VO 的时序配置,则需要先调用 CVI_VO_Disable 接口,强制关闭 VO 硬件后再使能。以避免变更时序过程中出现不喜的瞬时。

【举例】

 CVI_S32 s32Ret = CVI_SUCCESS;

s32Ret = CVI_VO_SetPubAttr(VoDev, pstPubAttr);
if (s32Ret != CVI_SUCCESS) {
  SAMPLE_PRT("failed with %#x!\n", s32Ret);
  return CVI_FAILURE;
}

s32Ret = CVI_VO_Enable(VoDev);
if (s32Ret != CVI_SUCCESS) {
  SAMPLE_PRT("failed with %#x!\n", s32Ret);
  return CVI_FAILURE;
}

【相关主题】

CVI_VO_Disable


5.3.2. CVI_VO_Disable

【描述】

禁用视频输出设备。

【语法】

CVI_S32 CVI_VO_Disable(VO_DEV VoDev);

【参数】

参数名称

描述

输入/输出

VoDev

视频输出设备号。

取值范围:[0, VO_MAX_DEV_NUM]。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

  • 设备禁止前必须先禁止该设备上的视频层。

  • 只有在VO 设备禁止下,才能做设置设备属性的变更。

【举例】

【相关主题】

CVI_VO_Enable


5.3.3. CVI_VO_SetPubAttr

【描述】

配置视频输出设备的相关属性。

【语法】

CVI_S32 CVI_VO_SetPubAttr(VO_DEV VoDev, const VO_PUB_ATTR_S *pstPubAttr);

【参数】

参数名称

描述

输入/输出

VoDev

视频输出设备号。

取值范围:[0, VO_MAX_DEV_NUM]。

输入

pstPubAttr

视频输出设备公共属性结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

  • 视频输出设备属性为静态属性, 必须 在执行 CVI_VO_Enable 前 配置 。

  • 各个DEV 的使用说明详见 VO_DEV

  • 视频输出设备属性的使用说明详见 VO_PUB_ATTR_S 章节。

【举例】

【相关主题】

CVI_VO_GetPubAttr


5.3.4. CVI_VO_GetPubAttr

【描述】

获取视频输出设备的相关属性。

【语法】

CVI_S32 CVI_VO_GtPubAttr(VO_DEV VoDev, VO_PUB_ATTR_S *pstPubAttr);

【参数】

参数名称

描述

输入/输出

VoDev

视频输出设备号。

取值范围:[0, VO_MAX_DEV_NUM]。

输入

pstPubAttr

视频输出设备公共属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

  • 在设置设备公共属性前先获取属性,就可以只设置需要改变的 配置项。

【举例】

【相关主题】

CVI_VO_SetPubAttr


5.3.5. CVI_VO_EnableVideoLayer

【描述】

启用视频层。

【语法】

CVI_S32 CVI_VO_EnableVideoLayer (VO_LAYER VoLayer);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

  • 视频层使能前必须保证该视频层所绑定的设备处于使能状态。

【举例】

【相关主题】

CVI_VO_DisableVideoLayer


5.3.6. CVI_VO_DisableVideoLayer

【描述】

禁用视频层。

【语法】

CVI_S32 CVI_VO_DisableVideoLayer (VO_LAYER VoLayer);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

  • 视频层禁止前,其上的通道必须先禁止。

【举例】

【相关主题】

CVI_VO_EnableVideoLayer


5.3.7. CVI_VO_SetVideoLayerAttr

【描述】

配置视频层的相关属性。

【语法】

CVI_S32 CVI_VO_SetVideoLayerAttr (VO_LAYER VoLayer, const VO_VIDEO_LAYER_ATTR_S *pstLayerAttr);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

pstLayerAttr

视频层属性结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

【举例】

【相关主题】

CVI_VO_GetVideoLayerAttr


5.3.8. CVI_VO_GetVideoLayerAttr

【描述】

获取视频层的相关属性。

【语法】

CVI_S32 CVI_VO_GetVideoLayerAttr (VO_LAYER VoLayer, VO_VIDEO_LAYER_ATTR_S *pstLayerAttr);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

pstLayerAttr

视频层属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

【举例】

【相关主题】

CVI_VO_SetVideoLayerAttr


5.3.9. CVI_VO_EnableChn

【描述】

启用指定的视频输出通道。

【语法】

CVI_S32 CVI_VO_EnableChn(VO_LAYER VoLayer, VO_CHN VoChn);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

VoChn

视频输出通道号。

取值范围:[0, VO_MAX_CHN_NUM]。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

  • 调用前必须使能相应设备上的视频层。

  • 信道使能前必须进行信道配置,否则返回信道未配置的错误 。

【举例】

【相关主题】

CVI_VO_DisableChn


5.3.10. CVI_VO_DisableChn

【描述】

禁用视频输出通道。

【语法】

CVI_S32 CVI_VO_DisableChn(VO_LAYER VoLayer, VO_CHN VoChn);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

VoChn

视频输出通道号。

取值范围:[0, VO_MAX_CHN_NUM]。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

【举例】

【相关主题】

CVI_VO_EnableChn


5.3.11. CVI_VO_SetChnAttr

【描述】

配置视频输出信道的相关属性。

【语法】

CVI_S32 CVI_VO_SetPubAttr(VO_LAYER VoLayer, VO_CHN VoChn, const VO_CHN_ATTR_S *pstChnAttr);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

VoChn

视频输出通道号。

取值范围:[0, VO_MAX_CHN_NUM]。

输入

pstChnAttr

视频输出通道属性结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

  • 通道显示区域需小于视频层属性中设定的stImageSize 大小。

【举例】

【相关主题】

CVI_VO_GetChnAttr


5.3.12. CVI_VO_GetChnAttr

【描述】

获取视频输出通道的相关属性。

【语法】

CVI_S32 CVI_VO_GtPubAttr(VO_LAYER VoLayer, VO_CHN VoChn, VO_CHN_ATTR_S *pstChnAttr);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

VoChn

视频输出通道号。

取值范围:[0, VO_MAX_CHN_NUM]。

输入

pstChnAttr

视频输出通道属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

【举例】

【相关主题】

CVI_VO_SetChnAttr


5.3.13. CVI_VO_ShowChn

【描述】

显示指定的视频输出通道。

【语法】

CVI_S32 CVI_VO_ShowChn(VO_LAYER VoLayer, VO_CHN VoChn);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

VoChn

视频输出通道号。

取值范围:[0, VO_MAX_CHN_NUM]。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

  • 调用前必须使能相应设备上的视频通道。

  • 默认下处于显示状态。

【举例】

【相关主题】

CVI_VO_HideChn


5.3.14. CVI_VO_HideChn

【描述】

隐藏指定的视频输出通道。

【语法】

CVI_S32 CVI_VO_HideChn(VO_LAYER VoLayer, VO_CHN VoChn);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

VoChn

视频输出通道号。

取值范围:[0, VO_MAX_CHN_NUM]。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

【举例】

【相关主题】

CVI_VO_ShowChn


5.3.15. CVI_VO_SetChnRotation

【描述】

设置 VO通道旋转的属性。

【语法】

CVI_S32 CVI_VO_SetChnRotation(VO_LAYER VoLayer, VO_CHN VoChn, ROTATION_E enRotation);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

VoChn

视频输出通道号。

取值范围:[0, VO_MAX_CHN_NUM]。

输入

enRotation

旋转属性。 详见 ROTATION_E 说明

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

  • 使用本接口前,需先调用 CVI_VO_SetChnAttr,否则提示失败。

  • CV183x仅支持RGB planar,YUV420 Planar及YUV400三种格式的旋转。

  • CV182x/CV181x仅支持NV12,NV21及YUV400三种格式的旋转。

  • 设置后,旋转会作用于进入信道的视频图像,要注意设置视频层和视频信道的属性大小。例如通道设定大小为1920x1080,且旋转90度,因此输入给信道的图像应为1080x1920。

【举例】

【相关主题】


5.3.16. CVI_VO_GetChnRotation

【描述】

获取 VO通道旋转的属性。

【语法】

CVI_S32 CVI_VO_GetChnRotation(VO_LAYER VoLayer, VO_CHN VoChn, ROTATION_E *penRotation);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

VoChn

视频输出通道号。

取值范围:[0, VO_MAX_CHN_NUM]。

输入

penRotation

旋转属性指针。 详见 ROTATION_E 说明

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

【举例】

【相关主题】

CVI_VO_SetChnRotation


5.3.17. CVI_VO_PauseChn

【描述】

暂停指定的VO通道的输出。

【语法】

CVI_S32 CVI_VO_PauseChn(VO_LAYER VoLayer, VO_CHN VoChn);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

VoChn

视频输出通道号。

取值范围:[0, VO_MAX_CHN_NUM]。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

  • 调用前必须使能相应设备上的视频通道。

  • 允许重复暂停同一通道,不返回失败。

【举例】

【相关主题】

CVI_VO_ResumeChn


5.3.18. CVI_VO_ResumeChn

【描述】

恢复指定的 VO通道的输出。

【语法】

CVI_S32 CVI_VO_ResumeChn(VO_LAYER VoLayer, VO_CHN VoChn);

【参数】

参数名称

描述

输入/输出

VoLayer

视频输出视频层号。

取值范围:[0, VO_MAX_LAYER_NUM]。

输入

VoChn

视频输出通道号。

取值范围:[0, VO_MAX_CHN_NUM]。

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

  • 调用前必须使能相应设备上的视频通道。

  • 允许重复恢复同一通道,不返回失败。

【举例】

【相关主题】

CVI_VO_PauseChn


5.3.19. CVI_VO_CloseFd

【描述】

关闭视频输出设备的文件句柄。

【语法】

CVI_S32 CVI_VO_CloseFd(CVI_VOID);

【参数】

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_vo.h, cvi_comm_vo.h

  • 库文件:libvpu.a

【注意】

此接口调用后,VO其他 MMF接口失效。

【举例】

【相关主题】