覆盖混音器筛选器

[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayerIMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获,而不是 DirectShow。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]

覆盖混音器筛选器是专为 DVD 播放和广播视频流而设计的视频呈现器,带有 21 行隐藏式字幕。 覆盖混音器还支持视频端口扩展(VPE),使它能够使用硬件 MPEG-2 解码器或模拟电视优化器,这些解码器将视频直接发送到图形卡,而不是通过 PCI 总线。

注意

视频混合呈现器 9 现在首选于覆盖混音器筛选器,但在 VPE 方案中除外。

 

覆盖混音器使用 DirectDraw 进行呈现。 它需要图形卡上的覆盖图面。 主视频流应连接到 pin 0。 辅助流(隐藏式字幕图形或 DVD 子图片)连接到引脚 1 和更高版本。 覆盖混音器将辅助流直接点到主要流;它不混合或 alpha 混合它们。

覆盖混音器使用视频呈现器进行窗口管理。 视频呈现器连接到覆盖混音器的输出引脚。

当应用程序使用 IDvdGraphBuilderICaptureGraphBuilder2 接口创建图形时,此筛选器会自动添加到筛选器图中。 筛选器图形管理器不会自动将覆盖混音器添加到图形。

注意

下表中,输入引脚 0 上接受的媒体子类型依赖于硬件。 在创建 DirectDraw 图面之前,覆盖混音器无法确定是否支持特定子类型。 因此,上游筛选器确定是否支持子类型的唯一方法是尝试与该子类型建立连接。

 

标签 价值
筛选器接口 IAMOverlayFXIAMVideoDecimationPropertiesIBaseFilterIDDrawExclModeVideoIKsPropertySetIMediaPositionIMediaSeekingIMixerOCXIQualPropIVPNotifyIVPNotify2
输入引脚媒体类型 主要类型:MEDIATYPE_Video
亚:
  • MEDIASUBTYPE_Overlay(仅引脚 0)
  • DirectDraw YUV 格式(仅引脚 0)
  • DirectDraw 视频加速格式(仅引脚 0)
  • DirectDraw RGB 格式(所有输入引脚)
格式类型:
  • Format_VIDEOINFO
  • Format_VIDEOINFO2
输入引脚接口 IAMVideoAcceleratorIKsPinIKsPropertySetIMemInputPinIMixerPinConfigIMixerPinConfig2IOverlay(仅引脚 0)、IPinIPinConnectionIQualityControlIVPNotifyIVPNotify2
输出引脚媒体类型 MEDIATYPE_Video、MEDIASUBTYPE_Overlay
输出引脚接口 IMediaPositionIMediaSeekingIPinIQualityControl
筛选 CLSID CLSID_OverlayMixer
属性页 CLSID 无属性页。
可执行 qdvd.dll
优点 MERIT_DO_NOT_USE
筛选器类别 CLSID_LegacyAmFilterCategory

 

言论

覆盖混音器使用目标颜色键将视频图面与覆盖混合。 它将颜色键和辅助视频点燃到主图面,并将主视频发送到覆盖图面。 然后,图形卡将两个图面组合到其帧缓冲区中。

若要测试图形驱动程序是否支持硬件覆盖,请调用 IDirectDraw7::GetCaps。 如果 DDCAPS 结构中的 dwMaxVisibleOverlays 字段大于零,驱动程序支持硬件覆盖。

应用程序可以通过 IMixerPinConfig2 接口控制覆盖混音器上的某些行为。 游戏开发人员可以使用覆盖混音器在 DirectDraw 独占模式下显示视频,如本节稍后所述。 但是,视频混合呈现器筛选器 9(VMR-9)现在为游戏中的视频提供更好的支持。 有关详细信息,请参阅 使用视频混合呈现器

为筛选器开发人员和想要在 DirectDraw 独占模式下使用覆盖混音器的游戏开发人员提供以下信息。

覆盖混音器内部作

覆盖混音器为每个传入流公开一个输入引脚。 通常,有三个输入引脚:视频数据的引脚 0,第 21 行和 DVD 子图片数据的引脚 1 和 2。 在内部,覆盖混音器创建一个 DirectDraw 对象,其主图面由整个桌面组成,以及一个覆盖图面,其矩形由 Pin 0 上的视频流的大小定义。 如果解码器未指定颜色键,则覆盖混音器使用默认颜色键:较新的图形卡的深灰色,对于较旧的 256 色卡使用洋红色。

注意

如果解码器同时在覆盖图面上的同一位置提供两个辅助视频流,则结果未定义。 (这有时发生在包含子图片和第 21 行流的 DVD 中。视频可能会闪烁,或仅显示其中一个流。

 

在 Windows Vista 或更高版本上,如果显示驱动程序支持硬件覆盖,覆盖混音器将禁用桌面窗口管理器(DWM)组合。 应用程序应避免使用覆盖混音器筛选器;请改用 VMR-9 或增强的视频呈现器(EVR)。

使用视频解码器 上游连接

通常,覆盖混音器的输入引脚连接到上游视频解码器。 主视频流必须连接到引脚 0。 第 21 行或子图片流连接到引脚 1 或更高版本。 如果解码器是独占使用主机 CPU 的软件解码器,解码器和 Pin 0 之间的连接是 IMemInputPin 连接。 如果解码器使用硬件加速,则连接到 Pin 0 的连接必须使用 IAMVideoAccelerator 推理。 这两种类型的连接是互斥的。

如果解码器直接绘制到覆盖图面上,则应在引脚 0 上使用 IOverlay 接口,并实现 IOverlayNotify 接口。

包装硬件解码器并通过视频端口连接到覆盖混音器的筛选器必须实现 IVPConfig 接口。 覆盖混音器实现 IVPNotify 接口。 这两个接口使解码器能够指定所需的覆盖面,并使覆盖混音器能够通知解码器这些图面在视频内存中的位置。

覆盖混音器还确保正确缩放视频矩形。 视频捕获涉及缩放预览图像和捕获交错视频帧的某些问题。 如果要为硬件视频捕获设备开发筛选器或 WDM 驱动程序,请参阅 IVPConfigIVPNotify 参考页,了解有关这些主题的详细信息。

覆盖混音器在 1394 或 USB 捕获方案中不使用。 它用于通过 PCI 总线进行视频捕获。

使用视频呈现器 下游连接

覆盖混音器具有连接到 视频呈现器 筛选器的输出引脚。 在这种情况下,视频呈现器不呈现视频;它只是管理视频窗口。

引脚连接使用 IOverlay 接口,而不是 IMemInputPin 接口。 视频呈现器将窗口控点通过覆盖混音器传递到 DirectDraw,该图管理矩形剪辑。 应用程序可以通过筛选器图形管理器上的 IVideoWindowIBasicVideo2 接口来控制视频呈现器。

DirectDraw 独占模式

覆盖混音器的 DirectDraw 独占模式使游戏能够在屏幕的某些部分显示视频。 在此模式下,覆盖混音器将视频直接呈现到游戏应用程序创建的 DirectDraw 图面,而不是呈现器提供的窗口。 这使游戏能够控制颜色键。 覆盖混音器仅在 DirectDraw 独占模式下公开一个输入引脚,这意味着在此模式下无法混合第 21 行或 DVD 子图片。

若要在 DirectDraw 独占模式下使用覆盖混音器,请创建覆盖混音器的实例,并在生成筛选器图之前查询 IDDrawExclModeVideo 接口。 然后调用 IDDrawExclModeVideo::SetDDrawSurface 以指定用于呈现的 DirectDraw 图面。 此模式的一个显著限制是游戏无法访问实际视频位。 如果使用 IDDrawExclModeVideo,则应用程序会创建主图面,并且覆盖混音器会创建覆盖图面。

还可以使用 DirectDraw 独占模式执行无窗口呈现(例如,在网页中),但不建议这样做,因为覆盖混音器在此模式下不执行任何混合。 这意味着无法显示第 21 行或子图片数据。

DirectShow 筛选器