DirectShow入门之动态构建FilterGraph(2)

2008-04-09 04:10:44来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折



  当Graph在运行的时候,Filter Chain可以在Running和Stopped状态之间切换;当Graph在暂停状态下,Filter Chain可以在Paused和Stopper状态之间切换。以上是Filter Chain仅有的两种状态转换。
  Filter Chain的使用规则

  当你使用IFilterChain的方法时,你一定要确保graph中的filter都支持这个接口,否则的话你也可能会造成死锁和graph错误。

  下面将教给你如何正确使用filter chain

  
  图3

  1、在链条的状态改变之前,在链条边界的数据处理必须完成。下面的函数可以完成这些事情:IMemInputPin::Receive, IPin::NewSegment, and IPin::EndOfStream。

  Filters in the chain must return from calls to these methods made by filters outside the chain; and filters outside the chain must return from calls made by filters within the chain.
  例如:上面图中,filter B必须将从filter A中请求的数据处理完毕,filter E必须完成对filter D请求的数据的处理。

  2、上游的filter必须能够察觉filter 链表的状态改变。例如,在上图中,假如chain停止,但是filter A却调用B上的输入pin上的IMemInputPin::Receive方法,调用肯定是失败的,并且返回的信息是stream 停止。如果当应用程序重新启动chain的时候,filter A就没有数据流了。

  3、chain下游的filter也应该能够察觉链表状态的改变。如果不能够察觉的话,如果E阻塞等待上游的D传递sample,但是上游的chain的状态已经改变成停止状态,容易造成死锁。

  4、所有和链表内的filter 相连的filter都应该有自己独立的allocator,因为如果chain的状态改变或者被删除,它的allocator就会被销毁,和它们相连的filter就没法处理sample了。

  5、只有链表支持动态断开才能将一个链表从graph中移走。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:VisualC 6.0实现多层图像合成

下一篇:利用VisualC 制作应用程序启动画面

IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设

网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源

网站联盟: 联盟新闻 联盟介绍 联盟点评 网赚技巧

行业资讯: 搜索引擎 网络游戏 电子商务 广告传媒

网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它

服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护

软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷

网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash

程序设计: Java技术 C/C++ VB delphi

网络知识: 网络协议 网络安全 网络管理 组网方案 Cisco技术

操作系统: Win2000 WinXP Win2003 Mac OS Linux FreeBSD

热门词条
最新资讯
热门关注
热门标签