摘要:本文主要讲述了Graph图构建过程中常用的技巧,主要的内容如下:
·如何根据CLSID向graph中添加filter
·如何查找filter空闲的pin
·如何连接两个Filter
·如何获得filter或者pin的接口指针
·如何查找和某个filter的上下相连的filter
·如何删除graph中的所有filter
·如何利用Capture Graph Builder构建Graph图表
如何根据CLSID向graph中添加filter
下面的代码演示了如何利用CLSID生成一个filter,然后将其加入到graph图中
在你的应用程序中,你可以这样用这个函数
注:有些filter是不能通过with CoCreateInstance方法创建的。例如AVI Compressor Filter和WDM Video Capture filter
如何查找filter空闲的pin
看代码吧:
下面的代码演示了如何利用上面的函数来在一个filter查找一个输出的空闲的pin。
如何连接两个Filter
下面的函数演示了如何将一个filter的输出pin和另一个filter的第一个空闲的输入pin进行连接。
下面是ConnectFilters的一个重载函数,但是第二个参数是一个指向filter的指针,而不是指向pin的指针,这个函数将两个filter连接起来。
下面的函数演示了利用这个函数来连接AVIMux 过滤器和File Writer过滤器,这个例子也使用了AddFilterByCLSID函数。
如何获得filter或者pin的接口指针
一般来说,我们都是通过Filter图表管理器来进行一些操作,但是,有时候,我们也直接调用filter或者pin的一些方法,因此,我们需要获取filter或pin的接口指针。
对于filter的接口指针,可以通过IEnumFilters来枚举filter的指针,看下面的代码:
用IEnumPins来获得pin的接口指针,其实就是枚举。
下面的代码演示了如何搜索任意的filter和pin的接口: