次の方法で共有


CRefTime クラス

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

creftime クラス階層

クラスは 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.

要件

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