Classe CBaseReferenceClock

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

gerarchia di classi cbasereferenceclock

La CBaseReferenceClock classe implementa un orologio di riferimento.

Variabili membro protette Descrizione
m_pSchedule Oggetto CAMSchedule che gestisce le attività di pianificazione per l'orologio.
Metodi protetti Descrizione
~CBaseReferenceClock Metodo distruttore.
Metodi pubblici Descrizione
CBaseReferenceClock Metodo costruttore.
GetPrivateTime Recupera l'ora reale dall'orologio.
SetTimeDelta Regola l'ora dell'orologio interno.
GetSchedule Recupera un puntatore all'oggetto di pianificazione dell'orologio.
TriggerThread Riattiva il thread di lavoro che gestisce la pianificazione.
Metodi IReferenceClock Descrizione
GetTime Recupera l'ora di riferimento corrente.
ConsiglioTime Crea una richiesta di consulenza one-shot.
ConsiglioPeriodic Crea una richiesta di consulenza periodica.
Unadvise Rimuove una richiesta di consulenza in sospeso.
Metodi IReferenceClockTimerControl Descrizione
GetDefaultTimerResolution Restituisce la risoluzione corrente del timer dell'orologio di riferimento.
SetDefaultTimerResolution Imposta la risoluzione del timer dell'orologio di riferimento.
Funzioni di supporto Descrizione
ConvertToMilliseconds Converte un tempo di riferimento in millisecondi.

Commenti

Questa classe implementa un orologio di riferimento che supporta le interfacce IReferenceClock e IReferenceClockTimerControl. Se un filtro può fornire un orologio di riferimento per il grafico del filtro, ad esempio accedendo a un dispositivo hardware, può usare questa classe per implementare l'orologio.

L'oggetto CBaseReferenceClock gestisce due valori temporali distinti:

È valido per l'orologio interno da eseguire indietro in brevi periodi. Ad esempio, se l'orologio si sposta in avanti, il filtro può modificarlo indietro. Vedere CBaseReferenceClock::SetTimeDelta. Il metodo GetTime usa i valori temporali segnalati da GetPrivateTime. Tuttavia, il tempo di riferimento aumenta monotonicamente; in altre parole, non viene mai eseguito indietro. Pertanto, se l'orologio interno viene eseguito indietro, GetTime continua a segnalare il tempo precedente fino a quando l'orologio interno non recupera.

Ad esempio, i due metodi potrebbero restituire le sequenze seguenti:

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

Sul terzo segno di spunta, l'orologio interno passa indietro a 103. Il metodo GetTime continua a segnalare 106 fino a quando l'orologio interno non recupera.

Per impostazione predefinita, GetPrivateTime restituisce l'ora di sistema tramite una chiamata alla funzione timeGetTime . Un filtro che fornisce un orologio di riferimento da un dispositivo esterno può eseguire una delle operazioni seguenti:

  • Eseguire l'override di GetPrivateTime per restituire l'ora dal dispositivo.
  • Monitorare la discrepanza tra l'ora del dispositivo e l'ora di sistema e chiamare SetTimeDelta per apportare correzioni.

Questa classe usa un oggetto CAMSchedule per gestire la pianificazione delle richieste di consulenza. Per informazioni dettagliate, vedere la documentazione per la classe CAMSchedule .

Requisiti

Requisito Valore
Intestazione
Refclock.h (includere Streams.h)
Libreria
Strmbase.lib (build al dettaglio);
Strmbasd.lib (build di debug)