DirectShow 技术全解析:从核心组件到自定义过滤器开发
1. VMR:DirectShow 的强大组件
VMR(Video Mixing Renderer)是 DirectShow 中最强大的组件之一。借助它,你能够将多达 16 个视频流同时混合成一个输出流。这个输出流既可以发送到由 VMR 管理的独立窗口,也能发送到应用程序指定的窗口。甚至,VMR 还能将输出用作纹理映射应用到 Direct3D 模型上。
VMR 不仅功能强大,其接口还简洁优雅,能在不产生不必要复杂性的情况下展现其功能,这使它成为几乎所有将视频渲染到显示器的 DirectShow 应用程序的理想过滤器。
2. DirectShow 过滤器概述
DirectShow 具备可扩展架构,允许程序员创建自定义过滤器,包括捕获源过滤器、转换过滤器和渲染器。这些自定义过滤器可在任何 DirectShow 应用程序的过滤器图形中实例化和使用。
在所有为 DirectShow 创建的过滤器中,转换过滤器最为常见。它们负责处理诸如数据压缩和解压缩、视频编码、文件解析和流拆分等任务。例如,你可能希望为过滤器图形添加特定功能,以特定方式处理音频或视频流来实现特定工程目标,这就是转换过滤器的作用。
2.1 简单转换过滤器 YUVGray
YUVGray 是一个简单的转换过滤器,由微软的 Mike Wasson 编写。它接收 UYVY 或 YUY2 格式的视频流,并去除其中的所有颜色信息,只留下黑白数据。这种效果在让视频图像呈现出 20 世纪 50 年代电视黄金时代的风格时非常有用。
YUVGray 的设计简单,易于扩展为