Compartilhar via


Classe CRefTime

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

hierarquia de classes creftime

A CRefTime classe é uma classe auxiliar para gerenciar tempos de referência.

Um tempo de referência é uma unidade de tempo representada em unidades de 100 nanossegundos. Essa classe compartilha o mesmo layout de dados que o tipo de dados REFERENCE_TIME , mas adiciona alguns métodos e operadores que fornecem funções de comparação, conversão e aritmética. Para obter mais informações sobre os tempos de referência, consulte Hora e Relógios no DirectShow.

Variáveis de membro público Descrição
m_time Especifica o valor REFERENCE_TIME .
Métodos públicos Descrição
Creftime Método de construtor.
GetUnits Recupera o tempo de referência em unidades de 100 nanossegundos.
Millisecs Converte o tempo de referência em milissegundos.
Operadores Descrição
operator REFERENCE_TIME() Converte o objeto em um tipo de dados REFERENCE_TIME .
operator= Atribui um novo tempo de referência.
operator+= Adiciona dois tempos de referência.
operador = Subtrai uma hora de referência de outra.

Comentários

Há uma possível armadilha com o uso dessa classe. Se você aplicar o operador += com um objeto CRefTime como o operando esquerdo e uma variável do tipo LONG como o operando à direita, o compilador coagirá implicitamente o operando à direita em um objeto CRefTime . Essa coerção usa o construtor CRefTime que converte milissegundos em unidades REFERENCE_TIME; Como resultado, o operando à direita é multiplicado por 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.

No entanto, a mesma coisa não acontece usando o operador + :

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

Requisitos

Requisito Valor
parâmetro
Reftime.h (inclua Streams.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)