次の方法で共有


CBaseReferenceClock クラス

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

cbasereferenceclock クラス階層

クラスは CBaseReferenceClock 、参照クロックを実装します。

保護されたメンバー変数 説明
m_pSchedule クロックのスケジュール タスクを処理する CAMSchedule オブジェクト。
プロテクト メソッド 説明
~CBaseReferenceClock デストラクター メソッド。
パブリック メソッド 説明
CBaseReferenceClock コンストラクター メソッド。
GetPrivateTime クロックからリアルタイムを取得します。
SetTimeDelta 内部クロック時間を調整します。
GetSchedule クロックのスケジューリング オブジェクトへのポインターを取得します。
TriggerThread スケジュールを処理するワーカー スレッドをウェイクアップします。
IReferenceClock メソッド 説明
GetTime 現在の参照時刻を取得します。
AdviseTime ワンショット アドバイス要求を作成します。
AdvisePeriodic 定期的なアドバイス要求を作成します。
Unadvise 保留中のアドバイス要求を削除します。
IReferenceClockTimerControl メソッド 説明
GetDefaultTimerResolution 参照クロックのタイマーの現在の解像度を返します。
SetDefaultTimerResolution 基準クロックのタイマーの解像度を設定します。
ヘルパー関数 説明
ConvertToMilliseconds 参照時間をミリ秒に変換します。

解説

このクラスは、 IReferenceClock インターフェイスと IReferenceClockTimerControl インターフェイスをサポートする参照クロック 実装します。 たとえば、フィルターがハードウェア デバイスにアクセスしてフィルター グラフの参照クロックを提供できる場合は、このクラスを使用してクロックを実装できます。

オブジェクトは CBaseReferenceClock 、次の 2 つの異なる時刻値を保持します。

内部クロックが短い期間にわたって後方に実行される場合に有効です。 たとえば、クロックが前方にドリフトした場合、フィルターはそれを後方に調整できます。 ( CBaseReferenceClock::SetTimeDelta を参照してください)。 GetTime メソッドは、 GetPrivateTime によって報告される時間値を使用します。 ただし、参照時間は単調に増加しています。つまり、逆方向に実行されることはありません。 したがって、内部クロックが逆方向に実行される場合、 GetTime は内部クロックが追いつくまで古い時刻を報告し続けます。

たとえば、2 つのメソッドは次のシーケンスを返す場合があります。

GetPrivateTime: 105, 106, 103, 104, 105, 106, 107, 108
GetTime:        105, 106, 106, 106, 106, 106, 107, 108

3 番目のクロック ティックでは、内部クロックは 103 に後方にジャンプします。 GetTime メソッドは、内部クロックが追いつくまで 106 を報告し続けます。

既定では、 GetPrivateTime はtimeGetTime 関数の呼び出しを通じてシステム時刻を返します。 外部デバイスから参照クロックを提供するフィルターは、次のいずれかを実行できます。

  • GetPrivateTime をオーバーライドして、デバイスから時刻を返します。
  • デバイス時刻とシステム時刻の不一致を監視し、 SetTimeDelta を呼び出して修正を行います。

このクラスは、 CAMSchedule オブジェクトを使用して、アドバイス要求のスケジュール設定を処理します。 詳細については、 CAMSchedule クラスのドキュメントを参照してください。

要件

要件
ヘッダー
Refclock.h (Streams.h を含む)
ライブラリ
Strmbase.lib (小売ビルド);
Strmbasd.lib (デバッグ ビルド)