DirectShow 12 - 过滤器连接和模式

来源:互联网 发布:淘宝转化率0.004正常吗 编辑:程序博客网 时间:2024/06/10 05:55
Filter的连接:
通过视图管理器连接相应的Pin。
Pin连接中的内存分配:
Pin之间的内存交互机制:局部内存交换机制。
 
在局部存储器传输中,负责分配内存的对象称为allocator。
每个allocator 都支持一个IMemAllocator 接口,所有的pin 都共享一个allocator。
每个pin 都提供一个allocator,但是输出pin 选择使用哪个allocator
 
推模式:IMenInputPin
   1 首先,输出pin 调用IMemInputPin::GetAllocatorRequirements,这个方法检查输入pin 对内存的要求,比如内存的队列,
     一般来说,输出pin 要满足输入pin 对内存的要求。
   2 输出pin 然后调用IMemInputPin::GetAllocator.,这个方法从输入pin 请求一个allocator,
   3 输出pin 选择一个allocator,可以是输入pin 提供,也可以是自己生产的。
   4 输出pin 调用IMemAllocator::SetProperties 来设置allocator 的属性。
   5 然后输出pin 通过IMemInputPin::NotifyAllocator 来通知输入pin,选择的allocator。
   6 输入pin 通过IMemAllocator::GetProperties 来检查是否能够接受allocator 的属性。
   7 当数据流开始和停止的时候,输出pin 负责提交allocator。
 
拉模式:IAsyncReader
   1 输入pin 调用输出pin 上的IAsyncReader::RequestAllocator,输入pin 确定内存的属性,并提供一个allocator。
   2 输出pin 选择一个allocator,
   3 输入pin 检查
0 0
原创粉丝点击