如何使用Media Foundation在给定时间运行/启动线程?

时间:2017-09-19 13:12:00

标签: c++ winapi directshow ms-media-foundation

我正在寻找在Media Foundation的指定时间开始一个帖子。

我知道在DirectShow中有一个由IMediaFilter调用的函数,其中tStart是参考时钟的时间值。:

Interface::HRESULT Run(REFERENCE_TIME tStart);

但是在Media Foundation中,没有这样的函数会以时间作为参数来运行或启动一个线程。

媒体基金会有解决方案吗?

1 个答案:

答案 0 :(得分:0)

DirectShow或Media Foundation都没有与问题描述相匹配的功能。

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

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

  

...当应用程序调用{​​{1}}方法时,Filter Graph Manager会在每个过滤器上调用IMediaControl::Run。它会在未来略微设置tStart的值,以说明图延迟。

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

Media Foundation的内部设计不同。您无法安排启动,也不会影响内部工作线程。假设您启动媒体会话活动并尽快开始。