我正在寻找在Media Foundation的指定时间开始一个帖子。
我知道在DirectShow中有一个由IMediaFilter
调用的函数,其中tStart
是参考时钟的时间值。:
Interface::HRESULT Run(REFERENCE_TIME tStart);
但是在Media Foundation中,没有这样的函数会以时间作为参数来运行或启动一个线程。
媒体基金会有解决方案吗?
答案 0 :(得分:0)
DirectShow或Media Foundation都没有与问题描述相匹配的功能。
两个API都有方法在请求后立即启动活动。
DirectShow的IMediaFilter.Run
无法首先启动线程。然后该方法是trick而不是预期用途:
...当应用程序调用{{1}}方法时,Filter Graph Manager会在每个过滤器上调用
IMediaControl::Run
。它会在未来略微设置tStart的值,以说明图延迟。
请注意,在调用IMediaFilter::Run
时没有任何关键字,该方法应该在内部调用。
Media Foundation的内部设计不同。您无法安排启动,也不会影响内部工作线程。假设您启动媒体会话活动并尽快开始。