2017-09-19 6 views
0

Media Foundationを使用して指定した時間にスレッドを開始したいと考えています。Media Foundationを使用して所定の時間にスレッドを実行/開始する方法は?

私はDirectShowのtStartは、基準クロックの時間値:

Interface::HRESULT Run(REFERENCE_TIME tStart); 

ですが、メディア財団で実行したり、開始しますそのような機能はありませんIMediaFilterによって呼び出される関数があることを知っています時間をパラメータとしたスレッドです。

Media Foundationでこれを行う方法はありますか?

+0

いつも指定された時間までブロックしてから、何かを呼び出す必要がありますか? –

+0

これは、2人のプレーヤーで起きた同じビデオのための完全な画像同期表示を保証しないためです。 – maz

+0

どのようにすれば、すべてのスレッドの条件変数を待ってから、それらをすべて正しいタイミングで通知します。 –

答えて

0

DirectShowまたはMedia Foundationには、質問の説明と一致する機能がありません。

両方のAPIには、リクエストの直後にアクティビティを開始するメソッドがあります。

DirectShowのIMediaFilter.Runは最初にスレッドを開始しません。その後、方法はtrickではなく、使用目的です:アプリケーションがIMediaControl::Runメソッドを呼び出すと...

、フィルターグラフマネージャーは、各フィルタにIMediaFilter::Runを呼び出します。グラフの待ち時間を考慮に入れて、tStartの値を少し前から設定します。

IMediaFilter::Runを呼び出すという言葉はありませんが、このメソッドは内部的に呼び出されるはずです。

Media Foundationの内部設計が異なります。起動をスケジュールすることはできず、内部作業スレッドにも影響はありません。メディアセッションの活動を開始し、できるだけ早く開始されると仮定します。

関連する問題