2017-09-19 63 views
0

我正在寻找与媒体基金会在指定时间开始一个线程。如何使用Media Foundation在给定时间运行/启动线程?

我知道,DirectShow中存在一个由IMediaFilter其中tStart调用的函数在媒体基金会的参考时钟:

Interface::HRESULT Run(REFERENCE_TIME tStart); 

,但时间价值也将运行或启动无此功能以时间作为参数的线程。

Media Foundation中有这样的解决方案吗?

+0

为什么不阻止,直到给定的时间然后调用任何需要调用? –

+0

因为这不能确保完美的图像同步拖延对2个球员发射的相同视频。 – maz

+0

这是怎么回事,你等待所有线程上的条件变量,然后在正确的时间通知他们。 –

回答

0

DirectShow或Media Foundation的功能都不符合问题描述。

这两个API都有方法在请求后立即启动活动。

DirectShow的IMediaFilter.Run不首先启动线程。然后,该方法是trick而非用途:

...当一个应用程序调用IMediaControl::Run方法,过滤器图表管理器调用IMediaFilter::Run每个过滤器。它将来会稍微设置tStart的值,以考虑图形延迟。

请注意,您在调用IMediaFilter::Run时没有字,该方法应该在内部调用。

媒体基金会的内部设计是不同的。您不能计划启动,并且您对内部工作线程也没有影响。假设您开始媒体会话活动并尽快开始。