跳到主要内容
版本:2.8.1

视频输出 (VO)

概述

系统架构

VoDev、VoLayer、VoChn的关系

vo_dev_layer_chn


VoDev

在 zmedia 中,VoDev 负责数据输出。

  • 在A210系统中 DPU 有两个输出端口,同时还有一个 auxdisp 也可输出数据,相当于有三个 VoDev,分别为 ZH_VO_DEV_HD0,ZH_VO_DEV_HD1,ZH_VO_DEV_HD2。 如上图所示,VoDev 可分别连接一个显示设备(DP,HDMI,DSI)来显示图像。
  • 如果是A200系统中,则只有两个输出端口,分别是ZH_VO_DEV_HD0、ZH_VO_DEV_HD1。

在实际应用中,可以通过 ZH_MPI_VO_SetPubAttr 来指定要连接的显示设备和设置分辨率的大小。


VoLayer

VoLayer 代表图层的概念,可以分成四个类型:

  • 光标层:VO_LAYER_MODE_CURSOR
  • 图形层:VO_LAYER_MODE_GRAPHIC
  • 视频层:VO_LAYER_MODE_VIDEO
  • 虚拟图层:VO_LAYER_MODE_VIRTUAL

图层需要和 VoDev 绑定使用。支持多个图层绑定到同一个 VoDev ,此时图层就会被叠加,显示内容为叠加效果。

虚拟图层用于把内容渲染到一片 buffer,并不参与最后的显示输出。

注意

每个 VoDev 只能有一个图形层和光标层。


VoChn

voChn 为一个视频通道的概念,主要用于把屏幕上分成几个区域,在每个区域显示不同的视频内容。

实际应用比如视频监控。具体实现时硬件会把多个视频数据渲染到同一个图层的不同区域。可为每个 Chn 设置属性,如位置、视频大小、宽高比、缓存大小、帧率等。

视频通道的最大数目为 VO_MAX_CHN_NUM。同时支持暂停、恢复和单播。


基本流程

VoDev、VoLayer、VoChn的使用流程是相似的,首先配置属性,再使能设备。 先后使能 VoLayer、VoDev、VoChn 后,通过 SendFrame 接口发生数据。 如下图所示。

vo_dev_layer_chn


API参考


设备操作

ZH_MPI_VO_SetPubAttr

描述

设置视频输出设备的公共属性。

语法

ZH_S32 ZH_MPI_VO_SetPubAttr(VO_DEV VoDev, const VO_PUB_ATTR_S *pstPubAttr)

参数

参数名称数据类型描述输入/输出
VoDevVO_DEV显示输出设备号。输入
pstPubAttrconst VO_PUB_ATTR_S*视频输出设备公共属性结构体指针。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_DEVIDVoDev 不正确。
ZH_ERR_VO_NULL_PTRpstPubAttr 为空指针。
ZH_ERR_VO_NOT_SUPPORT输入 enIntfSync 不在支持列表内。
ZH_ERR_VO_BUSY设置分辨率失败。

示例代码

请参见 ZH_MPI_VO_Enable 的举例。

相关主题

ZH_MPI_VO_GetPubAttr


ZH_MPI_VO_GetPubAttr

描述

获取视频输出设备的公共属性。

语法

ZH_S32 ZH_MPI_VO_GetPubAttr(VO_DEV VoDev, VO_PUB_ATTR_S *pstPubAttr)

参数

参数名称数据类型描述输入/输出
VoDevVO_DEV显示输出设备号。输入
pstPubAttrVO_PUB_ATTR_S*视频输出设备公共属性结构体指针。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_DEVIDVoDev 不正确。
ZH_ERR_VO_NULL_PTRpstPubAttr 为空指针。
ZH_ERR_VO_SYS_NOTREADYVO 相关服务创建失败。

示例代码

请参见 ZH_MPI_VO_Enable 的举例。

相关主题

ZH_MPI_VO_SetPubAttr


ZH_MPI_VO_Enable

描述

启用视频输出设备。

语法

ZH_S32 ZH_MPI_VO_Enable(VO_DEV VoDev)

参数

参数名称数据类型描述输入/输出
VoDevVO_DEV显示输出设备号。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_DEVIDVoDev 不正确。
ZH_ERR_VO_SYS_NOTREADYVO 相关服务创建失败。
ZH_ERR_VO_NOT_SUPPORT显示输出接口类型不支持。
ZH_ERR_VO_BUSY创建、使能显示输出设备失败。

示例代码

VO_PUB_ATTR_S VoPubAttr;
VO_VIDEO_LAYER_ATTR_S stLayerAttr;
ZH_U32 s32Ret;

VO_LAYER VoLayer = VO_LAYER_CLUSTER_0;
VO_DEV VoDev = ZH_VO_DEV_HD0;

memset(&VoPubAttr, 0, sizeof(VO_PUB_ATTR_S));
s32Ret = ZH_MPI_VO_GetPubAttr(VoDev, &VoPubAttr);

if (s32Ret != ZH_SUCCESS) {
return s32Ret;
}

VoPubAttr.enIntfType = VO_INTF_HDMI;
VoPubAttr.enIntfSync = VO_OUTPUT_1080P60;

s32Ret = ZH_MPI_VO_SetPubAttr(VoDev, &VoPubAttr);
if (s32Ret != ZH_SUCCESS) {
return s32Ret;
}
s32Ret = ZH_MPI_VO_Enable(VoDev);
if (s32Ret != ZH_SUCCESS) {
return s32Ret;
}

s32Ret = ZH_MPI_VO_Disable(VoDev);
if (s32Ret != ZH_SUCCESS)
return s32Ret;

s32Ret = ZH_MPI_VO_CloseFd();
if (s32Ret != ZH_SUCCESS)
return s32Ret;

相关主题

ZH_MPI_VO_Disable


ZH_MPI_VO_Disable

描述

禁用视频输出设备。

语法

ZH_S32 ZH_MPI_VO_Disable(VO_DEV VoDev)

参数

参数名称数据类型描述输入/输出
VoDevVO_DEV显示输出设备号。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_DEVIDVoDev 不正确。

示例代码

ZH_S32 s32Ret = ZH_SUCCESS;
VO_DEV VoDev = ZH_VO_DEV_HD0;

s32Ret = ZH_MPI_VO_Disable(VoDev);
if (s32Ret != ZH_SUCCESS)
return ZH_FAILURE;

return s32Ret;

ZH_MPI_VO_GetPostProcessParam

描述

获取设备输出图像效果。

语法

ZH_S32 ZH_MPI_VO_GetPostProcessParam(VO_DEV VoDev, VO_CSC_S *pstParam)

参数

参数名称数据类型描述输入/输出
VoDevVO_DEV显示输出设备号。输入
pstParamVO_CSC_S*图像输出效果结构体指针。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_DEVIDVoDev 不正确。
ZH_ERR_VO_NULL_PTRpstParam 为空指针。
ZH_ERR_VO_SYS_NOTREADYVO 相关服务创建失败。

ZH_MPI_VO_SetPostProcessParam

描述

设置设备输出图像效果。

语法

ZH_S32 ZH_MPI_VO_SetPostProcessParam(VO_DEV VoDev, VO_CSC_S *pstParam)

参数

参数名称数据类型描述输入/输出
VoDevVO_DEV显示输出设备号。输入
pstParamVO_CSC_S*图像输出效果结构体指针。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_DEVIDVoDev 不正确。
ZH_ERR_VO_NULL_PTRpstParam 为空指针。
ZH_ERR_VO_SYS_NOTREADYVO 相关服务创建失败。
ZH_ERR_VO_BUSY设置失败。

ZH_MPI_VO_Get_Edid

描述

获取显示设备 EDID 数据。

语法

ZH_S32 ZH_MPI_VO_Get_Edid(ZH_U32 enIntfType, ZH_U32 u32Id, VO_EDID_S *pstEdidData)

参数

参数名称数据类型描述输入/输出
enIntfTypeZH_U32显示输出接口类型。输入
u32IdZH_U32同类型显示输出接口设备号,比如 HDMI0、HDMI1。输入
pstEdidDataVO_EDID_S*EDID 数据。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_ILLEGAL_PARAMenIntfType 不正确。
ZH_ERR_VO_NULL_PTRpstEdidData 为空指针。
ZH_ERR_VO_DEV_NOT_ENABLEVoDev 对应的显示设备未使能。

注意事项

u32Id 为芯片相同接口类型的 ID 号,比如有两个芯片内置 HDMI,u32Id 可以取值 0 和 1。


ZH_MPI_VO_GetSinkCapability

描述

获取显示设备连接状态和相关能力。

语法

ZH_S32 ZH_MPI_VO_GetSinkCapability(ZH_U32 enIntfType, ZH_U32 u32Id, VO_SINK_CAPABILITY_S *pstSinkCap)

参数

参数名称数据类型描述输入/输出
enIntfTypeZH_U32显示输出接口类型。输入
u32IdZH_U32同类型显示输出接口设备号,比如 HDMI0、HDMI1。输入
pstSinkCapVO_SINK_CAPABILITY_S*显示设备状态。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_ILLEGAL_PARAMenIntfType 不正确。
ZH_ERR_VO_NULL_PTRpstSinkCap 为空指针。
ZH_ERR_VO_DEV_NOT_ENABLEVoDev 对应的显示设备未使能。

注意事项

u32ld 为芯片相同接口类型的 ID 号,比如有两个芯片内置 HDMI,u32ld 可以取值 0 和 1。


ZH_MPI_VO_RegCallbackFunc

描述

注册显示设备热插拔回调函数。

语法

ZH_S32 ZH_MPI_VO_RegCallbackFunc(ZH_U32 enIntfType, ZH_U32 u32Id, ZH_VO_CALLBACK_FUNC_S *pstCallbackFunc)

参数

参数名称数据类型描述输入/输出
enIntfTypeZH_U32显示输出接口类型。输入
u32IdZH_U32同类型显示输出接口设备号,比如 HDMI0、HDMI1。输入
pstCallbackFuncZH_VO_CALLBACK_FUNC_S*热插拔回调函数。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_ILLEGAL_PARAMenIntfType 不正确。
ZH_ERR_VO_NULL_PTRpstCallbackFunc 为空指针。
ZH_ERR_VO_DEV_NOT_ENABLEVoDev 对应的显示设备未使能。

注意事项

  • 仅支持有热插拔能力的显示接口,比如 HDMI 和 EDP。
  • 需要显示设备处于使能状态。
  • u32ld 为芯片相同接口类型的 ID 号,比如有两个芯片内置 HDMI,u32ld 可以取值 0 和 1。

ZH_MPI_VO_UnRegCallbackFunc

描述

注销显示设备热插拔回调函数。

语法

ZH_S32 ZH_MPI_VO_UnRegCallbackFunc(ZH_U32 enIntfType, ZH_U32 u32ld, ZH_VO_CALLBACK_FUNC_S *pstCallbackFunc)

参数

参数名称数据类型描述输入/输出
enIntfTypeZH_U32显示输出接口类型。输入
u32ldZH_U32同类型显示输出接口设备号,比如 HDMI0、HDMI1。输入
pstCallbackFuncZH_VO_CALLBACK_FUNC_S*热插拔回调函数。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_ILLEGAL_PARAMenIntfType 不正确。
ZH_ERR_VO_NULL_PTRpstCallbackFunc 为空指针。
ZH_ERR_VO_DEV_NOT_ENABLEVoDev 对应的显示设备未使能。

注意事项

  • 仅支持有热插拔能力的显示接口,比如 HDMI 和 EDP。
  • 需要显示设备处于使能状态。
  • u32ld 为芯片相同接口类型的 ID 号,比如有两个芯片内置 HDMI,u32ld 可以取值 0 和 1。

ZH_MPI_VO_RegVsyncCallbackFunc

描述

注册显示设备帧中断回调函数。

语法

ZH_S32 ZH_MPI_VO_RegVsyncCallbackFunc(VO_DEV VoDev, ZH_VO_VSYNC_CALLBACK_FUNC_S *pstCallbackFunc)

参数

参数名称数据类型描述输入/输出
VoDevVO_DEV显示输出接口设备号。输入
pstCallbackFuncZH_VO_VSYNC_CALLBACK_FUNC_S*帧中断回调函数。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_DEVIDVoDev 不正确。
ZH_ERR_VO_NULL_PTRpstCallbackFunc 为空指针。
ZH_ERR_VO_DEV_NOT_ENABLEVoDev 对应的显示设备未使能。
ZH_ERR_VO_SYS_NOTREADYVO 相关服务创建失败。
ZH_ERR_VO_ILLEGAL_PARAM回调函数无效。

注意事项

需要显示设备处于使能状态。


ZH_MPI_VO_UnRegVsyncCallbackFunc

描述

注销显示设备帧中断回调函数。

语法

ZH_S32 ZH_MPI_VO_UnRegCallbackFunc(VO_DEV VoDev, ZH_VO_VSYNC_CALLBACK_FUNC_S *pstCallbackFunc)

参数

参数名称数据类型描述输入/输出
VoDevVO_DEV显示输出接口设备号。输入
pstCallbackFuncZH_VO_VSYNC_CALLBACK_FUNC_S*帧中断回调函数。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_DEVIDVoDev 不正确。
ZH_ERR_VO_NULL_PTRpstCallbackFunc 为空指针。
ZH_ERR_VO_DEV_NOT_ENABLEVoDev 对应的显示设备未使能。
ZH_ERR_VO_SYS_NOTREADYVO 相关服务创建失败。
ZH_ERR_VO_ILLEGAL_PARAM回调函数无效。

注意事项

需要显示设备处于使能状态。


ZH_MPI_VO_GetHdmiParam

描述

获取显示接口的 HDMI 属性参数。

语法

ZH_S32 ZH_MPI_VO_GetHdmiParam(ZH_U32 enIntfType, ZH_U32 u32Id, VO_HDMI_PARAM_S *pstHdmiParam)

参数

参数名称数据类型描述输入/输出
enIntfTypeZH_U32显示输出接口类型。输入
u32IdZH_U32同类型显示输出接口设备号,比如 HDMI0、HDMI1。输入
pstHdmiParamVO_HDMI_PARAM_S*HDMI 属性结构体指针。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_ILLEGAL_PARAMenIntfType 不正确。
ZH_ERR_VO_NULL_PTRpstHdmiParam 为空指针。
ZH_ERR_VO_SYS_NOTREADY系统未准备好。

注意事项

u32Id 为芯片相同接口类型的 ID 号,比如有两个芯片内置 HDMI,u32Id 可以取值 0 和 1。


ZH_MPI_VO_SetHdmiParam

描述

设置显示接口的 HDMI 属性参数。

语法

ZH_S32 ZH_MPI_VO_SetHdmiParam(ZH_U32 enIntfType, ZH_U32 u32Id, const VO_HDMI_PARAM_S *pstHdmiParam)

参数

参数名称数据类型描述输入/输出
enIntfTypeZH_U32显示输出接口类型。输入
u32IdZH_U32同类型显示输出接口设备号,比如 HDMI0、HDMI1。输入
pstHdmiParamconst VO_HDMI_PARAM_S*HDMI 属性结构体指针。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_ILLEGAL_PARAMenIntfType 不正确。
ZH_ERR_VO_NULL_PTRpstHdmiParam 为空指针。
ZH_ERR_VO_SYS_NOTREADY系统未准备好。

注意事项

u32Id 为芯片相同接口类型的 ID 号,比如有两个芯片内置 HDMI,u32Id 可以取值 0 和 1。

示例代码

VO_HDMI_PARAM_S stHdmiParam;

ZH_MPI_VO_GetHdmiParam(VO_INTF_HDMI, 0, &stHdmiParam);

stHdmiParam.enColorFmt = VO_HDMI_COLOR_FORMAT_RGB;
stHdmiParam.enQuantRange = VO_HDMI_QUANT_RANGE_FULL;
stHdmiParam.enHdmiMode = VO_HDMI_MODE_HDMI;

ZH_MPI_VO_SetHdmiParam(VO_INTF_HDMI, 0, &stHdmiParam);

ZH_MPI_VO_SyncDevs

描述

同步不同的 VoDev 帧中断。

语法

ZH_MPI_VO_SyncDevs(ZH_U32 u32Vodevs)

参数

参数名称数据类型描述输入/输出
u32VodevsZH_U32每个比特表示需要同步的显示输出设备 ID。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_DEVIDVoDev 不正确。
ZH_ERR_VO_BUSY创建、使能显示输出设备失败。

注意事项

必须在所有需要同步的 VoDev 使能 ZH_MPI_Enable 之后调用。

示例代码

...
ZH_MPI_Enable(0);
...
ZH_MPI_Enable(2);
...

// 同步VoDev0 和 VoDev2
u32TimeOut = 10;
u32Devs = BIT(0) | BIT(2);
while (timeout--) {
u32Ret = ZH_MPI_VO_SyncDevs(u32Devs);
if (u32Ret == ZH_ERR_VO_NOT_SUPPORT)
return;
else if (u32Ret == 0)
break;
else
usleep(100000);
}

ZH_MPI_VO_CloseFd

描述

关闭视频输出模块所有占用的 Fd。

语法

ZH_S32 ZH_MPI_VO_CloseFd(ZH_VOID)

参数

无。

返回值

返回值描述
0成功。

Framebuffer 设置

ZH_MPI_VO_CreateGraphicsFrameBuffer

描述

创建图形层 Framebuffer。

语法

ZH_S32 ZH_MPI_VO_CreateGraphicsFrameBuffer(int Width, int Hight, ZH_U32 Formant, ZH_VOID **fd)

参数

参数名称数据类型描述输入/输出
Widthint图形宽度。输入
Hightint图形高度。输入
FormantZH_U32像素格式类型。输入
fdZH_VOID**Void *类型指针。输入

返回值

返回值描述
0申请 buffer 失败。
非 0申请的 buffer 长度。

示例代码

ZH_U32 u32ImageWidth;
ZH_U32 u32ImageHeight;
ZH_VOID *pMblk = ZH_NULL;
VO_FRAME_INFO_S stFrameInfo;
ZH_U32 u32BuffSize;

u32ImageWidth = 1920;
u32ImageHeight = 1080;
u32BuffSize = ZH_MPI_VO_CreateGraphicsFrameBuffer(u32ImageWidth, u32ImageHeight,
ZH_FMT_YUV420SP, &pMblk);
if (u32BuffSize == 0) {
return ZH_FAILURE;
}
/*do something to fill Graphic FrameBuffer */
ZH_MPI_VO_GetFrameInfo(*pMblk, &stFrameInfo);
...
ZH_MPI_VO_DestroyGraphicsFrameBuffer(pMblk);

相关主题

ZH_MPI_VO_DestroyGraphicsFrameBuffer


ZH_MPI_VO_DestroyGraphicsFrameBuffer

描述

销毁图形层 Framebuffer。

语法

ZH_S32 ZH_MPI_VO_DestroyGraphicsFrameBuffer(ZH_VOID *fd)

参数

参数名称数据类型描述输入/输出
fdZH_VOID*void 类型指针。输入

返回值

返回值描述
0成功。
非 0失败。

相关主题

ZH_MPI_VO_CreateGraphicsFrameBuffer


ZH_MPI_VO_GetGraphicsFrameBuffer

描述

获取创建的 Framebuffer 虚拟地址。

语法

ZH_VOID *ZH_MPI_VO_GetGraphicsFrameBuffer(ZH_VOID *fd)

参数

参数名称数据类型描述输入/输出
fdZH_VOID*void 类型指针。输入

返回值

返回值描述
NULL获取地址失败。
非零获取的 Frame Buffer 虚拟地址。

ZH_MPI_VO_SetGFxMode

描述

设置图形 buffer 的创建模式。

语法

ZH_S32 ZH_MPI_VO_SetGFxMode(VO_GFX_MODE_E u32Mode)

参数

参数名称数据类型描述输入/输出
u32ModeVO_GFX_MODE_E图形 buffer 创建模式。输入

返回值

返回值描述
0成功。
非 0失败。

注意事项

该函数需要在与 VO 相关的任何操作函数之前调用。

示例代码

请参见 ZH_MPI_VO_GetGfxFrameBuffer 的举例。

相关主题

ZH_MPI_VO_GetGfxFrameBuffer


ZH_MPI_VO_GetGfxFrameBuffer

描述

获取指定图形通道预创建的 buffer。该 API创建的是单个图形 buffer,适合于 OSD,画字,画边框等场景。

语法

ZH_S32 ZH_MPI_VO_GetGfxFrameBuffer(VO_LAYER VoLayer, VO_CHN VoChn, VO_FRAME_INFO_S *pstFrame)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN图形通道号,取值范围:[0,VO_MAX_CHN_NUM)。输入
pstFrameVO_FRAME_INFO_S*VO_FRAME_INFO_S 指针。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERID输入 VoLayer 不正确。
ZH_ERR_VO_INVALID_CHNID输入 VoChn 不正确。
ZH_ERR_VO_NULL_PTRpstFrame 为空指针。
ZH_ERR_VO_NOT_PERMITVoLayer 没有设置预创建模式。
ZH_ERR_VO_NOT_SUPPORT不支持 pstFrame 的 enPixelFormat。
ZH_ERR_VO_BUSYVoChn 对应的图层通道已经申请过 buffer。

注意事项

  • 预创建图形 buffer 需要在对 VO 进行相关操作之前,适合于 Video 层和 UI 层融合场景。
  • 图形通道数据格式为 BGRA5551/RGBA5551 时,需要填写 u32FgAlpha 和 u32BgAlpha 参数。
  • 在视频层上使用预创建图形 buffer 的方式,不用再使能 UI 图形层,也即是不需要使用 UIlayer。
  • 通过 ZH_MPI_VO_GetGfxFrameBuffer 设置 UI 单 buffer 的方式相对性能更好。

示例代码

VO_PUB_ATTR_S VoPubAttr;
VO_VIDEO_LAYER_ATTR_S stLayerAttr;
ZH_U32 s32Ret;
ZH_U32 u32DispWidth = 1920;
ZH_U32 u32DispHeight = 1080;
ZH_U32 u32ImageWidth = 1920;
ZH_U32 u32ImageHeight = 1080;

memset(&VoPubAttr, 0, sizeof(VO_PUB_ATTR_S));
memset(&stLayerAttr, 0, sizeof(VO_VIDEO_LAYER_ATTR_S));

stLayerAttr.enPixFormat = ZH_FMT_YUV420SP;
stLayerAttr.stDispRect.s32X = 0;
stLayerAttr.stDispRect.s32Y = 0;
stLayerAttr.stDispRect.u32Width = u32DispWidth;
stLayerAttr.stDispRect.u32Height = u32DispHeight;
stLayerAttr.stImageSize.u32Width = u32ImageWidth;
stLayerAttr.stImageSize.u32Height = u32ImageHeight;

VO_LAYER VoLayer = VO_LAYER_CLUSTER0;
VO_DEV VoDev = ZH_VO_DEV_HD0;
VoPubAttr.enIntfType = VO_INTF_HDMI;
VoPubAttr.enIntfSync = VO_OUTPUT_1080P60;

VO_FRAME_INFO_S stVFrame;
ZH_MPI_VO_SetGfxMode(VO_MODE_GFX_PRE_CREATED);
/* Get 1st GFX buffer */
stVFrame.enPixelFormat = ZH_FMT_BGRA5551;
stVFrame.u32FgAlpha = 128;
stVFrame.u32BgAlpha = 0;
stVFrame.u32Width = 1920;
stVFrame.u32Height = 1080;
ZH_MPI_VO_GetGfxFrameBuffer(VoLayer, 127, &stVFrame);
/* Draw 1st GFX */
memset(stVFrame.pData, 0xff, stVFrame.u32Size);

/* Get 2nd GFX buffer */
stVFrame.u32FgAlpha = 128;
stVFrame.u32BgAlpha = 0;
ZH_MPI_VO_GetGfxFrameBuffer(VoLayer, 126, &stVFrame);

/* Draw 2nd GFX */
memset(stVFrame.pData, 0, stVFrame.u32Size);

s32Ret = ZH_MPI_VO_SetPubAttr(VoDev, &VoPubAttr);
if (s32Ret != ZH_SUCCESS) {
return ZH_FAILURE;
}
s32Ret = ZH_MPI_VO_Enable(VoDev);
if (s32Ret != ZH_SUCCESS) {
return ZH_FAILURE;
}
s32Ret = ZH_MPI_VO_SetLayerAttr(VoLayer, &stLayerAttr);
if (s32Ret != ZH_SUCCESS)
return ZH_FAILURE;
s32Ret = ZH_MPI_VO_EnableLayer(VoLayer);
if (s32Ret != ZH_SUCCESS)
return ZH_FAILURE;
s32Ret = ZH_MPI_VO_DisableLayer(VoLayer);
if (s32Ret != ZH_SUCCESS)
return ZH_FAILURE;

相关主题

ZH_MPI_VO_ReleaseGfxFrameBuffer


ZH_MPI_VO_ReleaseGfxFrameBuffer

描述

释放指定图形通道预创建的 buffer。

语法

ZH_S32 ZH_MPI_VO_ReleaseGfxFrameBuffer(VO_LAYER VoLayer, VO_CHN VoChn)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN图形通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERID输入 VoLayer 不正确。
ZH_ERR_VO_INVALID_CHNID输入 VoDev 不正确。
ZH_ERR_VO_NULL_PTRpstFrame 为空指针。
ZH_ERR_VO_NOT_PERMITVoLayer 没有设置预创建模式。

图层操作

每个 VoDev 支持的图层分为视频层、图形层、鼠标层、虚拟图层四种。

  • 视频层支持多通道操作,每个通道可以显示一路视频输入,通道之间可以相互叠加;
  • 图形层也支持多通道操作,每个通道可以显示一路图形输入,通道之间可以相互叠加;
  • 图层可以绑定到某个显示输出设备,实现显示输出。
  • 虚拟图层不输出到显示设备,可用于回写。

ZH_MPI_VO_ClearLayersBinding

描述

解除所有图层的绑定关系。

语法

ZH_S32 ZH_MPI_VO_ClearLayersBinding(ZH_VOID)

参数

无。

返回值

返回值描述
0成功。
ZH_ERR_VO_NOT_SUPPORT设备不支持。

注意事项

调用时,所有图层和显示设备需要处于关闭状态。


ZH_MPI_VO_BindLayer

描述

设置图层和显示设备绑定关系,绑定图层到指定 VOP 设备。

语法

ZH_S32 ZH_MPI_VO_BindLayer(VO_LAYER VoLayer, VO_DEV VoDev, VO_LAYER_MODE_E Mode)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER需要绑定的图层号。输入
VoDevVO_DEV需要绑定的 VOP 设备号。输入
ModeVO_LAYER_MODE_E图层类型。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_DEVID输入 VoDev 不正确。
ZH_ERR_VO_INVALID_LAYERID输入 VoLayer 不正确。
ZH_ERR_VO_SYS_NOTREADYVO 相关服务创建失败。
ZH_ERR_VO_DEV_HAS_BINDEDVoLayer 已经绑定过其他显示输出设备。
ZH_ERR_VO_ILLEGAL_PARAMMode 参数错误。

注意事项

  • 图层若已绑定过显示输出设备,再次绑定前需先解除图层和原显示输出设备的绑定关系。
  • 一个 VoDev 只支持一个鼠标层 + 一个视频层 + 一个图形层。
  • 绑定的显示设备要处于关闭状态。
  • 虚拟图层绑定的图层类型必须为 VO_LAYER_MODE_VIRTUAL 。

ZH_MPI_VO_UnBindLayer

描述

解除图层和显示输出设备的绑定关系。

语法

ZH_S32 ZH_MPI_VO_UnBindLayer(VO_LAYER VoLayer, VO_DEV VoDev)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER需要解除绑定的图层号。输入
VoDevVO_DEV需要解除绑定的 VOP 设备号。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_DEVID输入 VoDev 不正确。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_SYS_NOTREADYVO 相关服务创建失败。

注意事项

绑定的显示输出设备(VoDev)要处于关闭状态。

示例代码

请参见 ZH_MPI_VO_EnableLayer

相关主题

ZH_MPI_VO_EnableLayer


ZH_MPI_VO_SetLayerAttr

描述

设置图层属性。

语法

ZH_S32 ZH_MPI_VO_SetLayerAttr(VO_LAYER VoLayer, const VO_VIDEO_LAYER_ATTR_S *pstLayerVideoAttr)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER图层数。输入
pstLayerVideoAttrconst VO_VIDEO_LAYER_ATTR_S*视频层属性结构体指针。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_NULL_PTRpstLayerVideoAttr 为空指针。
ZH_ERR_VO_ILLEGAL_PARAM不支持 pstLayerVideoAttr 说明的颜色格式。

注意事项

图层属性的显示帧率不能超过图层绑定显示输出设备的刷新率。


ZH_MPI_VO_GetLayerAttr

描述

获取图层属性。

语法

ZH_S32 ZH_MPI_VO_GetLayerAttr(VO_LAYER VoLayer, VO_VIDEO_LAYER_ATTR_S *pstLayerAttr)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER图层号。输入
pstLayerAttrVO_VIDEO_LAYER_ATTR_S*视频层属性结构体指针。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_NULL_PTRpstLayerAttr 为空指针。

ZH_MPI_VO_SetLayerSpliceMode

描述

设置图层合成方式。

语法

ZH_S32 ZH_MPI_VO_SetLayerSpliceMode(VO_LAYER VoLayer, VO_SPLICE_MODE_E enSpliceMode)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER图层号。输入
enSpliceModeVO_SPLICE_MODE_E图层合成方式。输入

返回值

返回值描述
0成功
ZH_ERR_VO_INVALID_LAYERIDVolayer 不正确。
ZH_ERR_VO_ILLEGAL_PARAMenSpliceMode 参数不正确。

注意事项

目前只支持 GPU 合成方式。


ZH_MPI_VO_GetLayerSpliceMode

描述

获取图层合成方式。

语法

ZH_S32 ZH_MPI_VO_GetLayerSpliceMode(VO_LAYER VoLayer, VO_SPLICE_MODE_E *enSpliceMode)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER图层号。输入
enSpliceModeVO_SPLICE_MODE_E*图层合成方式。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_NULL_PTRenSpliceMode 为空指针。

ZH_MPI_VO_EnableLayer

描述

使能图层。

语法

ZH_S32 ZH_MPI_VO_EnableLayer(VO_LAYER VoLayer)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER图层号。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_BUSYVO 相关服务创建失败
ZH_ERR_VO_LAYER_NOT_BINDEDVoLayer 未绑定 VoDev。
ZH_ERR_VO_DEV_NOT_ENABLEVoLayer 绑定的 VoDev 未使能。
ZH_ERR_VO_NO_MEM系统内存不足。
ZH_ERR_VO_SYS_NOTREADY图层相关服务创建失败。

注意事项

示例

VO_PUB_ATTR_S VoPubAttr;
VO_VIDEO_LAYER_ATTR_S stLayerAttr;
ZH_U32 s32Ret;
ZH_U32 VoDev, VoLayer;

memset(&VoPubAttr, 0, sizeof(VO_PUB_ATTR_S));
memset(&stLayerAttr, 0, sizeof(VO_VIDEO_LAYER_ATTR_S));

VoPubAttr.enIntfType = VO_INTF_HDMI;
VoPubAttr.enIntfSync = VO_OUTPUT_1080P50;
VoDev = ZH_VO_DEV_HD0;
VoLayer = ZH_VO_LAYER_CLUSTER0;

ZH_MPI_VO_BindLayer(VoLayer, VoDev, VO_LAYER_MODE_VIDEO);
s32Ret = ZH_MPI_VO_SetPubAttr(VoDev, &VoPubAttr);
if (s32Ret != ZH_SUCCESS) {
return s32Ret;
}
s32Ret = ZH_MPI_VO_Enable(VoDev);
if (s32Ret != ZH_SUCCESS) {
return s32Ret;
}
stLayerAttr.stDispRect.s32X = 0;
stLayerAttr.stDispRect.s32Y = 0;
stLayerAttr.stDispRect.u32Width = 1920;
stLayerAttr.stDispRect.u32Height = 1080;
stLayerAttr.stImageSize.u32Width = 1920;
stLayerAttr.stImageSize.u32Height = 1080;
stLayerAttr.u32DispFrmRt = 25;
stLayerAttr.enPixFormat = ZH_FMT_YUV420SP;
stLayerAttr.enCompressMode = COMPRESS_AFBC_16x16;
s32Ret = ZH_MPI_VO_SetLayerAttr(VoLayer, &stLayerAttr);
if (s32Ret != ZH_SUCCESS) {
return s32Ret;
}
s32Ret = ZH_MPI_VO_EnableLayer(VoLayer);
if (s32Ret != ZH_SUCCESS) {
return s32Ret;
}
s32Ret = ZH_MPI_VO_DisableLayer(VoLayer);
if (s32Ret != ZH_SUCCESS) {
return s32Ret;
}

ZH_MPI_VO_DisableLayer

描述

禁止图层。

语法

ZH_S32 ZH_MPI_VO_DisableLayer(VO_LAYER VoLayer)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER图层号。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_WBC_NOT_DISABLE图层的回写功能未关闭。

ZH_MPI_VO_SetLayerDispBufLen

描述

设置图层上的显示缓存长度。

语法

ZH_S32 ZH_MPI_VO_SetLayerDispBufLen(VO_LAYER VoLayer, ZH_U32 u32BufLen)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER图层号。输入
u32BufLenZH_U32显示缓冲的长度。[3,15]。输入

返回值

返回值描述
0成功
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_DEV_HAS_ENABLED图层已经使能。
ZH_ERR_VO_ILLEGAL_PARAMu32BufLen 值不正确。

ZH_MPI_VO_GetLayerDispBufLen

描述

获取图层上的显示缓存长度。

语法

ZH_S32 ZH_MPI_VO_GetLayerDispBufLen(VO_LAYER VoLayer, ZH_U32 *pu32BufLen)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER图层号。输入
pu32BufLenZH_U32*u32 类型指针。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_NULL_PTRpu32BufLen 为空指针。

ZH_MPI_VO_GetLayerFrame

描述

获取图层上的输出图像帧。

语法

ZH_S32 ZH_MPI_VO_GetLayerFrame(VO_LAYER VoLayer, VIDEO_FRAME_INFO_S *pstVFrame, ZH_S32 s32MilliSec)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER图层号。输入
pstVFrameVIDEO_FRAME_INFO_S*获取的输出屏幕图像数据信息结构体指针。输出
s32MilliSecZH_S32超时参数,目前默认设置为 0。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_NULL_PTRpstVFrame 为空指针。
ZH_ERR_VO_LAYER_NOT_ENABLE图层未使能。

注意事项

只支持获取视频层和虚拟层数据。


ZH_MPI_VO_ReleaseLayerFrame

描述

释放图层上的输出图像帧。

语法

ZH_S32 ZH_MPI_VO_ReleaseLayerFrame(VO_LAYER VoLayer, VIDEO_FRAME_INFO_S *pstVFrame)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER图层号。输入
pstVFrameVIDEO_FRAME_INFO_S*获取的输出屏幕图像数据信息结构体指针。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_NULL_PTRpstVFrame 为空指针。

ZH_MPI_VO_SendLayerFrame

描述

将图像送入指定图形层输出通道显示。

语法

ZH_S32 ZH_MPI_VO_SendLayerFrame(VO_LAYER VoLayer, VIDEO_FRAME_INFO_S *pstVFrame)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER图形层号。输入
pstVFrameVIDEO_FRAME_INFO_S*发送的输出屏幕图像数据信息结构体指针。输入

返回值

返回值描述
0成功
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_NULL_PTRpstVFrame 为空指针。
ZH_ERR_VO_LAYER_NOT_ENABLE图层未使能。
ZH_ERR_VO_ILLEGAL_PARAMpstVFrame 不符合要求。

注意事项

该函数直接将图像数据送给图层显示,图像数据格式由图层性能决定。


ZH_MPI_VO_SetCursorPostion

描述

更新鼠标层的坐标。

语法

ZH_S32 ZH_MPI_VO_SetCursorPostion(VO_LAYER VoLayer, const ZH_U32 x, const ZH_U32 y)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER鼠标图层号。输入
xconst ZH_U32x 轴坐标。输入
yconst ZH_U32y 轴坐标。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确,或者图层不是鼠标层。
ZH_ERR_VO_NULL_PTR图层数据为空。
ZH_ERR_VO_LAYER_NOT_ENABLE图层未使能。

注意事项

首先需要调用 ZH_MPI_VO_SendLayerFrame 将第一帧送显,第二帧开始再用该函数更新坐标。


ZH_MPI_VO_SetCursorLogicalRect

描述

设置鼠标移动区域。

语法

ZH_S32 ZH_MPI_VO_SetCursorLogicalRect(VO_LAYER VoLayer, const ZH_U32 maxWidth, const ZH_U32 maxHeight)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER鼠标图层号。输入
maxWidthconst ZH_U32鼠标右边界。输入
maxHeightconst ZH_U32鼠标下边界。输入

注意事项

当应用层鼠标移动范围与实际显示范围不一致时使用,例如显示器 4K 分辨率,UI 和鼠标都在 1080P 范围内时候调用该接口,当 maxWidth/maxHeight 设为 0 时,恢复 1:1 比例。

示例代码

VO_PUB_ATTR_S stVoPubAttr;
VO_VIDEO_LAYER_ATTR_S stLayerAttr;
VO_CHN_ATTR_S stChnAttr;
ZH_U32 x=100, y=100;
ZH_U32 u32BuffSize;
ZH_S32 s32Ret = ZH_SUCCESS;
ZH_S32 VoDev = ZH_VO_DEV_HD1;
VO_LAYER VoLayer = ZH_VO_LAYER_SMART_0;
VIDEO_FRAME_INFO_S stVFrame;
void* pmlk;

ZH_MPI_VO_BindLayer(VoLayer, VoDev, VO_LAYER_MODE_CURSOR);

// 启用VO设备,设置4K分辨率
stVoPubAttr.enIntfType = VO_INTF_HDMI;
stVoPubAttr.enIntfSync = VO_OUTPUT_3840x2160_30;

通道操作

ZH_MPI_VO_EnableChn

描述

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

语法

ZH_S32 ZH_MPI_VO_EnableChn(VO_LAYER VoLayer, VO_CHN VoChn)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NO_MEM系统内存不足。

示例代码

VO_VIDEO_LAYER_ATTR_S stLayerAttr;
VO_CHN_ATTR_S stChnAttr;
ZH_U32 i;
ZH_S32 s32Ret = ZH_SUCCESS;
ZH_U32 u32Layers = 2;
VO_LAYER VoLayer = 4;

memset(&stLayerAttr, 0, sizeof(VO_VIDEO_LAYER_ATTR_S));
stLayerAttr.enPixFormat = ZH_FMT_BGRA8888;
stLayerAttr.stDispRect.s32X = 0;
stLayerAttr.stDispRect.s32Y = 0;
stLayerAttr.stImageSize.u32Width = 1920;
stLayerAttr.stImageSize.u32Height = 1080;
stLayerAttr.u32DispFrmRt = 25;
s32Ret = ZH_MPI_VO_SetLayerAttr(VoLayer, &stLayerAttr);
if (s32Ret != ZH_SUCCESS)
return ZH_FAILURE;

s32Ret = ZH_MPI_VO_EnableLayer(VoLayer);
if (s32Ret != ZH_SUCCESS)
return ZH_FAILURE;

s32Ret = ZH_MPI_VO_GetLayerAttr(VoLayer, &stLayerAttr);
if (s32Ret != ZH_SUCCESS) {
ZH_LOGE("[%s] Get Layer Attr failed\n", __func__);
return ZH_FAILURE;
}

for (i = 0; i < u32Layers; i++) {
stChnAttr.stRect.s32X = 0;
stChnAttr.stRect.s32Y = 0;
stChnAttr.stRect.u32Width = stLayerAttr.stImageSize.u32Width;
stChnAttr.stRect.u32Height = stLayerAttr.stImageSize.u32Height;
stChnAttr.u32Priority = i;
if (i == 0) {
stChnAttr.u32FgAlpha = 128;
stChnAttr.u32BgAlpha = 0;
} else {
stChnAttr.u32FgAlpha = 0;
stChnAttr.u32BgAlpha = 128;
}

s32Ret = ZH_MPI_VO_SetChnAttr(VoLayer, i, &stChnAttr);
if (s32Ret != ZH_SUCCESS) {
ZH_LOGE("[%s] set chn Attr failed\n", __func__);
return ZH_FAILURE;
}

s32Ret = ZH_MPI_VO_EnableChn(VoLayer, i);
if (s32Ret != ZH_SUCCESS) {
ZH_LOGE("[%s] Enalbe chn failed\n", __func__);
return ZH_FAILURE;
}
}

相关主题

ZH_MPI_VO_DisableChn


ZH_MPI_VO_DisableChn

描述

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

语法

ZH_S32 ZH_MPI_VO_DisableChn(VO_LAYER VoLayer, VO_CHN VoChn)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_CHN_NOT_ENABLE通道未使能。

示例代码

ZH_U32 i, u32Windows;
VO_LAYER VoLayer = 0;
ZH_S32 s32Ret = ZH_SUCCESS;
ZH_S32 u32Windows = 4;

for (i = 0; i < u32Windows; i++) {
ZH_MPI_VO_ClearChnBuffer(VoLayer, i, ZH_TRUE);
s32Ret = ZH_MPI_VO_DisableChn(VoLayer, i);
if (s32Ret != ZH_SUCCESS)
return ZH_FAILURE;
}

相关主题

ZH_MPI_VO_EnableChn


ZH_MPI_VO_SetChnAttr

描述

设置指定视频输出通道的属性。

语法

ZH_S32 ZH_MPI_VO_SetChnAttr(VO_LAYER VoLayer, VO_CHN VoChn, const VO_CHN_ATTR_S *pstChnAttr)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号。输入
pstChnAttrconst VO_CHN_ATTR_S*通道属性结构体指针。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpstChnAttr 为空指针。
ZH_ERR_VO_ILLEGAL_PARAM参数不合法。

ZH_MPI_VO_GetChnAttr

描述

获取指定视频输出通道的属性。

语法

ZH_S32 ZH_MPI_VO_GetChnAttr(VO_LAYER VoLayer, VO_CHN VoChn, VO_CHN_ATTR_S *pstAttr)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
pstAttrVO_CHN_ATTR_S*视频通道属性指针。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpstAttr 为空指针。

示例

请参见 ZH_MPI_VO_EnableChn 的举例。

相关主题

ZH_MPI_VO_SetChnAttr


ZH_MPI_VO_SetChnParam

描述

配置指定视频输出通道的参数。

语法

ZH_S32 ZH_MPI_VO_SetChnParam(VO_LAYER VoLayer, VO_CHN VoChn, const VO_CHN_PARAM_S *pstChnParam)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
pstChnParamconst VO_CHN_PARAM_S*视频通道参数指针。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpstChnParam 为空指针。

ZH_MPI_VO_GetChnParam

描述

获取指定视频输出通道的参数。

语法

ZH_S32 ZH_MPI_VO_GetChnParam(VO_LAYER VoLayer, VO_CHN VoChn, VO_CHN_PARAM_S *pstChnParam)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
pstChnParamVO_CHN_PARAM_S*视频通道参数指针。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpstChnParam 为空指针。

示例代码

请参见 ZH_MPI_VO_SetChnParam 的举例。

相关主题

ZH_MPI_VO_SetChnParam


ZH_MPI_VO_SetChnDispPos

描述

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

语法

ZH_S32 ZH_MPI_VO_SetChnDispPos(VO_LAYER VoLayer, VO_CHN VoChn, const POINT_S *pstDispPos)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
pstDispPosconst POINT_S*通道显示位置。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpstDispPos 为空指针。

ZH_MPI_VO_GetChnDispPos

描述

获取指定视频输出通道的显示位置。

语法

ZH_S32 ZH_MPI_VO_GetChnDispPos(VO_LAYER VoLayer, VO_CHN VoChn, POINT_S *pstDispPos)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
pstDispPosPOINT_S*通道显示位置。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpstDispPos 为空指针。

示例代码

VO_CHN_PARAM_S     stChnParam;
VO_VIDEO_LAYER_ATTR_S stLayerAttr;

VO_LAYER VoLayer = VO_LAYER_CLUSTER_0;
VO_CHN VoChn = 0;
ZH_S32 s32Ret = ZH_SUCCESS;;

s32Ret = ZH_MPI_VO_GetLayerAttr(VoLayer, &stLayerAttr);
if (s32Ret != ZH_SUCCESS)
return ZH_FAILURE;

s32Ret = ZH_MPI_VO_GetChnParam(VoLayer, VoChn, &stChnParam);
if (s32Ret != ZH_SUCCESS)
return ZH_FAILURE;

stChnParam.stAspectRatio.enMode = ASPECT_RATIO_MANUAL;
u32Width = stLayerAttr.stDispRect.u32Width;
u32Height = stLayerAttr.stDispRect.u32Height;
stChnParam.stAspectRatio.stVideoRect.s32X = 0;
stChnParam.stAspectRatio.stVideoRect.s32Y = 0;
stChnParam.stAspectRatio.stVideoRect.u32Width = u32Width;
stChnParam.stAspectRatio.stVideoRect.u32Height = u32Height;
s32Ret = ZH_MPI_VO_SetChnParam(VoLayer, VoChn, &stChnParam);
if (s32Ret != ZH_SUCCESS)
return ZH_FAILURE;

相关主题

ZH_MPI_VO_SetChnDispPos


ZH_MPI_VO_GetChnFrame

描述

获取通道帧。

语法

ZH_S32 ZH_MPI_VO_GetChnFrame(VO_LAYER VoLayer, VO_CHN VoChn, VIDEO_FRAME_INFO_S *pstFrame, ZH_S32 s32MilliSec)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
pstVFrameVIDEO_FRAME_INFO_S*视频数据信息指针。输入
s32MilliSecZH_S32超时时间的单位为毫秒(ms)。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpstFrame 为空指针。

ZH_MPI_VO_ReleaseChnFrame

描述

释放输出通道图像数据。

语法

ZH_S32 ZH_MPI_VO_ReleaseChnFrame(VO_LAYER VoLayer, VO_CHN VoChn, const VIDEO_FRAME_INFO_S *pstFrame)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
pstVFrameVIDEO_FRAME_INFO_S*释放的输出通道图像数据信息结构体指针。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpstFrame 为空指针。

ZH_MPI_VO_SendFrame

描述

将视频图像送入指定输出通道显示。

语法

ZH_S32 ZH_MPI_VO_SendFrame(VO_LAYER VoLayer, VO_CHN VoChn, VIDEO_FRAME_INFO_S *pstVFrame, ZH_S32 s32MilliSec)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
pstVFrameVIDEO_FRAME_INFO_S*视频数据信息指针。输入
s32MilliSecZH_S32超时时间的单位为毫秒(ms)。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpstFrame 为空指针。
ZH_ERR_VO_ILLEGAL_PARAMpstFrame 不正确。

示例代码

VoVideoLayer = VO_LAYER_CLUSTER_0;
VoChn = 0;
/*fill pMbBlk*/
pstVFrame->stVFrame.pMbBlk = pMbBlk;
do {
ret = ZH_MPI_VO_SendFrame(VoVideoLayer, VoChn, pstVFrame, -1);
if (ret == RT_OK) {
break;
} else {
ZH_MPI_VO_DestroyGraphicsFrameBuffer(pMbBlk);
free(pstVFrame);
break;
}
} while (1);

ZH_MPI_VO_SetChnFrameRate

描述

设置指定视频输出通道的显示帧率。

语法

ZH_S32 ZH_MPI_VO_SetChnFrameRate(VO_LAYER VoLayer, VO_CHN VoChn, ZH_S32 s32ChnFrmRate)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
s32ChnFrmRateZH_S32视频通道显示帧率。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。

示例代码

VO_LAYER VoLayer = VO_LAYER_CLUSTER_0;
VO_CHN VoChn = 0;
ZH_S32 s32ChnFrmRate = 30;

s32Ret = ZH_MPI_VO_SetChnFrameRate(VoLayer, VoChn, s32ChnFrmRate);
if (s32Ret != ZH_VO_OK) {
printf("Set channel %d frame rate failed with errno %x!\n", VoChn, s32Ret);
return ZH_FAILURE;
}

相关主题

ZH_MPI_VO_GetChnFrameRate


ZH_MPI_VO_GetChnFrameRate

描述

获取指定视频输出通道的显示帧率。

语法

ZH_S32 ZH_MPI_VO_GetChnFrameRate(VO_LAYER VoLayer, VO_CHN VoChn, ZH_S32 *ps32ChnFrmRate)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
ps32ChnFrmRateZH_S32*视频通道显示帧率。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRps32ChnFrmRate 为空指针。

相关主题

ZH_MPI_VO_SetChnFrameRate


ZH_MPI_VO_PauseChn

描述

暂停指定的视频输出通道。

语法

ZH_S32 ZH_MPI_VO_PauseChn(VO_LAYER VoLayer, VO_CHN VoChn)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。

示例代码

ZH_S32 i;
VO_LAYER VoLayer = 0;
ZH_U32 u32Screen0Chn = 16;
while (1) {
for (i = 0; i < u32Screen0Chn; i++) {
ZH_MPI_VO_PauseChn(VoLayer, i);
}
usleep(1000llu * 2000);
for (i = 0; i < u32Screen0Chn; i++) {
ZH_MPI_VO_ResumeChn(VoLayer, i);
}
}

相关主题

ZH_MPI_VO_ResumeChn


ZH_MPI_VO_ResumeChn

描述

恢复指定的视频输出通道。

语法

ZH_S32 ZH_MPI_VO_ResumeChn(VO_LAYER VoLayer, VO_CHN VoChn)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。

示例代码

请参见ZH_MPI_VO_PauseChn的举例。


ZH_MPI_VO_StepChn

描述

单帧播放指定的视频输出通道。

语法

ZH_S32 ZH_MPI_VO_StepChn(VO_LAYER VoLayer, VO_CHN VoChn)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。

示例代码

ZH_S32 i;
VO_LAYER VoLayer = 0;
ZH_U32 u32ScreenChn = 16;
ZH_S32 step_frame_num = 50;

while (1) {
for (i = 0; i < ctx->u32ScreenChn; i++) {
for (ZH_S32 j = 0; j < step_frame_num; j++) {
ZH_MPI_VO_StepChn(VoLayer, i);
}
}
usleep(1000ll * 2000);
for (i = 0; i < ctx->u32Screen0Chn; i++) {
ZH_MPI_VO_ResumeChn(VoLayer, i);
}
}

相关主题

ZH_MPI_VO_ResumeChn


ZH_MPI_VO_RefreshChn

描述

刷新指定的视频输出通道。

语法

ZH_S32 ZH_MPI_VO_RefreshChn(VO_LAYER VoLayer, VO_CHN VoChn)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。

注意事项

该函数暂未支持。


ZH_MPI_VO_ShowChn

描述

显示指定通道。

语法

ZH_S32 ZH_MPI_VO_ShowChn(VO_LAYER VoLayer, VO_CHN VoChn)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。

示例代码

请参见 ZH_MPI_VO_HideChn 的举例。

相关主题

ZH_MPI_VO_HideChn


ZH_MPI_VO_HideChn

描述

隐藏指定通道。

语法

ZH_S32 ZH_MPI_VO_HideChn(VO_LAYER VoLayer, VO_CHN VoChn)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。

示例代码

/* hide,show Chn 4 */
VO_LAYER VoLayer;
VoLayer = 0;
ZH_MPI_VO_HideChn(VoLayer, 4);
usleep(1000llu * 5000);
ZH_MPI_VO_ShowChn(VoLayer, 4);

相关主题

ZH_MPI_VO_ShowChn


ZH_MPI_VO_GetChnPts

描述

获取指定视频输出通道正在显示图像的时间戳。

语法

ZH_S32 ZH_MPI_VO_GetChnPts(VO_LAYER VoLayer, VO_CHN VoChn, ZH_U64 *pu64ChnPts)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
pu64ChnPtsZH_U64*通道时间戳指针。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpu64ChnPts 为空指针。
ZH_ERR_VO_LAYER_NOT_ENABLEVoLayer 未使能。
ZH_ERR_VO_CHN_NOT_ENABLEVoChn 未使能。

ZH_MPI_VO_QueryChnStat

描述

查询视频输出通道状态。

语法

ZH_S32 ZH_MPI_VO_QueryChnStat(VO_LAYER VoLayer, VO_CHN VoChn, VO_QUERY_STATUS_S *pstStatus)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
pstStatusVO_QUERY_STATUS_S*通道状态结构体指针。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpstStatus 为空指针。
ZH_ERR_VO_LAYER_NOT_ENABLEVoLayer 未使能。
ZH_ERR_VO_CHN_NOT_ENABLEVoChn 未使能。

ZH_MPI_VO_ClearChnBuffer

描述

清空指定输出通道的缓存 buffer 数据。

语法

ZH_S32 ZH_MPI_VO_ClearChnBuffer(VO_LAYER VoLayer, VO_CHN VoChn, ZH_BOOL bClrAll)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
bClrAllZH_BOOL是否将通道 buffer 中的数据全部清空。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。

示例代码

请参见 ZH_MPI_VO_DisableChn 的举例。


ZH_MPI_VO_SetChnBorder

描述

设置通道的边框属性。

语法

ZH_S32 ZH_MPI_VO_SetChnBorder(VO_LAYER VoLayer, VO_CHN VoChn, const VO_BORDER_S *pstBorder)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
pstBorderconst VO_BORDER_S*通道边框属性指针。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpstBorder 为空指针。

示例代码

VO_BORDER_S border;
ZH_U32 s32Ret;
VO_LAYER VoLayer = VO_LAYER_ESMART_0;
VO_CHN VoChn = 0;

memset(&border, 0, sizeof(VO_BORDER_S));
/* set border */
border.bBorderEn = ZH_TRUE;
/* Navy blue #000080 */
/* Midnight Blue #191970 */
border.stBorder.u32Color = 0x191970;
border.stBorder.u32LeftWidth = 2;
border.stBorder.u32RightWidth = 2;
border.stBorder.u32TopWidth = 2;
border.stBorder.u32BottomWidth = 2;
s32Ret = ZH_MPI_VO_SetChnBorder(VoLayer, VoChn, &border);
if (s32Ret != ZH_SUCCESS) {
printf("Set channel %d Border failed with errno %#x!\n", VoChn,s32Ret);
}

ZH_MPI_VO_GetChnBorder

描述

获取通道的边框属性。

语法

ZH_S32 ZH_MPI_VO_GetChnBorder(VO_LAYER VoLayer, VO_CHN VoChn, VO_BORDER_S *pstBorder)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
pstBorderVO_BORDER_S*通道边框属性指针。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_NULL_PTRpstBorder 为空指针。

相关主题

ZH_MPI_VO_SetChnBorder


ZH_MPI_VO_SetChnRecvThreshold

描述

设置视频输出通道的显示门限值。主要应用场景:PCIV 级联,从片传输图像到主片进行预览显示时,由于传输到主片的图像的时间间隔是不均匀的,可能造成通道待显示图像超过默认的门限值,引起丢帧卡顿现象,需要调大门限值。如果需要显示稳定低延迟,则需要调小门限值。

语法

ZH_S32 ZH_MPI_VO_SetChnRecvThreshold(VO_LAYER VoLayer, VO_CHN VoChn, ZH_U32 u32Threshold)

参数

参数名称数据类型描述输入/输出
VoLayerVO_LAYER视频输出视频层号。输入
VoChnVO_CHN视频输出通道号,取值范围:[0, VO_MAX_CHN_NUM)。输入
u32ThresholdZH_U32视频输出通道的显示门限值。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 不正确。
ZH_ERR_VO_INVALID_CHNIDVoChn 不正确。
ZH_ERR_VO_ILLEGAL_PARAMu32Threshold 为非法值。

注意事项

  • 显示门限取值范围为 [1,4],默认门限为 3,表示该通道图像总的待显示帧数为 3,该通道缓冲队列最多可接收 2 帧图像,再加上正在(或将要)显示的一帧图像,即总的待显示帧数为 3。
  • 门限值越小,预览延迟越小,反之越大,因此,正常情况下,不建议用户调大门限。
  • 可动态调整门限值。如需恢复默认值,需由用户调用本接口将门限设回默认值。

相关主题

ZH_MPI_VO_GetChnRecvThreshold


ZH_MPI_VO_GetChnRecvThreshold

描述

获取视频输出通道的显示门限值。

语法

ZH_S32 ZH_MPI_VO_GetChnRecvThreshold(VO_LAYER VoLayer, VO_CHN VoChn, ZH_U32 *pu32Threshold)

参数

参数数据类型描述
VoLayerVO_LAYER视频层号。
VoChnVO_CHN视频通道号,取值范围 [0, VO_MAX_CHN_NUM]。
pu32ThresholdZH_U32*指向接收门限值的指针。

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_LAYERIDVoLayer 无效。
ZH_ERR_VO_INVALID_CHNIDVoChn 无效。
ZH_ERR_VO_NULL_PTRpu32Threshold 为空指针。

相关主题

ZH_MPI_VO_SetChnRecvThreshold


WBC 回写操作

ZH_MPI_VO_SetWbcSource

语法

ZH_S32 ZH_MPI_VO_SetWbcSource(VO_WBC VoWbc, const VO_WBC_SOURCE_S *pstWbcSource)

描述

设置回写通路的回写源。

参数

参数数据类型描述
VoWbcVO_WBC回写通路号。
pstWbcSourceconst VO_WBC_SOURCE_S*指向视频回写源结构体的常量指针。

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_WBCIDVoWbc 无效。
ZH_ERR_VO_NULL_PTRpstWbcSource 为空指针。
ZH_ERR_VO_NOT_SUPPORT不支持 pstWbcSource 的 enSourceType。

相关主题

ZH_MPI_VO_GetWbcSource


ZH_MPI_VO_GetWbcSource

描述

获取回写通路的回写源。

语法

ZH_S32 ZH_MPI_VO_GetWbcSource(VO_WBC VoWbc, VO_WBC_SOURCE_S *pstWbcSources)

参数

参数名称数据类型描述输入/输出
VoWbcVO_WBC回写通路号。输入
pstWbcSourcesVO_WBC_SOURCE_S*视频回写源结构体。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_WBCIDVoWbc 不正确。
ZH_ERR_VO_NULL_PTRpstWbcSources 为空指针。

示例代码

请参见 ZH_MPI_VO_EnableWbc 的举例。

相关主题

ZH_MPI_VO_SetWbcSource


ZH_MPI_VO_EnableWbc

描述

使能回写。

语法

ZH_S32 ZH_MPI_VO_EnableWbc(VO_WBC VoWbc)

参数

参数名称数据类型描述输入/输出
VoWbcVO_WBC回写通路号。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_WBCIDVoWbc 不正确。
ZH_ERR_VO_NO_MEM系统内存不足。
ZH_ERR_VO_SYS_NOTREADY回写相关服务创建失败。
ZH_ERR_VO_NOT_SUPPORT系统不支持。

注意事项

  • 必须先设置视频回写属性,再使能视频回写功能。
  • 重复使能视频回写返回成功。
  • 视频回写要将回写源 enSourceType 设置为 VO_WBC_SOURCE_VIDEO。
  • 设备回写要将回写源 enSourceType 设置为 VO_WBC_SOURCE_DEV。
  • 视频回写功能⽀持 Auto-bind 模式和⼿动模式,Auto-bind 模式需要绑定 WBC 到其他模块,⽐如 VO 模块或者 VENC 模块,但是不能绑定到 VPSS 模块。

示例代码

VO_WBC_SOURCE_S stWbcSource;
VO_WBC_ATTR_S stWbcAttr;
VO_WBC_MODE_E enWbcMode;
ZH_U32 VoWbc;
ZH_S32 s32Ret = ZH_SUCCESS;
MPP_CHN_S stSrcChn, stDestChn;

VoWbc = 0;
stWbcSource.enSourceType = VO_WBC_SOURCE_VIDEO
stWbcSource.u32SourceId = ZH_VO_DEV_HD0;
ZH_MPI_VO_SetWbcSource(VoWbc, &stWbcSource);

stWbcAttr.stTargetSize.u32Width = 1920;
stWbcAttr.stTargetSize.u32Height = 1080;
stWbcAttr.enPixelFormat = ZH_FMT_RGB888;
stWbcAttr.u32FrameRate = 25;
stWbcAttr.enCompressMode = COMPRESS_MODE_NONE;

s32Ret = ZH_MPI_VO_SetWbcAttr(VoWbc, &stWbcAttr);
if (s32Ret != ZH_SUCCESS) {
return s32Ret;
}

s32Ret = ZH_MPI_VO_EnableWbc(VoWbc);
if (s32Ret != ZH_SUCCESS) {
return s32Ret;
}

/* bind wbc to VO, i.e. */
stSrcChn.enModId = ZH_ID_WBC;
stSrcChn.s32DevId = VoWbc;
stSrcChn.s32ChnId = 0;

stDestChn.enModId = ZH_ID_VO;
stDestChn.s32ChnId = 0;
stDestChn.s32DevId = VO_LAYER_CLUSTER_1;

ZH_MPI_SYS_Bind(&stSrcChn, &stDestChn);

/* disable wbc */
s32Ret = ZH_MPI_VO_DisableWbc(VoWbc);
if (s32Ret != ZH_SUCCESS) {
return s32Ret;
}

相关主题

ZH_MPI_VO_DisableWbc


ZH_MPI_VO_DisableWbc

描述

禁用回写。

语法

ZH_S32 ZH_MPI_VO_DisableWbc(VO_WBC VoWbc)

参数

参数名称数据类型描述输入/输出
VoWbcVO_WBC回写通路号。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_WBCIDVoWbc 不正确。

ZH_MPI_VO_SetWbcAttr

描述

设置视频回写属性。

语法

ZH_S32 ZH_MPI_VO_SetWbcAttr(VO_WBC VoWbc, const VO_WBC_ATTR_S *pstWbcAttr)

参数

参数名称数据类型描述输入/输出
VoWbcVO_WBC回写通路号。输入
pstWbcAttrconst VO_WBC_ATTR_S*视频回写属性指针。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_WBCIDVoWbc 不正确。
ZH_ERR_VO_NULL_PTRpstWbcAttr 为空指针。
ZH_ERR_VO_NOT_SUPPORT不支持 pstWbcAttr 中 enPixelFormat 定义的颜色格式。

注意事项

  • 视频回写最大输出分辨率 1920x1080p。
  • 支持放大,比如将 720p 源放大到 1080p 输出。
  • 视频回写属性不支持 NV12 格式。

示例代码

请参见 ZH_MPI_VO_EnableWbc 的举例。

相关主题

ZH_MPI_VO_GetWbcAttr


ZH_MPI_VO_GetWbcAttr

描述

获取视频回写属性。

语法

ZH_S32 ZH_MPI_VO_GetWbcAttr(VO_WBC VoWbc, VO_WBC_ATTR_S *pstWbcAttr)

参数

参数名称数据类型描述输入/输出
VoWbcVO_WBC回写通路号。输入
pstWbcAttrVO_WBC_ATTR_S*视频回写属性指针。输出

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_WBCIDVoWbc 不正确。
ZH_ERR_VO_NULL_PTRpstWbcAttr 为空指针。

相关主题

ZH_MPI_VO_SetWbcAttr


ZH_MPI_VO_GetWbcFrame

描述

获取回写图像。

语法

ZH_S32 ZH_MPI_VO_GetWbcFrame(VO_WBC VoWbc, VIDEO_FRAME_INFO_S *pstVFrame, ZH_S32 s32MilliSec)

参数

参数名称数据类型描述输入/输出
VoWbcVO_WBC回写通路号。输入
pstVFrameVIDEO_FRAME_INFO_S*获取的视频回写图像数据信息结构体指针。输入
s32MilliSecZH_S32超时参数,目前设置为 0。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_WBCIDVoWbc 不正确。
ZH_ERR_VO_NULL_PTRpstVFrame 为空指针。
ZH_ERR_VO_WBC_NOT_CONFIGVoWbc 对应的回写失败未配置或使能。

相关主题

ZH_MPI_VO_ReleaseWbcFrame


ZH_MPI_VO_ReleaseWbcFrame

描述

释放回写图像。

语法

ZH_S32 ZH_MPI_VO_ReleaseWbcFrame(VO_WBC VoWbc, VIDEO_FRAME_INFO_S *pstVFrame)

参数

参数名称数据类型描述输入/输出
VoWbcVO_WBC回写通路号。输入
pstVFrameVIDEO_FRAME_INFO_S*获取的视频回写图像数据信息结构体指针。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_WBCIDVoWbc 不正确。
ZH_ERR_VO_NULL_PTRpstVFrame 为空指针。

ZH_MPI_VO_SetWbcDepth

描述

设置回写缓存个数。

语法

ZH_S32 ZH_MPI_VO_SetWbcDepth(VO_WBC VoWbc, ZH_S32 u32Depth)

参数

参数名称数据类型描述输入/输出
VoWbcVO_WBC回写通路号。输入
u32DepthZH_S32缓存个数。输入

返回值

返回值描述
0成功。
ZH_ERR_VO_INVALID_WBCIDVoWbc 不正确。
ZH_ERR_VO_NULL_PTRpstVFrame 为空指针。

其他相关函数参数

参数名称描述输入/输出
VoWbc回写通路号。输入
pstVFrame释放的输出通道图像数据信息结构体指针。输入

数据类型

视频输出相关数据类型、数据结构定义如下:


VO_DEV

说明

定义显示输出设备号。

定义

typedef ZH_S32 VO_DEV;

VO_LAYER

说明

定义图层号。

定义

typedef ZH_S32 VO_LAYER;

注意事项

取值参考 VO_LAYER_NAME_EVO_VIR_LAYER_NAME_E


VO_CHN

说明

定义视频输出通道号。

定义

typedef ZH_S32 VO_CHN;

VO_WBC

说明

定义回写通路号。

定义

typedef ZH_S32 VO_WBC;

VO_MAX_DEV_NUM

说明

定义视频输出设备最大个数。

定义

#define VO_MAX_DEV_NUM 3

VO_MAX_LAYER_NUM

说明

定义图层最大个数。

定义

#define VO_MAX_LAYER_NUM 8

VO_MAX_CHN_NUM

说明

定义通道最大个数。

定义

#define VO_MAX_CHN_NUM    128

VO_MAX_WBC_NUM

说明

定义回写设备最大个数。

定义

#define VO_MAX_WBC_NUM    1

VO_GFX_MODE_E

说明

定义图层 buffer 创建模式。

定义

typedef enum zhVO_GFX_MODE_E {
VO_MODE_NORMAL,
VO_MODE_GFX_PRE_CREATED
} VO_GFX_MODE_E;

成员

成员名称描述
VO_MODE_NORMAL正常模式。
VO_MODE_GFX_PRE_CREATED预创建模式。

VO_HDMI_MODE_E

说明

定义 HDMI 输出模式。

定义

typedef enum zhVO_HDMI_MODE_E {
VO_HDMI_MODE_AUTO = 0,
VO_HDMI_MODE_HDMI,
VO_HDMI_MODE_DVI
} VO_HDMI_MODE_E;

成员

成员名称描述
VO_HDMI_MODE_AUTO根据 EDID 自动选择。
VO_HDMI_MODE_HDMI强制 HDMI 模式。
VO_HDMI_MODE_DVI强制 DVI 模式。

VO_HDMI_COLOR_FMT_E

说明

定义 HDMI 输出颜色格式。

定义

typedef enum zhVO_HDMI_COLOR_FMT_E{
VO_HDMI_COLOR_FORMAT_RGB=0,
VO_HDMI_COLOR_FORMAT_YCBCR444,
VO_HDMI_COLOR_FORMAT_YCBCR422,
VO_HDMI_COLOR_FORMAT_YCBCR420,
VO_HDMI_COLOR_FORMT_AUTO,
VO_HDMI_COLOR_FORMAT_BUTT
}VO_HDMI_COLOR_FMT_E;

成员

成员名称描述
VO_HDMI_COLOR_FORMAT_RGBRGB
VO_HDMI_COLOR_FORMAT_YCBCR444YCbCr444
VO_HDMI_COLOR_FORMAT_YCBCR422YCbCr422
VO_HDMI_COLOR_FORMAT_YCBCR420YCbCr420
VO_HDMI_COLOR_FORMT_AUTO根据 EDID 按如下顺序选择,YCbCr444->YCbCr422->YCbCr420->RGB

VO_HDMI_QUANT_RANGE_E

说明

定义 HDMI 输出量化范围。

定义

typedef enum zhVO_HDMI_QUANT_RANGE_E{
VO_HDMI_QUANT_RANGE_AUTO=0,
VO_HDMI_QUANT_RANGE_LIMITED,
VO_HDMI_QUANT_RANGE_FULL,
VO_HDMI_QUANT_RANGE_BUTT
}VO_HDMI_QUANT_RANGE_E;

成员

成员变量描述
VO_HDMI_QUANT_RANGE_AUTO自动。
VO_HDMI_QUANT_RANGE_LIMITED量化范围 [16-235]。
VO_HDMI_QUANT_RANGE_FULL量化范围 [0-255]。

VO_PUB_ATTR_S

说明

视频输出公共属性结构体。

定义

typedef struct zhVO_PUB_ATTR_S {
ZH_U32 u32BgColor;
VO_INTF_TYPE_E enIntfType;
VO_INTF_SYNC_E enIntfSync;
VO_SYNC_INFO_S stSyncInfo;
} VO_PUB_ATTR_S;

成员

成员名称数据类型描述
u32BgColorZH_U32未使用。
enIntfTypeVO_INTF_TYPE_E显示接口类型,可以选择以下值或组合:
VO_INTF_CVBS
VO_INTF_YPBPR
VO_INTF_VGA
VO_INTF_BT656
VO_INTF_BT1120
VO_INTF_LCD
VO_INTF_LVDS
VO_INTF_MIPI
VO_INTF_MIPI1
VO_INTF_EDP
VO_INTF_EDP1
VO_INTF_HDMI
VO_INTF_HDMI1
VO_INTF_DP
VO_INTF_DP1
enIntfSyncVO_INTF_SYNC_E显示接口时序。
stSyncInfoVO_SYNC_INFO_S接口时序信息。
intf_sync 配置用户时序 ZH_VO_OUT_USER 时,该结构体生效。

注意事项

当系统带有两个同类型输出接口时,VO_INTF_MIPI1、VO_INTF_EDP1、VO_INTF_HDMI1、VO_INTF_DP1 用于表示第二个输出接口。


VO_EDID_S

说明

EDID 数据结构体。

定义

typedef struct zh_VO_EDID_S {
ZH_BOOL bEdidValid;
ZH_U32 u32Edidlength;
ZH_U8 u8Edid[512];
} VO_EDID_S;

成员

成员名称数据类型描述
bEdidValidZH_BOOLEDID 合法标志。
u32EdidlengthZH_U32EDID 数据长度。
u8EdidZH_U8EDID 数据。

注意事项

仅在输出 RGB 颜色格式时有效。


VO_SINK_CAPABILITY_S

说明

显示设备状态属性结构。

定义

typedef struct zh_VO_SINK_CAPABILITY_S {
ZH_BOOL bConnected;
ZH_BOOL bSupportYCbCr;
ZH_BOOL bSupportHDMI;
} VO_SINK_CAPABILITY_S;

成员

成员名称数据类型描述
bConnectedZH_BOOL显示设备连接状态。
ZH_TRUE:连接;ZH_FALSE:断开。
bSupportYCbCrZH_BOOL显示设备是否支持 YCbCr 数据。
ZH_TRUE:支持;ZH_FALSE:不支持。
bSupportHDMIZH_BOOL显示设备是否支持 HDMI。
ZH_TRUE:支持;ZH_FALSE:不支持。

ZH_VO_CallBack

说明

显示设备热插拔事件回调函数。

定义

typedef void (*ZH_VO_CallBack)(ZH_VOID *pPrivateData);

成员

成员名称数据类型描述
pPrivateDataZH_VOID*私有数据指针。

ZH_VO_CALLBACK_FUNC_S

说明

显示设备热插拔事件回调函数结构体。

定义

typedef struct zh_VO_CALLBACK_FUNC_S {
ZH_VO_CallBack pfnEventCallback;
ZH_VOID *pPrivateData;
} ZH_VO_CALLBACK_FUNC_S;

成员

成员名称数据类型描述
pfnEventCallbackZH_VO_CallBack回调函数指针。
pPrivateDataZH_VOID*私有数据指针。

ZH_VO_VsyncCallBack

说明

显示设备帧中断事件回调函数。

定义

typedef void (*ZH_VO_VsyncCallBack)(ZH_VOID *pPrivateData, VO_CB_INFO_S *info);

VO_CB_INFO_S

说明

显示设备帧中断事件信息。

定义

typedef struct zh_VO_CB_INFO_S {
ZH_U32 u32Id;
ZH_U32 u32Sec;
ZH_U32 u32Usec;
} VO_CB_INFO_S;

成员

成员名称数据类型描述
u32IdZH_U32显示设备号。
u32SecZH_U32当前中断时间(s)。
u32UsecZH_U32当前中断时间(us)。

VO_HDMI_PARAM_S

说明

HDMI 属性结构体。

定义

typedef struct zh_VO_HDMI_PARAM_S {
VO_HDMI_MODE_E enHdmiMode;
VO_HDMI_COLOR_FMT_E enColorFmt;
VO_HDMI_QUANT_RANGE_E enQuantRange;
} VO_HDMI_PARAM_S;

成员

成员名称数据类型描述
enHdmiModeVO_HDMI_MODE_E输出模式。
enColorFmtVO_HDMI_COLOR_FMT_E输出颜色格式。
enQuantRangeVO_HDMI_QUANT_RANGE_E输出量化范围。

注意事项

enQuantRange 仅在 enColorFmt 为 RGB 格式时生效。


VO_FRAME_INFO_S

说明

定义图形帧信息结构体。

定义

typedef struct zhVO_GFX_FRAME_INFO_S {
ZH_U32 u32Width;
ZH_U32 u32Height;
ZH_U32 u32VirWidth;
ZH_U32 u32VirHeight;
PIXEL_FORMAT_E enPixelFormat;
ZH_U32 u32FgAlpha;
ZH_U32 u32BgAlpha;
ZH_VOID *pData;
ZH_U32 u32Size;
} VO_FRAME_INFO_S;

成员

成员名称数据类型描述
u32WidthZH_U32图像宽度,以像素为单位。
u32HeightZH_U32图像高度,以像素为单位。
u32VirWidthZH_U32图像虚宽,以像素为单位。
u32VirHeightZH_U32图像虚高,以像素为单位。
enPixelFormatPIXEL_FORMAT_E像素格式。
u32FgAlphaZH_U32前景 Alpha 值。
u32BgAlphaZH_U32背景 Alpha 值。
pDataZH_VOID*内存地址。
u32SizeZH_U32内存大小。

注意事项

图形通道数据格式为 BGRA5551/RGBA5551 时,需要填写 u32FgAlpha 和 u32BgAlpha。


VO_LAYER_NAME_E

说明

定义图层号。

定义

typedef enum zhVOP2_LAYER_NAME_E {
VO_LAYER_CLUSTER0 = 0,
VO_LAYER_CLUSTER1,
VO_LAYER_CLUSTER2,
VO_LAYER_CLUSTER3,
VO_LAYER_ESMART0,
VO_LAYER_ESMART1,
VO_LAYER_ESMART2,
VO_LAYER_ESMART3,
VO_LAYER_BUTT
} VO_LAYER_NAME_E;

成员

成员名称描述
VO_LAYER_CLUSTER0CLUSTER 图层 0。
VO_LAYER_CLUSTER1CLUSTER 图层 1。
VO_LAYER_CLUSTER2CLUSTER 图层 2。
VO_LAYER_CLUSTER3CLUSTER 图层 3。
VO_LAYER_ESMART0ESMART 图层 0。
VO_LAYER_ESMART1ESMART 图层 1。
VO_LAYER_ESMART2ESMART 图层 2。
VO_LAYER_ESMART3ESMART 图层 3。

VO_VIR_LAYER_NAME_E

说明

定义虚拟图层号。

定义

typedef enum zhVO_VIR_LAYER_NAME_E {
VO_LAYER_VIRTUAL0 = VO_LAYER_BUTT,
VO_LAYER_VIRTUAL1,
VO_LAYER_VIRTUAL2,
VO_LAYER_VIRTUAL3,
} VO_VIR_LAYER_NAME_E;

成员

成员名称描述
VO_LAYER_VIRTUAL0虚拟图层 0。
VO_LAYER_VIRTUAL1虚拟图层 1。
VO_LAYER_VIRTUAL2虚拟图层 2。
VO_LAYER_VIRTUAL3虚拟图层 3。

VO_LAYER_MODE_E

说明

定义图层类型。

定义

typedef enumzhVO_LAYER_MODE_E{
VO_LAYER_MODE_GRAPHIC,
VO_LAYER_MODE_VIDEO,
VO_LAYER_MODE_VIRTUAL,
VO_LAYER_MODE_BUTT
} VO_LAYER_MODE_E;

成员

成员名称描述
VO_LAYER_MODE_CURSOR鼠标图层。
VO_LAYER_MODE_GRAPHIC图形图层。
VO_LAYER_MODE_VIDEO视频图层。
VO_LAYER_MODE_VIRTUAL虚拟图层。

VO_SPLICE_MODE_E

说明

定义图层合成类型。

定义


typedef enumzhVO_SPLICE_MODE_E{
VO_SPLICE_MODE_GPU=0,
VO_SPLICE_MODE_RGA
} VO_SPLICE_MODE_E;

成员

成员名称描述
VO_SPLICE_MODE_GPUGPU 合成模式。
VO_SPLICE_MODE_RGARGA 合成模式。

VO_VIDEO_LAYER_ATTR_S

说明

定义视频层属性。

定义


typedef struct zhVO_VIDEO_LAYER_ATTR_S {
RECT_SstDispRect;
SIZE_S stImageSize;
ZH_U32u32DispFrmRt;
PIXEL_FORMAT_EenPixFormat;
ZH_BOOLbBypassFrame;
ZH_BOOLbLowDelay;
COMPRESS_MODE_EenCompressMode;
DYNAMIC_RANGE_EenDstDynamicRange;
} VO_VIDEO_LAYER_ATTR_S;

成员

成员名称数据类型描述
stDispRectRECT_S显示分辨率大小。
stImageSizeSIZE_S视频层画布大小。
u32DispFrmRtZH_U32显示帧率。
enPixFormatPIXEL_FORMAT_E视频层使用的像素格式。
bBypassFrameZH_BOOL视频帧不经过拼接,直接给视频图层。
bLowDelayZH_BOOL使用通道 0 的送帧事件,触发拼接,拼接后立即送显。
enCompressModeCOMPRESS_MODE_E视频层帧缓存压缩模式。
enDstDynamicRangeDYNAMIC_RANGE_E未使用。

VO_CHN_ATTR_S

说明

通道属性结构体。

定义

typedef struct zhVO_CHN_ATTR_S {
ZH_U32 u32Priority; /* Video out overlay pri sd */
RECT_S stRect; /* Rectangle of video output channel */
ZH_BOOL bDeflicker; /* * Deflicker or not sd */
ZH_U32 u32FgAlpha; /* Alpha of A = 1 in pixel format BGRA5551/RGBA5551 */
ZH_U32 u32BgAlpha; /* Alpha of A = 0 in pixel format BGRA5551/RGBA5551 */
ZH_BOOL bEnKeyColor; /* Enable key color or not when pixel format BGRA5551/RGBA5551 */
ZH_U32 u32KeyColor; /* Key color value of pixel format BGRA5551/RGBA5551, B[0:4] G[5:9] R[10:14] */
MIRROR_E enMirror; /* RW, Mirror */
ROTATION_E enRotation; /* RW, rotation. */
ZH_U32 u32MaxChnQueue; /* vo channel max queue length */
} VO_CHN_ATTR_S;

成员

成员名称数据类型描述
u32PriorityZH_U32通道优先级,通道显示位置有交叠时,高优先级通道覆盖低优先级通道。
stRectRECT_S通道在图层画布上的显示区域。
bDeflickerZH_BOOL不支持。
u32FgAlphaZH_U32BGRA5551/RGBA5551 格式是 A=1 对应的 Alpha 值。
u32BgAlphaZH_U32BGRA5551/RGBA5551 格式是 A=0 对应的 Alpha 值。
bEnKeyColorZH_BOOL当像素格式为 BGRA5551/RGBA5551 时,使能/禁用关键色功能。
enMirrorZH_U32使能 mirror。
enRotationROTATION_E使能 rotation。
u32MaxChnQueueZH_U32vo 通道 queue 最大长度,未设置时,默认最大为 10。

注意事项

  • 通道数据格式为 BGRA5551/RGBA5551 时,需要填写 u32FgAlpha 和 u32BgAlpha。
  • u32Priority 动态属性,下一个合成周期生效。
  • stRect 动态属性,下一个合成周期生效。
  • 成员动态属性说明:(以下成员具有动态属性,将在下一个合成周期生效)
    • u32FgAlpha 动态属性,下一个合成周期生效,RGA 合成模式下此参数无效。
    • u32BgAlpha 动态属性,下一个合成周期生效,RGA 合成模式下此参数无效。
    • bEnKeyColor 动态属性,下一个合成周期生效,RGA 合成模式下此参数无效。
    • u32KeyColor 动态属性,下一个合成周期生效,RGA 合成模式下此参数无效。
    • enMirror 动态属性,下一个合成周期生效。
    • enRotation 动态属性,下一个合成周期生效。

VO_CHN_PARAM_S

说明

通道参数结构体。

定义

typedef struct zhVO_CHN_PARAM_S {
ASPECT_RATIO_S stAspectRatio; /* RW; aspect ratio */
} VO_CHN_PARAM_S;

成员

成员名称数据类型描述
stAspectRatioASPECT_RATIO_S画面宽高比属性。

注意事项

stAspectRatio 动态属性,下一个合成周期生效,RGA 合成模式下此参数无效。


VO_BORDER_S

说明

边框属性结构体。

定义

typedef struct zhVO_BORDER_S {
ZH_BOOL bBorderEn; /* RW; Do frame or not */
BORDER_S stBorder; /* RW; frame's top, bottom, left, right width and color */
} VO_BORDER_S;

成员

成员名称数据类型描述
bBorderEnZH_BOOL使能边框。
stBorderBORDER_S边框属性。

注意事项

  • bBorderEn 动态属性,下一个合成周期生效,RGA 合成模式下此参数无效。
  • stBorder 动态属性,下一个合成周期生效,RGA 合成模式下此参数无效。

VO_WBC_SOURCE_TYPE_E

说明

定义视频回写类型。

定义

typedef enum zhVO_WBC_SOURCE_TYPE_E {
VO_WBC_SOURCE_DEV = 0x0, /* WBC source is device */
VO_WBC_SOURCE_VIDEO = 0x1, /* WBC source is video layer */
VO_WBC_SOURCE_GRAPHIC = 0x2, /* WBC source is graphic layer. Warning: not supported */
VO_WBC_SOURCE_VIRTUAL = 0x3, /* WBC source is virtual layer */
VO_WBC_SOURCE_BUTT
} VO_WBC_SOURCE_TYPE_E;

成员

成员名称描述
VO_WBC_SOURCE_DEV回写源为设备。
VO_WBC_SOURCE_VIDEO回写源为视频层。
VO_WBC_SOURCE_GRAPHIC回写源为图形层,暂不支持。
VO_WBC_SOURCE_VIRTUAL回写源为虚拟图层。

VO_WBC_SOURCE_S

说明

定义视频回写源。

定义

typedef struct zhVO_WBC_SOURCE_S {
VO_WBC_SOURCE_TYPE_E enSourceType;
ZH_U32 u32SourceId;
} VO_WBC_SOURCE_S;

成员

成员名称数据类型描述
enSourceTypeVO_WBC_SOURCE_TYPE_E视频回写源类型枚举。
u32SourceIdZH_U32视频回写源的编号。

注意事项

  • enSourceType 为 VO_WBC_SOURCE_VIRTUAL 时,u32SourceId 为虚拟图层 ID。
  • enSourceType 为 VO_WBC_SOURCE_DEV/VO_WBC_SOURCE_VIDEO/VO_WBC_SOURCE_GRAPHIC 时,u32SourceId 为 VoDev ID。

VO_WBC_ATTR_S

说明

定义视频回写属性。

定义

typedef struct zhVO_WBC_ATTR_S {
SIZE_S stTargetSize;
PIXEL_FORMAT_E enPixelFormat;
ZH_U32 u32FrameRate;
DYNAMIC_RANGE_E enDynamicRange;
COMPRESS_MODE_E enCompressMode;
} VO_WBC_ATTR_S;

成员

成员名称数据类型描述
stTargetSizeSIZE_S视频回写图像大小。
enPixelFormatPIXEL_FORMAT_E视频回写数据格式。
u32FrameRateZH_U32未使用。
enDynamicRangeDYNAMIC_RANGE_E未使用。
enCompressModeCOMPRESS_MODE_E视频回写压缩模式。

VO错误码

视频输出 API VO 错误码如下所示:

错误代码宏定义描述
0xA0098012ZH_ERR_VO_BUSYVO 相关服务创建、使能输出、设置分辨率等操作失败。
0xA009800CZH_ERR_VO_NO_MEM系统内存不足。
0xA0098006ZH_ERR_VO_NULL_PTR函数参数中有空指针。
0xA0098010ZH_ERR_VO_SYS_NOTREADYVO 相关服务创建失败。
0xA0098001ZH_ERR_VO_INVALID_DEVID设备 ID 超出合法范围。
0xA0098002ZH_ERR_VO_INVALID_CHNID通道 ID 超出合法范围。
0xA0098003ZH_ERR_VO_ILLEGAL_PARAM参数超出合法范围。
0xA0098008ZH_ERR_VO_NOT_SUPPORTVO 不支持输入的参数。
0xA0098009ZH_ERR_VO_NOT_PERMIT操作不允许。
0xA0098058ZH_ERR_VO_INVALID_WBCIDWBC 号超出范围。
0xA0098059ZH_ERR_VO_INVALID_LAYERID视频层号超出范围。
0xA0098041ZH_ERR_VO_DEV_NOT_ENABLE对应的设备未使能。
0xA0098042ZH_ERR_VO_DEV_HAS_ENABLED对应的设备已使能。
0xA0098043ZH_ERR_VO_DEV_HAS_BINDED设备已经绑定过其他显示输出设备。
0xA0098044ZH_ERR_VO_DEV_NOT_BINDED显示输出设备未被绑定。
0xA0098045ZH_ERR_VO_LAYER_NOT_ENABLE图层未使能。
0xA0098047ZH_ERR_VO_LAYER_NOT_CONFIG图层未配置。
0xA009805bZH_ERR_VO_LAYER_NOT_BINDED图层未绑定。
0xA0098055ZH_ERR_VO_WBC_NOT_DISABLEWBC 未禁止。
0xA0098056ZH_ERR_VO_WBC_NOT_CONFIGWBC 属性未设置。
0xA0098049ZH_ERR_VO_CHN_NOT_ENABLE通道未使能。