CBaseReferenceClock, classe

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si 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 la classe cbasereferenceclock

La CBaseReferenceClock classe implémente une horloge de référence.

Variables de membre protégé Description
m_pSchedule Objet CAMSchedule qui gère la planification des tâches pour l’horloge.
Méthodes protégées Description
~CBaseReferenceClock Méthode de destructeur.
Méthodes publiques Description
CBaseReferenceClock Méthode du constructeur.
GetPrivateTime Récupère le temps réel de l’horloge.
SetTimeDelta Ajuste l’heure d’horloge interne.
GetSchedule Récupère un pointeur vers l’objet de planification de l’horloge.
TriggerThread Réveille le thread de travail qui gère la planification.
IReferenceClock, méthodes Description
GetTime Récupère l’heure de référence actuelle.
AdviseTime Crée une demande de conseil en une seule fois.
AdvisePeriodic Crée une demande d’avis périodique.
Annuler l’aadvise Supprime une demande d’avis en attente.
IReferenceClockTimerControl, méthodes Description
GetDefaultTimerResolution Retourne la résolution actuelle du minuteur de l’horloge de référence.
SetDefaultTimerResolution Définit la résolution du minuteur de l’horloge de référence.
Fonctions d’assistance Description
ConvertToMilliseconds Convertit une heure de référence en millisecondes.

Notes

Cette classe implémente une horloge de référence qui prend en charge les interfaces IReferenceClock et IReferenceClockTimerControl . Si un filtre peut fournir une horloge de référence pour le graphique de filtres, par exemple, en accédant à un appareil matériel, il peut utiliser cette classe pour implémenter l’horloge.

L’objet CBaseReferenceClock conserve deux valeurs temporelles distinctes :

Il est valide pour que l’horloge interne s’exécute en arrière sur de brèves périodes. Par exemple, si l’horloge dérive vers l’avant, le filtre peut l’ajuster vers l’arrière. (Voir CBaseReferenceClock::SetTimeDelta.) La méthode GetTime utilise les valeurs de temps signalées par GetPrivateTime. Toutefois, l’heure de référence augmente de façon monotone; en d’autres termes, elle ne recule jamais. Par conséquent, si l’horloge interne s’exécute vers l’arrière, GetTime continue de signaler l’ancienne heure jusqu’à ce que l’horloge interne se rattrape.

Par exemple, les deux méthodes peuvent retourner les séquences suivantes :

GetPrivateTime: 105, 106, 103, 104, 105, 106, 107, 108
GetTime:        105, 106, 106, 106, 106, 106, 107, 108

Au troisième battement d’horloge, l’horloge interne saute en arrière à 103. La méthode GetTime continue de signaler 106 jusqu’à ce que l’horloge interne se rattrape.

Par défaut, GetPrivateTime retourne l’heure système, par le biais d’un appel à la fonction timeGetTime . Un filtre qui fournit une horloge de référence à partir d’un appareil externe peut effectuer l’une des opérations suivantes :

  • Remplacez GetPrivateTime pour renvoyer l’heure à partir de l’appareil.
  • Surveillez l’écart entre l’heure de l’appareil et l’heure système, puis appelez SetTimeDelta pour apporter des corrections.

Cette classe utilise un objet CAMSchedule pour gérer la planification des demandes de conseil. Pour plus d’informations, consultez la documentation de la classe CAMSchedule .

Configuration requise

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