基于视频端口的捕获

基于视频端口的捕获设备必须提供连接到视频端口管理器的视频端口引脚。 视频端口引脚允许基于硬件的传输显示预览流,而无需 CPU 或外围组件互连 (PCI) 总线开销。 单独的引脚提供捕获功能 (例如,当捕获的视频必须写入磁盘) 时。 在捕获过程中,捕获缓冲区会提供给显示驱动程序,该驱动程序通过总线主控来填充缓冲区。 捕获微型驱动程序与显示驱动程序之间的交互在本部分的后面部分和 内核模式视频传输中进一步详细介绍。

在运行 Microsoft Windows 98 SE 或 Windows 2000 的系统上,覆盖混音器筛选器 (后续操作系统中视频端口管理器筛选器的一部分,) 不支持辅助监视器上的视频端口连接。 在这种情况下,引脚连接失败。 运行 Windows Millennium Edition (Windows Me) 和 Windows XP 的系统支持辅助监视器上的视频端口连接。

如果设备支持 VBI 捕获,它通常会公开两个附加的引脚:VPVBI 和 VBI。 视频端口管理器筛选器使用 VPVBI 引脚为 VBI 捕获分配视频端口图面。 VBI 引脚本身提供原始 VBI 样本。

下图显示了 VPVBI 和 VBI 捕获的单独路径。

说明 vpvbi 和 vbi 捕获的单独路径的示意图。

特定于此类型的筛选器图的属性集 KSPROPSETID_VPConfig、KSPROPSETID_VPVBIConfigPROPSETID_ALLOCATOR_CONTROL

使用视频端口扩展 (VES)

注意: 以下段落仅适用于下一个 Windows Vista 版本之前的操作系统。 如果显示驱动程序使用新的 Windows Vista 驱动程序显示模型 (LDDM) ,则会在 Windows Vista 中禁用 VPE。

视频捕获微型驱动程序可以使用 DxApi 函数与视频微型端口驱动程序通信,以便捕获流式处理视频在捕获硬件和显示硬件之间通过视频端口总线传输。 该流由 NTSC、PAL 或 SECAM 视频的顺序字段组成,可以包括空白 (VBI) 和时间代码 (水平同步和垂直同步) 数据。 视频流特征(包括尺寸、颜色格式、频率、缩放和裁剪)通过 VPE DirectDraw 界面在用户模式下配置。 启动流式处理后,在内核模式下调用 DxApi 以捕获单个帧。 若要支持显示更改(例如分辨率更改或切换到全屏命令提示符),视频捕获微型驱动程序还必须向视频微型端口驱动程序注册,以便它们能够响应此类显示更改事件。

使用 DirectX 5.0 将 VPE 和 DxApi 函数引入到 DirectDraw DDI 中。 Windows 2000 及更高版本操作系统中的视频微型端口驱动程序支持 DxApi。 虚拟显示微型端口驱动程序 (miniVDD) 支持 Windows 98 和 Windows Me 操作系统中的 DxApi 。 若要使用 DxApi 启用内核模式视频传输,WDM 视频捕获微型驱动程序必须包含 ddkmapi.h (DirectDraw 内核模式 API) 头文件和 与 dxapi.lib 库的链接。 DxApi 库使用 dxapi.sys导出的功能。 DxApi.sys 仅在加载 DirectDraw 时可用,因为 DxApi 是 DirectDraw DDI 的 VE 的一部分。

DxApi 是由 DxApi.sys公开的单个内核模式 API。 视频端口扩展是由 DDraw.dll公开的用户模式 API。 视频捕获微型驱动程序必须对 DxApi 进行多次不同的调用,才能设置和配置视频端口硬件以正确流式传输。

DxApi 是封装多个函数标识符的单个函数。 微型驱动程序将第一个参数中所需的函数标识符传递给 DxApiDxApi 的其余参数用于与函数标识符和缓冲区长度对应的结构的微型驱动程序分配的缓冲区。 函数的行为以及输入和输出缓冲区的大小和格式取决于指定的函数标识符。 DxApi 函数和标识符中记录了此行为。

WDK 提供了两个示例驱动程序,演示如何实现 DxApi 功能。 ATIWDM 示例要求存在特定的硬件才能运行。 TestCap 示例不需要硬件,适用于所有平台。 可以使用 GraphEdt 工具与任一示例交互。

视频捕获微型驱动程序必须调用 DxApi 才能执行的常见功能如下:

  • 打开内核模式 DirectDraw 的句柄, (DxApi 函数标识符设置为 DD_DXAPI_OPENDIRECTDRAW) 。 此操作必须在 IRQL = PASSIVE_LEVEL 执行。

  • 获取硬件视频端口的内核模式功能 (DxApi 函数标识符设置为 DD_DXAPI_GETKERNELCAPS) 。

  • 注册回调以处理 DirectDraw 事件,例如将模式切换到全屏命令提示符, (DxApi 函数标识符设置为 DD_DXAPI_REGISTER_CALLBACK) 。

  • 打开指向 DirectDraw 图面的句柄, (DxApi 函数标识符设置为 DD_DXAPI_OPENSURFACE) 。

  • (DxApi 函数标识符设置为“DD_DXAPI_UNREGISTER_CALLBACK) ”取消注册回调。

  • 关闭图面和内核模式 DirectDraw 的句柄, (DxApi 函数标识符设置为 DD_DXAPI_CLOSEHANDLE)

视频端口子设备和电源管理

视频端口子设备(如电视调谐器和显示组合适配器)可以在微型驱动程序处于使用状态时阻止电源状态转换。 当微型驱动程序正在使用时,电源状态转换阻塞发生, (引脚或筛选器打开) 。 如果微型驱动程序已加载但未使用引脚或筛选器,则电源状态将从 S0 (完全供电) 转换为低功耗状态, (例如 S1、S2、S3 和 S4) 。 电源状态转换阻止仅适用于 Stream 类微型驱动程序,这些微型驱动程序是视频端口子设备的客户端。

WHQL 豁免适用于满足此条件的设备,因此供应商仍可获取徽标。