Freigeben über


CRefTime-Klasse

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

creftime-Klassenhierarchie

Die CRefTime -Klasse ist eine Hilfsklasse zum Verwalten von Referenzzeiten.

Eine Referenzzeit ist eine Zeiteinheit, die in 100 Nanosekundeneinheiten dargestellt wird. Diese Klasse verwendet dasselbe Datenlayout wie der REFERENCE_TIME Datentyp, fügt jedoch einige Methoden und Operatoren hinzu, die Vergleichs-, Konvertierungs- und arithmetische Funktionen bereitstellen. Weitere Informationen zu Referenzzeiten finden Sie unter Zeit und Uhren in DirectShow.

Öffentliche Membervariablen BESCHREIBUNG
m_time Gibt den wert der REFERENCE_TIME an.
Öffentliche Methoden BESCHREIBUNG
CRefTime Konstruktormethode.
GetUnits Ruft die Referenzzeit in 100 Nanosekundeneinheiten ab.
Millisecs Konvertiert die Referenzzeit in Millisekunden.
Operatoren Beschreibung
Operator REFERENCE_TIME() Wandelt das Objekt in einen REFERENCE_TIME-Datentyp um.
operator= Weist eine neue Referenzzeit zu.
Operator+= Fügt zwei Verweiszeiten hinzu.
Operator = Subtrahiert eine Verweiszeit von einer anderen.

Bemerkungen

Es besteht ein potenzieller Fallstrick bei der Verwendung dieser Klasse. Wenn Sie den Operator += mit einem CRefTime-Objekt als linken Operanden und einer Variablen vom Typ LONG als rechten Operanden anwenden, wird der rechte Operand vom Compiler implizit in ein CRefTime-Objekt umgewandelt. Diese Coercion verwendet den CRefTime-Konstruktor , der Millisekunden in REFERENCE_TIME-Einheiten konvertiert; daher wird der rechte Operand mit 10.000 multipliziert:

CRefTime rt;   // rt.m_time is 0.
LONG val = 20;
rt += val;    // Coerce val to CRefTime, rt.m_time is now 200,000.

Dasselbe geschieht jedoch nicht mit dem Operator +:

CRefTime rt;   // rt.m_time is 0.
LONG val = 20;
rt = rt + val; // CRefTime, rt.m_time is 20.

Anforderungen

Anforderung Wert
Header
Reftime.h (Streams.h einschließen)
Bibliothek
Strmbase.lib (Einzelhandelsbuilds);
Strmbasd.lib (Debugbuilds)