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 时,驱动程序将记录表面链的翻转顺序。
如果 DDVIDEOPORTINFO 结构的 dwVBIHeight 成员大于零且 lplpDDVBISurface 不为 NULL,则驱动程序应将 dwVBIHeight 中的数字指定的 VBI 数据行写入到 lplpDDVBISurface 指向的数组中的每个图面中。

如果驱动程序的硬件不支持请求自动翻贴时指定的图面数, 则 DdVideoPortUpdate 应通过在 DD_UPDATEVPORTDATA 的 ddRVal 成员中设置DDERR_UNSUPPORTED来使调用失败。

视频和 VBI 图面链中的图面数量可能不同:也就是说,DD_UPDATEVPORTDATA的 dwNumAutoflip 成员和 dwNumVBIAutoflip 成员可以是不同的值。

DDRAWI_VPORTSTOP dwFlags 时,驱动程序应立即返回。 在数据流停止之前,驱动程序不应轮询。

要求

   
目标平台 桌面
标头 ddrawint.h (包括 Winddi.h)

请参阅

DDVIDEOPORTINFO

DD_SURFACE_INT

DD_UPDATEVPORTDATA

DdUpdateOverlay