CBaseReferenceClock, classe

cbasereferenceclock class hierarchy

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

Variables membres protégées 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 constructeur.
GetPrivateTime Récupère le temps réel de l’horloge.
SetTimeDelta Ajuste l’heure interne de l’horloge.
GetSchedule Récupère un pointeur vers l’objet de planification de l’horloge.
TriggerThread Réveille le thread worker 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 à un coup.
AdvisePeriodic Crée une demande de conseil périodique.
Annuler lavise Supprime une demande de conseil en attente.
Méthodes IReferenceClockTimerControl 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
ConvertToMillisecondes Convertit une heure de référence en millisecondes.

Remarques

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

L’objet CBaseReferenceClock gère deux valeurs chronologiques distinctes :

Il est valide pour que l’horloge interne s’exécute vers l’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, le temps de référence est monotoniquement croissant; en d’autres termes, il ne s’exécute jamais vers l’arrière. Par conséquent, si l’horloge interne s’exécute en arrière, GetTime continue de signaler l’ancienne heure jusqu’à ce que l’horloge interne 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

Sur la troisième horloge, l’horloge interne passe à 103. La méthode GetTime continue de signaler 106 jusqu’à ce que l’horloge interne 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 de l’appareil.
  • Surveillez l’écart entre l’heure de l’appareil et l’heure système et 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 .

Spécifications

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