CBaseReferenceClock クラス
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
クラスは CBaseReferenceClock
、参照クロックを実装します。
保護されたメンバー変数 | 説明 |
---|---|
m_pSchedule | クロックのスケジュール タスクを処理する CAMSchedule オブジェクト。 |
プロテクト メソッド | 説明 |
~CBaseReferenceClock | デストラクター メソッド。 |
パブリック メソッド | 説明 |
CBaseReferenceClock | コンストラクター メソッド。 |
GetPrivateTime | クロックからリアルタイムを取得します。 |
SetTimeDelta | 内部クロック時間を調整します。 |
GetSchedule | クロックのスケジューリング オブジェクトへのポインターを取得します。 |
TriggerThread | スケジュールを処理するワーカー スレッドをウェイクアップします。 |
IReferenceClock メソッド | 説明 |
GetTime | 現在の参照時刻を取得します。 |
AdviseTime | ワンショット アドバイス要求を作成します。 |
AdvisePeriodic | 定期的なアドバイス要求を作成します。 |
Unadvise | 保留中のアドバイス要求を削除します。 |
IReferenceClockTimerControl メソッド | 説明 |
GetDefaultTimerResolution | 参照クロックのタイマーの現在の解像度を返します。 |
SetDefaultTimerResolution | 基準クロックのタイマーの解像度を設定します。 |
ヘルパー関数 | 説明 |
ConvertToMilliseconds | 参照時間をミリ秒に変換します。 |
解説
このクラスは、 IReferenceClock インターフェイスと IReferenceClockTimerControl インターフェイスをサポートする参照クロック を 実装します。 たとえば、フィルターがハードウェア デバイスにアクセスしてフィルター グラフの参照クロックを提供できる場合は、このクラスを使用してクロックを実装できます。
オブジェクトは CBaseReferenceClock
、次の 2 つの異なる時刻値を保持します。
- 内部的には、 CBaseReferenceClock::GetPrivateTime メソッドはクロックによって保持される実際の時刻を返します。
- 外部的には、 CBaseReferenceClock::GetTime メソッドはフィルター グラフの参照時間を返します。
内部クロックが短い期間にわたって後方に実行される場合に有効です。 たとえば、クロックが前方にドリフトした場合、フィルターはそれを後方に調整できます。 ( 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 クラスのドキュメントを参照してください。
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|