PDD_VPORTCB_UPDATE回调函数 (ddrawint.h)
DdVideoPortUpdate 回调函数启动和停止 VPE 对象,并修改 VPE 对象数据流。
语法
PDD_VPORTCB_UPDATE PddVportcbUpdate;
DWORD PddVportcbUpdate(
PDD_UPDATEVPORTDATA unnamedParam1
)
{...}
参数
unnamedParam1
指向 DD_UPDATEVPORTDATA 结构,该结构包含驱动程序更新 VPE 对象所需的信息。
返回值
DdVideoPortUpdate 返回以下回调代码之一:
备注
支持 VPE 的 DirectDraw 驱动程序必须实现 DdVideoPortUpdate。
当 lpUpdate DD_UPDATEVPORTDATA 结构的 dwFlags 成员DDRAWI_VPORTSTART或DDRAWI_VPORTUPDATE时,驱动程序应执行以下操作:
- 检查 DDVIDEOPORTINFO 结构的 dwVPFlags 成员中的所有标志,lpVideoInfo 成员DD_UPDATEVPORTDATA点。 这些标志描述驱动程序应如何将视频数据传输到图面 (或图面) ;例如,它们指示驱动程序是否应执行自动滑动、裁剪视频或 VBI 数据等。
- 在硬件中设置循环,将视频和/或 VBI 数据写入图面,其顺序是图面存储在数组中 () 。 设置这些循环后,驱动程序应尽快返回。
- 如果已请求自动翻贴,请将每个图面的帧缓冲区偏移量存储在驱动程序的内部数据结构中。 表面偏移量应按照 DD_UPDATEVPORTDATA的lplpDDSurface 和lplpDDVBISurface 成员的DD_SURFACE_INT数组中出现的顺序存储。 这样,调用 DdUpdateOverlay 时,驱动程序将记录表面链的翻转顺序。
如果驱动程序的硬件不支持请求自动翻贴时指定的图面数, 则 DdVideoPortUpdate 应通过在 DD_UPDATEVPORTDATA 的 ddRVal 成员中设置DDERR_UNSUPPORTED来使调用失败。
视频和 VBI 图面链中的图面数量可能不同:也就是说,DD_UPDATEVPORTDATA的 dwNumAutoflip 成员和 dwNumVBIAutoflip 成员可以是不同的值。
DDRAWI_VPORTSTOP dwFlags 时,驱动程序应立即返回。 在数据流停止之前,驱动程序不应轮询。
要求
目标平台 | 桌面 |
标头 | ddrawint.h (包括 Winddi.h) |