做render filter的时候,用sample里面的一个dump例子,但是不调用读文件的
对话框,
if (riid == IID_IFileSinkFilter) {
// return GetInterface((IFileSinkFilter *) this, ppv);
}
IFileSinkFilter 这个类是用来调用打开文件对话框的,把这行注释掉,就可以了
推数据模式和拉数据模式:推数据模式是指源过滤器通过自己的线程获得流数据
,然后将数据递交到下一个过滤器,而下一个过滤器处理完数据后又将数据递交
到它的下一个过滤器。这要求在整个过滤器图中所有的过滤器都支持推数据模式
,数据流才能顺利的流动。 而拉数据模式是指源过滤器的下一个过滤器是一个
获取流过滤器,就是说它是整个数据流动的发起者,它要求源过滤器将数据流给
它,然后它处理后再递交到下一层,后面的过滤器也是和推数据模式的一样用推
数据的方式工作。
其实两种工作模式的区别在于和源过滤器相连的那个过滤器能够支持什么方式。
一般来说,对于实时的数据流采用推数据的方式更好,但是在试验中,由于采用
的是MPEG-1数据流,而标准的MPEG-1分解过滤器又不支持推数据模式,所以试验
采用了拉数据的工作方式,这也就是说MPEG-1分解过滤器实际上是整个数据流的
发起者,他在需要数据的时候会调用源过滤器中的Read方法。