深入探索DirectShow中的Sample Grabber过滤器
1. DirectShow转换过滤器概述
DirectShow转换过滤器是所有DirectShow应用程序的主要构建模块。其结构易于理解,实现也较为直接。转换过滤器的实现主要包括几个用于协商过滤器可接受的媒体类型的方法、计算输出引脚的缓冲区分配,以及特定的转换功能。
例如,YUVGray转换过滤器清晰地展示了转换过滤器的媒体协商、分配和转换特性,并且为开发者提供了一个易于修改的代码基础,方便创建自己的转换过滤器。它还可以轻松扩展以支持其他视频流类型,如RGB,通过添加一些额外的代码,该过滤器甚至可以实时进行流类型之间的转换。
2. Sample Grabber过滤器介绍
在许多Microsoft DirectShow应用程序中,创建转换过滤器会带来诸多好处,但转换过滤器的测试往往颇具难度。程序员通常需要构建第二个过滤器来测试第一个过滤器的输出。而DirectShow的Sample Grabber过滤器正好满足了这一需求,并且它的用途远不止于测试。
Sample Grabber是一个标准的转换过滤器,它本身不会对通过它的媒体样本进行任何处理。但它会向实例化它的任何DirectShow应用程序公开ISampleGrabber接口,这使得应用程序能够“挂钩”到媒体流中。由于在媒体流中放置Sample Grabber的限制较少,所以可以使用它来检查几乎任何上游过滤器的输出。不过需要注意的是,它既不是源过滤器也不是渲染器过滤器,因此包含Sample Grabber的任何过滤器图形都必须同时具备源过滤器和渲染器过滤器。
Microsoft DirectX SDK