CRefTime クラス
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
クラスは CRefTime
、参照時間を管理するためのヘルパー クラスです。
参照時刻は、100 ナノ秒単位で表される時間の単位です。 このクラスは 、REFERENCE_TIME データ型と同じデータ レイアウトを共有しますが、比較、変換、算術関数を提供するいくつかのメソッドと演算子を追加します。 参照時刻の詳細については、「 DirectShow の時刻とクロック」を参照してください。
パブリック メンバー変数 | 説明 |
---|---|
m_time | REFERENCE_TIME値を指定します。 |
パブリック メソッド | 説明 |
CRefTime | コンストラクター メソッド。 |
GetUnits | 参照時間を 100 ナノ秒単位で取得します。 |
ミリセクス | 参照時間をミリ秒に変換します。 |
演算子 | 説明 |
operator REFERENCE_TIME() | オブジェクトを REFERENCE_TIME データ型にキャストします。 |
operator= | 新しい参照時刻を割り当てます。 |
operator+= | 2 つの参照時刻を追加します。 |
operator = | ある参照時刻を別の参照時刻から減算します。 |
解説
このクラスを使用すると、落とし穴が発生する可能性があります。 左オペランドとして CRefTime オブジェクトを指定し、 LONG 型の変数を右オペランドとして += 演算子を適用すると、コンパイラは右オペランドを CRefTime オブジェクトに暗黙的に強制変換します。 この強制型変換では、ミリ秒をREFERENCE_TIME単位に変換する CRefTime コンストラクターを使用します。その結果、右側のオペランドに 10,000 が乗算されます。
CRefTime rt; // rt.m_time is 0.
LONG val = 20;
rt += val; // Coerce val to CRefTime, rt.m_time is now 200,000.
ただし、 + 演算子を使用しても同じことは起こりません。
CRefTime rt; // rt.m_time is 0.
LONG val = 20;
rt = rt + val; // CRefTime, rt.m_time is 20.
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|