次の方法で共有


IReferenceClock インターフェイス

IReferenceClock インターフェイスは、フィルタ グラフに基準タイムを提供する。

基準クロックとしての機能を持つフィルタは、このインターフェイスを公開できる。このインターフェイスは、システム基準クロックでも公開される。フィルタ グラフ マネージャは、このインターフェイスを使ってフィルタ グラフの同期をとる。アプリケーションでは、このインターフェイスを使って、現在の基準タイムを取得したり、経過時間の通知を要求したりできる。

詳細については、「DirectShow のタイムとクロック」を参照すること。

**フィルタ開発者 :**信頼性の高いクロック タイムを生成するフィルタを開発するには、このインターフェイスを実装すること。たとえば、サウンド ボードには基準クロックが付いていることが多いので、オーディオ レンダリングはこのインターフェイスを実装する。このインターフェイスを実装するには、CBaseReferenceClock クラスを使うこと。

非レンダリング フィルタがフィルタ グラフ マネージャから参照クロックとして選択される機会を増やすには、以下のステップを実行すること。

  1. そのフィルタ内で IReferenceClock を実装する。
  2. そのフィルタ内で IAMFilterMiscFlags を実装する。
  3. IAMFilterMiscFlags::GetMiscFlags から AM_FILTER_MISC_FLAGS_IS_SOURCE を返す。
  4. すべての出力ピンで IAMPushSource を実装する。
  5. IAMPushSource::GetPushSourceFlags から (* pFlags) = 0 を返す。
  6. 他のすべての IAMPushSource メソッドから E_NOTIMPL を返す。

IUnknown から継承したメソッドに加えて、IReferenceClock インターフェイスは次のメソッドを公開する。

メソッド 説明
GetTime 現在の基準タイムを取得する。
AdviseTime 単発のアドバイズ要求を作成する。
AdvisePeriodic 周期的アドバイズ要求を作成する。
Unadvise ペンディング状態のアドバイズ要求を削除する。