我应该在DirectShow推送源过滤器FillBuffer()调用期间锁定过滤器状态吗?

时间:2011-11-21 05:17:43

标签: delphi filter directshow waitforsingleobject

我有一个使用DSPACK组件库编写Delphi 6的DirectShow过滤器。目前,我使用在FillBuffer()调用顶部为此目的创建的sync obj锁定过滤器状态,并在结束时释放它(在try / finally结构的 finally 部分内)。由于FillBuffer()调用可以在等待新数据发送时阻塞,通过执行数据生成任务的线程释放的WaitForSingleObject()调用,这是一个坏主意吗?我担心如果FillBuffer()调用阻塞(相对)长时间,这可能会对我的过滤器或整个过滤器图形产生负面影响。

1 个答案:

答案 0 :(得分:1)

您应该等待解锁的关键部分。否则它将成为一个问题,等待工作者线程阻塞控制线程,例如请求更改过滤器图状态。