Overlay Mixer 筛选器

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

备注

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

覆盖 Mixer 使用 DirectDraw 进行呈现。 它需要图形卡的覆盖面。 主视频流应连接到 pin 0。 辅助流 (关闭的字幕图形或 DVD subpictures) 连接到引脚1和更高版本。 覆盖 Mixer 将辅助流直接 blits 到主 suface 上;它不混合或混合 alpha。

覆盖 Mixer 使用视频呈现器进行窗口管理。 视频呈现器连接到覆盖 Mixer 的输出插针。

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

备注

在下表中,输入插针0上接受的媒体子类型与硬件相关。 覆盖 Mixer 无法确定是否支持特定子类型,直到它创建 DirectDraw 表面。 因此,上游筛选器确定子类型是否受支持的唯一方法是尝试与该子类型建立连接。

Label
筛选接口 IAMOverlayFXIAMVideoDecimationPropertiesIBaseFilterIDDrawExclModeVideoIKsPropertySetIMediaPositionIMediaSeekingIMixerOCXIQualPropIVPNotifyIVPNotify2
输入插针媒体类型 主要类型: MEDIATYPE_Video
子类型
  • 仅 (引脚 0 MEDIASUBTYPE_Overlay)
  • DirectDraw YUV 格式 (仅限引脚 0)
  • DirectDraw 视频加速格式 (仅限引脚 0)
  • DirectDraw RGB 格式 (所有输入插针)
格式类型:
  • Format_VIDEOINFO
  • Format_VIDEOINFO2
输入插针接口 IAMVideoAcceleratorIKsPinIKsPropertySetIMemInputPinIMixerPinConfigIMixerPinConfig2IOverlay (仅) 、 IPinIPinConnectionIQualityControlIVPNotifyIVPNotify2
输出插针媒体类型 MEDIATYPE_Video,MEDIASUBTYPE_Overlay
输出插针接口 IMediaPositionIMediaSeekingIPinIQualityControl
筛选 CLSID CLSID_OverlayMixer
属性页 CLSID 无属性页。
可执行文件 qdvd.dll
采取 MERIT_DO_NOT_USE
筛选器类别 CLSID_LegacyAmFilterCategory

备注

覆盖 Mixer 使用目标颜色键控混合包含叠加的视频面。 它将颜色键和辅助视频 blits 到主要表面,并将主视频发送到覆盖图面。 然后,图形卡将两个曲面合成到其帧缓冲区。

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

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

提供以下信息是为了使筛选器开发人员和需要在 DirectDraw 独占模式下使用覆盖 Mixer 的游戏开发人员受益。

覆盖 Mixer 内部操作

覆盖 Mixer 公开每个传入流的输入插针。 通常有三个输入插针:对于视频数据为引脚0,为第21行和 DVD 子画面数据提供引脚1和2。 在内部,覆盖 Mixer 会创建一个 DirectDraw 对象,其中包含整个桌面组成的主表面,还会创建一个覆盖图面,其矩形由引脚0上视频流的大小定义。 如果解码器未指定颜色键,则覆盖 Mixer 使用默认颜色键:对于更高版本的图形卡,黑色灰色,对于较旧的256颜色卡,为洋红色。

备注

如果解码器同时在重叠表面的同一位置提供两个辅助视频流,则结果是不确定的。 (这种情况有时发生在包含子画面和第21行的 Dvd 中。 ) 视频可能会闪烁,或仅显示其中一个流。

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

与视频解码器的上游连接

通常,叠加 Mixer 的输入插针连接到上游视频解码器。 主视频流必须连接到 pin 0。 第21行或子画面流连接到 pin 1 或更高版本。 如果解码器是仅使用主机 CPU 的软件解码器,则解码器与 Pin 0 之间的连接是 IMemInputPin 的连接。 如果解码器使用硬件加速,则与引脚0的连接必须使用 IAMVideoAccelerator 接口。 这两种连接类型是互相排斥的。

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

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

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

覆盖 Mixer 未在1394或 USB 捕获方案中使用。 它在视频捕获中通过 PCI 总线使用。

与视频呈现器的下游连接

覆盖 Mixer 具有连接到视频呈现器筛选器的输出插针。 在这种情况下,视频呈现器不会呈现视频;它只管理视频窗口。

Pin 连接使用 IOverlay 接口,而不是 IMemInputPin 接口。 视频呈现器将其窗口句柄通过覆盖 Mixer 传递到 DirectDraw,这会管理矩形剪辑。 应用程序可以通过 Filter Graph Manager 上的 IVideoWindowIBasicVideo2接口控制视频呈现器。

DirectDraw 独占模式

覆盖 Mixer 的 DirectDraw 独占模式允许游戏在屏幕的某个部分显示视频。 在此模式下,覆盖 Mixer 将视频直接呈现给由游戏应用程序创建的 DirectDraw 表面,而不是视频呈现器提供的窗口。 这使游戏能够控制颜色键。 覆盖 Mixer 在 DirectDraw 专用模式下只公开一个输入插针,这意味着在此模式下不能再执行行21或 DVD 子画面的混合。

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

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

DirectShow过滤 器