2016-05-11 9 views
0

私はWindows Media Foundationからlive555にサンプルを転送するコードを書いています。 MFは100 nsのタイムスタンプを使用しますが、live555はstruct timevalの形式で「リアルタイム」を使用します。私はGetSystemTime()から後者を偽造する方法を知っていますが、MFのサンプル時間から "リアルタイム"を導き出すことが可能で、データはIMFClockStateSink::OnClockStartに渡されますか?MFTIMEを実際のシステム時刻に関連付けることはできますか?

答えて

0

Media Foundationでは、システム時計に基づいてプレゼンテーションタイムソースも提供します。

このプレゼンテーションのソースは、システムクロックに基づいたタイムスタンプを提供している間に(おそらくtimeGetTimeとの共有ソースを使用して、または使用して、私はチェックしていなかった)、このソースが唯一の選択肢ではありません。

したがって、クロック時間と現在のシステム「絶対」時間の間の相関については、基本的に仮定しないでください。タイムスタンプは、10MHzのレートで相対的な時間増分を提供するだけであると想定される。

If the presentation clock uses some other time source, ...

+0

しかし、私は、Live555では絶対時間のいくつかの種類を生成する必要があります。質問は、どうすればいいのですか?私の推測では、 'MESessionStarted'イベントをキャプチャし、ハンドラのシステム時刻を取得し、' hnsSystemTime'から 'IMFClockStateSink :: OnClockStart'に渡される相対時間は、' MESessionStarted'が生成されたときの相対時刻とほぼ同じであると仮定します。それは理にかなっていますか? – Christoph

+0

セッション開始時に両方のクロック値を保存してから、絶対時間をセッション開始絶対時間とメディアクロックの差として計算しないのはなぜですか?私はそれがあなたが心に留めていたものだと思います - はい、意味があります。 –

+0

それはアイデアでした。質問は、それを行う「より良い」方法(明らかに私があなたを正しく理解していない場合)と、「MESessionStarted」イベントがそれを行う正しい場所であるかどうかです。 – Christoph

関連する問題