首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

DShow中,当receive不执行时,怎么deliver数据

2012-03-27 
DShow中,当receive不执行时,如何deliver数据叙述下我的程序:用的是push模式,filter继承自BaseFilter,不是T

DShow中,当receive不执行时,如何deliver数据
叙述下我的程序:
  用的是push模式,filter继承自BaseFilter,不是TransformFilter.
  通过InputPin的Receive()调用filter的ReceiveBuffer(),在ReceiveBuffer()中进行数据处理,之后调用Deliver()将数据传递给下游filter。
  也就是说,整个过程都是靠Receive来带动程序逻辑运行的。如果说,在ReceiveBuffer()中处理完数据,马上调用Deliver()传出数据,那么就不存在困扰我的问题。
  我的问题就是:Receive与Deliver是并发处理的,而接收到的数据会被保存在缓冲区中,发送数据是从缓冲区读取。一旦receive停止,而此时缓冲区中依然有数据,那么我该如何让程序调用deliver()呢?
  补充一句:按照目前我的逻辑,一旦receive()不执行,那么之后的数据处理和向下游发送数据就都不能执行了。
  请教各位大牛,请问怎么改善这种逻辑架构?

[解决办法]
看DShow.cpp中DoBufferProcessingLoop,可以自己写个线程,那样调用

热点排行