IReferenceClock インターフェイス
IReferenceClock インターフェイスは、フィルタ グラフに基準タイムを提供する。
基準クロックとしての機能を持つフィルタは、このインターフェイスを公開できる。このインターフェイスは、システム基準クロックでも公開される。フィルタ グラフ マネージャは、このインターフェイスを使ってフィルタ グラフの同期をとる。アプリケーションでは、このインターフェイスを使って、現在の基準タイムを取得したり、経過時間の通知を要求したりできる。
詳細については、「DirectShow のタイムとクロック」を参照すること。
**フィルタ開発者 :**信頼性の高いクロック タイムを生成するフィルタを開発するには、このインターフェイスを実装すること。たとえば、サウンド ボードには基準クロックが付いていることが多いので、オーディオ レンダリングはこのインターフェイスを実装する。このインターフェイスを実装するには、CBaseReferenceClock クラスを使うこと。
非レンダリング フィルタがフィルタ グラフ マネージャから参照クロックとして選択される機会を増やすには、以下のステップを実行すること。
- そのフィルタ内で IReferenceClock を実装する。
- そのフィルタ内で IAMFilterMiscFlags を実装する。
- IAMFilterMiscFlags::GetMiscFlags から AM_FILTER_MISC_FLAGS_IS_SOURCE を返す。
- すべての出力ピンで IAMPushSource を実装する。
- IAMPushSource::GetPushSourceFlags から (* pFlags) = 0 を返す。
- 他のすべての IAMPushSource メソッドから E_NOTIMPL を返す。
IUnknown から継承したメソッドに加えて、IReferenceClock インターフェイスは次のメソッドを公開する。
メソッド | 説明 |
GetTime | 現在の基準タイムを取得する。 |
AdviseTime | 単発のアドバイズ要求を作成する。 |
AdvisePeriodic | 周期的アドバイズ要求を作成する。 |
Unadvise | ペンディング状態のアドバイズ要求を削除する。 |