Classe CRefTime

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine 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, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di 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 creftime

La CRefTime classe è una classe helper per la gestione dei tempi di riferimento.

Un tempo di riferimento è un'unità di tempo rappresentata in unità di 100 nanosecondi. Questa classe condivide lo stesso layout di dati del tipo di dati REFERENCE_TIME, ma aggiunge alcuni metodi e operatori che forniscono funzioni di confronto, conversione e aritmetica. Per altre informazioni sui tempi di riferimento, vedere Time and Clocks in DirectShow.

Variabili membro pubblico Descrizione
m_time Specifica il valore REFERENCE_TIME .
Metodi pubblici Descrizione
CRefTime Metodo del costruttore.
GetUnits Recupera il tempo di riferimento in unità di 100 nanosecondi.
Millisecs Converte il tempo di riferimento in millisecondi.
Operatori Descrizione
operator REFERENCE_TIME() Esegue il cast dell'oggetto a un tipo di dati REFERENCE_TIME .
operator= Assegna un nuovo tempo di riferimento.
operator+= Aggiunge due volte di riferimento.
operator = Sottrae una volta di riferimento da un'altra.

Commenti

C'è un potenziale problema con l'uso di questa classe. Se si applica l'operatore += con un oggetto CRefTime come operando sinistro e una variabile di tipo LONG come operando destro, il compilatore coercherà in modo implicito l'operando destro in un oggetto CRefTime . Questa coercizione usa il costruttore CRefTime che converte i millisecondi in unità di REFERENCE_TIME; di conseguenza, l'operando destro viene moltiplicato per 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.

Tuttavia, la stessa cosa non avviene usando l'operatore + :

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

Requisiti

Requisito Valore
Intestazione
Reftime.h (include Streams.h)
Libreria
Strmbase.lib (build retail);
Strmbasd.lib (build di debug)