Classe CRefTime

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Hiérarchie de classes creftime

La CRefTime classe est une classe d’assistance pour la gestion des temps de référence.

Une heure de référence est une unité de temps représentée en unités de 100 nanosecondes. Cette classe partage la même disposition de données que le type de données REFERENCE_TIME , mais ajoute des méthodes et des opérateurs qui fournissent des fonctions de comparaison, de conversion et d’arithmétiques. Pour plus d’informations sur les heures de référence, consultez Heure et horloges dans DirectShow.

Variables membres publiques Description
m_time Spécifie la valeur REFERENCE_TIME .
Méthodes publiques Description
CRefTime Méthode du constructeur.
GetUnits Récupère l’heure de référence en unités de 100 nanosecondes.
Millisecs Convertit le temps de référence en millisecondes.
Opérateurs Description
opérateur REFERENCE_TIME() Caste l’objet en type de données REFERENCE_TIME .
operator= Attribue une nouvelle heure de référence.
operator+= Ajoute deux temps de référence.
opérateur = Soustrait une heure de référence d’une autre.

Notes

Il existe un piège potentiel avec l’utilisation de cette classe. Si vous appliquez l’opérateur += avec un objet CRefTime comme opérande gauche et une variable de type LONG comme opérande droit, le compilateur force implicitement l’opérande droit dans un objet CRefTime . Cette contrainte utilise le constructeur CRefTime qui convertit des millisecondes en unités REFERENCE_TIME ; par conséquent, l’opérande droit est multiplié par 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.

Toutefois, la même chose ne se produit pas à l’aide de l’opérateur + :

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

Configuration requise

Condition requise Valeur
En-tête
Reftime.h (include Streams.h)
Bibliothèque
Strmbase.lib (builds de vente au détail) ;
Strmbasd.lib (builds de débogage)