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,可以自己写个线程,那样调用