网址:http://msdn.microsoft.com/en-us/library/ms899448.aspx
这部分描述源过滤器如何生成新的采样
推模式
在推模式,源过滤器启动过程,步骤如下:
在这个时候,下游的过滤器也许保留采样的计数,所以源过滤器不能简单的重复使用采样。为传递下一个采样,它必须下步骤1一样再次调用IMemAlloctor::GetBuffer。
注意:为传递多个采样,在步骤3源过滤器可以调用IMemInputPin::ReceiveMultiple。
拉模式
在拉模式,解析过滤器向源过滤器请求数据。解析过滤器使用源过滤器输出引脚上的IAsyncReader接口,步骤如下:
1. 解析过滤器调用IMemAllocator::GetBuffer获取一个空的媒体采样。
2. 它调用IAsyncReader::Request方法向源过滤器请求数据。
3. 源数据在获取数据的过程中,解析器调用IAsyncReader::WaitForNext。直到步骤2的请求完成。
4. 解析过滤器处理数据(可能调用自己输入引脚的IMemInputPin::Receive方法)并传递到下游。
步骤2和3执行异步读操作。解析器可以通过使用IAsyncReader::SyncRead或者IAsyncReader::SyncReadAligned方法,请求一个同步读操作。