视频输出 (VO)
概述
系统架构
VoDev、VoLayer、VoChn的关系

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 接口发生数据。 如下图所示。

API参考
- 设备操作:
- ZH_MPI_VO_SetPubAttr:设置视频输出设备的公共属性。
- ZH_MPI_VO_GetPubAttr:获取视频输出设备的公共属性。
- ZH_MPI_VO_Enable:启用视频输出设备。
- ZH_MPI_VO_Disable:禁用视频输出设备。
- ZH_MPI_VO_GetPostProcessParam:获取设备输出图像效果。
- ZH_MPI_VO_SetPostProcessParam:设置设备输出图像效果。
- ZH_MPI_VO_Get_Edid:获取显示设备 EDID 数据。
- ZH_MPI_VO_GetSinkCapability:获取显示设备连接状态和相关能力。
- ZH_MPI_VO_RegCallbackFunc:注册显示设备热插拔回调函数。
- ZH_MPI_VO_UnRegCallbackFunc:注销显示设备热插拔回调函数。
- ZH_MPI_VO_RegVsyncCallbackFunc:注册显示设备帧中断回调函数。
- ZH_MPI_VO_UnRegVsyncCallbackFunc:注销显示设备帧中断回调函数。
- ZH_MPI_VO_GetHdmiParam:获取显示接口的 HDMI 属性参数。
- ZH_MPI_VO_SetHdmiParam:设置显示接口的 HDMI 属性参数。
- ZH_MPI_VO_SyncDevs:同步不同的 VoDev 帧中断。
- ZH_MPI_VO_CloseFd:关闭视频输出模块所有占用的 Fd。
- Framebuffer设置:
- ZH_MPI_VO_CreateGraphicsFrameBuffer:创建图形层 Framebuffer。
- ZH_MPI_VO_DestroyGraphicsFrameBuffer:销毁图形层 Framebuffer。
- ZH_MPI_VO_GetGraphicsFrameBuffer:获取创建的 Framebuffer 虚拟地址。
- ZH_MPI_VO_SetGFxMode:设置图形 buffer 的创建模式。
- ZH_MPI_VO_GetGfxFrameBuffer:获取指定图形通道预创建的 buffer。
- ZH_MPI_VO_ReleaseGfxFrameBuffer:释放指定图形通道预创建的 buffer。
- 图层操作:
- ZH_MPI_VO_ClearLayersBinding:解除所有图层的绑定关系。
- ZH_MPI_VO_BindLayer:设置图层和显示设备绑定关系,绑定图层到指定 VOP 设备。
- ZH_MPI_VO_UnBindLayer:解除图层和显示输出设备的绑定关系。
- ZH_MPI_VO_SetLayerAttr:设置图层属性。
- ZH_MPI_VO_GetLayerAttr:获取图层属性。
- ZH_MPI_VO_SetLayerSpliceMode:设置图层合成方式。
- ZH_MPI_VO_GetLayerSpliceMode:获取图层合成方式。
- ZH_MPI_VO_EnableLayer:使能图层。
- ZH_MPI_VO_DisableLayer:禁止图层。
- ZH_MPI_VO_SetLayerDispBufLen:设置图层上的显示缓存长度。
- ZH_MPI_VO_GetLayerDispBufLen:获取图层上的显示缓存长度。
- ZH_MPI_VO_GetLayerFrame:获取图层上的输出图像帧。
- ZH_MPI_VO_ReleaseLayerFrame:释放图层上的输出图像帧。
- ZH_MPI_VO_SendLayerFrame:将图像送入指定图形层输出通道显示。
- ZH_MPI_VO_SetCursorPostion:更新鼠标层的坐标。
- ZH_MPI_VO_SetCursorLogicalRect:设置鼠标移动区域。
- 通道操作:
- ZH_MPI_VO_EnableChn:启用指定的视频输出通道。
- ZH_MPI_VO_DisableChn:禁用指定的视频输出通道。
- ZH_MPI_VO_SetChnAttr:设置指定视频输出通道的属性。
- ZH_MPI_VO_GetChnAttr:获取指定视频输出通道的属性。
- ZH_MPI_VO_SetChnParam:配置指定视频输出通道的参数。
- ZH_MPI_VO_GetChnParam:获取指定视频输出通道的参数。
- ZH_MPI_VO_SetChnDispPos:设置指定视频输出通道的显示位置。
- ZH_MPI_VO_GetChnDispPos:获取指定视频输出通道的显示位置。
- ZH_MPI_VO_GetChnFrame:获取通道帧。
- ZH_MPI_VO_ReleaseChnFrame:释放输出通道图像数据。
- ZH_MPI_VO_SendFrame:将视频图像送入指定输出通道显示。
- ZH_MPI_VO_SetChnFrameRate:设置指定视频输出通道的显示帧率。
- ZH_MPI_VO_GetChnFrameRate:获取指定视频输出通道的显示帧率。
- ZH_MPI_VO_PauseChn:暂停指定的视频输出通道。
- ZH_MPI_VO_ResumeChn:恢复指定的视频输出通道。
- ZH_MPI_VO_StepChn:单帧播放指定的视频输出通道。
- ZH_MPI_VO_RefreshChn:刷新指定的视频输出通道。
- ZH_MPI_VO_ShowChn:显示指定通道。
- ZH_MPI_VO_HideChn:隐藏指定通道。
- ZH_MPI_VO_GetChnPts:获取指定视频输出通道正在显示图像的时间戳。
- ZH_MPI_VO_QueryChnStat:查询视频输出通道状态。
- ZH_MPI_VO_ClearChnBuffer:清空指定输出通道的缓存 buffer 数据。
- ZH_MPI_VO_SetChnBorder:设置通道的边框属性。
- ZH_MPI_VO_GetChnBorder:获取通道的边框属性。
- ZH_MPI_VO_SetChnRecvThreshold:设置视频输出通道的显示门限值。
- ZH_MPI_VO_GetChnRecvThreshold:输出通道的显示门限值。
- 回写操作:
- ZH_MPI_VO_SetWbcSource:设置回写通路的回写源。
- ZH_MPI_VO_GetWbcSource:获取回写通路的回写源。
- ZH_MPI_VO_EnableWbc:使能回写。
- ZH_MPI_VO_DisableWbc:禁用回写。
- ZH_MPI_VO_SetWbcAttr:设置视频回写属性。
- ZH_MPI_VO_GetWbcAttr:获取视频回写属性。
- ZH_MPI_VO_GetWbcFrame:获取回写图像。
- ZH_MPI_VO_ReleaseWbcFrame:释放回写图像。
- ZH_MPI_VO_SetWbcDepth:设置回写缓存个数。
设备操作
ZH_MPI_VO_SetPubAttr
描述
设置视频输出设备的公共属性。
语法
ZH_S32 ZH_MPI_VO_SetPubAttr(VO_DEV VoDev, const VO_PUB_ATTR_S *pstPubAttr)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| VoDev | VO_DEV | 显示输出设备号。 | 输入 |
| pstPubAttr | const VO_PUB_ATTR_S* | 视频输出设备公共属性结构体指针。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_INVALID_DEVID | VoDev 不正确。 |
| ZH_ERR_VO_NULL_PTR | pstPubAttr 为空指针。 |
| ZH_ERR_VO_NOT_SUPPORT | 输入 enIntfSync 不在支持列表内。 |
| ZH_ERR_VO_BUSY | 设置分辨率失败。 |
示例代码
请参见 ZH_MPI_VO_Enable 的举例。
相关主题
ZH_MPI_VO_GetPubAttr
描述
获取视频输出设备的公共属性。
语法
ZH_S32 ZH_MPI_VO_GetPubAttr(VO_DEV VoDev, VO_PUB_ATTR_S *pstPubAttr)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| VoDev | VO_DEV | 显示输出设备号。 | 输入 |
| pstPubAttr | VO_PUB_ATTR_S* | 视频输出设备公共属性结构体指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_INVALID_DEVID | VoDev 不正确。 |
| ZH_ERR_VO_NULL_PTR | pstPubAttr 为空指针。 |
| ZH_ERR_VO_SYS_NOTREADY | VO 相关服务创建失败。 |
示例代码
请参见 ZH_MPI_VO_Enable 的举例。
相关主题
ZH_MPI_VO_Enable
描述
启用视频输出设备。
语法
ZH_S32 ZH_MPI_VO_Enable(VO_DEV VoDev)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| VoDev | VO_DEV | 显示输出设备号。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_INVALID_DEVID | VoDev 不正确。 |
| ZH_ERR_VO_SYS_NOTREADY | VO 相关服务创建失败。 |
| 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_S32 ZH_MPI_VO_Disable(VO_DEV VoDev)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| VoDev | VO_DEV | 显示输出设备号。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_INVALID_DEVID | VoDev 不正确。 |
示例代码
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)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| VoDev | VO_DEV | 显示输出设备号。 | 输入 |
| pstParam | VO_CSC_S* | 图像输出效果结构体指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_INVALID_DEVID | VoDev 不正确。 |
| ZH_ERR_VO_NULL_PTR | pstParam 为空指针。 |
| ZH_ERR_VO_SYS_NOTREADY | VO 相关服务创建失败。 |
ZH_MPI_VO_SetPostProcessParam
描述
设置设备输出图像效果。
语法
ZH_S32 ZH_MPI_VO_SetPostProcessParam(VO_DEV VoDev, VO_CSC_S *pstParam)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| VoDev | VO_DEV | 显示输出设备号。 | 输入 |
| pstParam | VO_CSC_S* | 图像输出效果结构体指针。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_INVALID_DEVID | VoDev 不正确。 |
| ZH_ERR_VO_NULL_PTR | pstParam 为空指针。 |
| ZH_ERR_VO_SYS_NOTREADY | VO 相关服务创建失败。 |
| 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)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| enIntfType | ZH_U32 | 显示输出接口类型。 | 输入 |
| u32Id | ZH_U32 | 同类型显示输出接口设备号,比如 HDMI0、HDMI1。 | 输入 |
| pstEdidData | VO_EDID_S* | EDID 数据。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_ILLEGAL_PARAM | enIntfType 不正确。 |
| ZH_ERR_VO_NULL_PTR | pstEdidData 为空指针。 |
| ZH_ERR_VO_DEV_NOT_ENABLE | VoDev 对应的显示设备未使能。 |
注意事项
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)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| enIntfType | ZH_U32 | 显示输出接口类型。 | 输入 |
| u32Id | ZH_U32 | 同类型显示输出接口设备号,比如 HDMI0、HDMI1。 | 输入 |
| pstSinkCap | VO_SINK_CAPABILITY_S* | 显示设备状态。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_ILLEGAL_PARAM | enIntfType 不正确。 |
| ZH_ERR_VO_NULL_PTR | pstSinkCap 为空指针。 |
| ZH_ERR_VO_DEV_NOT_ENABLE | VoDev 对应的显示设备未使能。 |
注意事项
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)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| enIntfType | ZH_U32 | 显示输出接口类型。 | 输入 |
| u32Id | ZH_U32 | 同类型显示输出接口设备号,比如 HDMI0、HDMI1。 | 输入 |
| pstCallbackFunc | ZH_VO_CALLBACK_FUNC_S* | 热插拔回调函数。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_ILLEGAL_PARAM | enIntfType 不正确。 |
| ZH_ERR_VO_NULL_PTR | pstCallbackFunc 为空指针。 |
| ZH_ERR_VO_DEV_NOT_ENABLE | VoDev 对应的显示设备未使能。 |
注意事项
- 仅支持有热插拔能力的显示接口,比如 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)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| enIntfType | ZH_U32 | 显示输出接口类型。 | 输入 |
| u32ld | ZH_U32 | 同类型显示输出接口设备号,比如 HDMI0、HDMI1。 | 输入 |
| pstCallbackFunc | ZH_VO_CALLBACK_FUNC_S* | 热插拔回调函数。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_ILLEGAL_PARAM | enIntfType 不正确。 |
| ZH_ERR_VO_NULL_PTR | pstCallbackFunc 为空指针。 |
| ZH_ERR_VO_DEV_NOT_ENABLE | VoDev 对应的显示设备未使能。 |
注意事项
- 仅支持有热插拔能力的显示接口,比如 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)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| VoDev | VO_DEV | 显示输出接口 设备号。 | 输入 |
| pstCallbackFunc | ZH_VO_VSYNC_CALLBACK_FUNC_S* | 帧中断回调函数。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_INVALID_DEVID | VoDev 不正确。 |
| ZH_ERR_VO_NULL_PTR | pstCallbackFunc 为空指针。 |
| ZH_ERR_VO_DEV_NOT_ENABLE | VoDev 对应的显示设备未使能。 |
| ZH_ERR_VO_SYS_NOTREADY | VO 相关服务创建失败。 |
| 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)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| VoDev | VO_DEV | 显示输出接口设备号。 | 输入 |
| pstCallbackFunc | ZH_VO_VSYNC_CALLBACK_FUNC_S* | 帧中断回调函数。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_INVALID_DEVID | VoDev 不正确。 |
| ZH_ERR_VO_NULL_PTR | pstCallbackFunc 为空指针。 |
| ZH_ERR_VO_DEV_NOT_ENABLE | VoDev 对应的显示设备未使能。 |
| ZH_ERR_VO_SYS_NOTREADY | VO 相关服务创建失败。 |
| 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)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| enIntfType | ZH_U32 | 显示输出接口类型。 | 输入 |
| u32Id | ZH_U32 | 同类型显示输出接口设备号,比如 HDMI0、HDMI1。 | 输入 |
| pstHdmiParam | VO_HDMI_PARAM_S* | HDMI 属性结构体指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_ILLEGAL_PARAM | enIntfType 不正确。 |
| ZH_ERR_VO_NULL_PTR | pstHdmiParam 为空指针。 |
| 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)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| enIntfType | ZH_U32 | 显示输出接口类型。 | 输入 |
| u32Id | ZH_U32 | 同类型显示输出接口设备号,比如 HDMI0、HDMI1。 | 输入 |
| pstHdmiParam | const VO_HDMI_PARAM_S* | HDMI 属性结构体指针。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_ILLEGAL_PARAM | enIntfType 不正确。 |
| ZH_ERR_VO_NULL_PTR | pstHdmiParam 为空指针。 |
| 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)
参数
| 参数名称 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| u32Vodevs | ZH_U32 | 每个比特表示需要同步的显示输出设备 ID。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| ZH_ERR_VO_INVALID_DEVID | VoDev 不正确。 |
| 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 | 成功。 |