Classe CBaseReferenceClock

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in 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 Audio/Video Capture in 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 cbasereferenceclock

A CBaseReferenceClock classe implementa um relógio de referência.

Variáveis de membro protegidas Descrição
m_pSchedule Objeto CAMSchedule que manipula tarefas de agendamento para o relógio.
Métodos Protegidos Descrição
~Cbasereferenceclock Método de destruidor.
Métodos públicos Descrição
Cbasereferenceclock Método de construtor.
Getprivatetime Recupera o tempo real do relógio.
SetTimeDelta Ajusta a hora do relógio interno.
GetSchedule Recupera um ponteiro para o objeto de agendamento do relógio.
TriggerThread Ativa o thread de trabalho que manipula o agendamento.
Métodos IReferenceClock Descrição
GetTime Recupera a hora de referência atual.
AdviseTime Cria uma solicitação de consultoria única.
AdvisePeriodic Cria uma solicitação de aconselhamento periódica.
Unadvise Remove uma solicitação de aviso pendente.
Métodos IReferenceClockTimerControl Descrição
GetDefaultTimerResolution Retorna a resolução atual do temporizador do relógio de referência.
SetDefaultTimerResolution Define a resolução do temporizador do relógio de referência.
Funções auxiliares Descrição
ConvertToMilliseconds Converte um tempo de referência em milissegundos.

Comentários

Essa classe implementa um relógio de referência que dá suporte às interfaces IReferenceClock e IReferenceClockTimerControl . Se um filtro puder fornecer um relógio de referência para o grafo de filtro, por exemplo, acessando um dispositivo de hardware, ele poderá usar essa classe para implementar o relógio.

O CBaseReferenceClock objeto mantém dois valores de tempo distintos:

É válido que o relógio interno seja executado para trás em breves períodos. Por exemplo, se o relógio avançar, o filtro poderá ajustá-lo para trás. (Consulte CBaseReferenceClock::SetTimeDelta.) O método GetTime usa os valores de tempo relatados por GetPrivateTime. No entanto, o tempo de referência está aumentando monotonicamente; em outras palavras, ele nunca corre para trás. Portanto, se o relógio interno for executado para trás, GetTime continuará relatando o horário antigo até que o relógio interno seja atualizado.

Por exemplo, os dois métodos podem retornar as seguintes sequências:

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

No terceiro relógio, o relógio interno salta para trás para 103. O método GetTime continua a relatar 106 até que o relógio interno seja atualizado.

Por padrão, GetPrivateTime retorna a hora do sistema por meio de uma chamada para a função timeGetTime . Um filtro que está fornecendo um relógio de referência de um dispositivo externo pode fazer um dos seguintes procedimentos:

  • Substitua GetPrivateTime para retornar a hora do dispositivo.
  • Monitore a discrepância entre a hora do dispositivo e a hora do sistema e chame SetTimeDelta para fazer correções.

Essa classe usa um objeto CAMSchedule para lidar com o agendamento de solicitações de consultoria. Para obter detalhes, consulte a documentação da classe CAMSchedule .

Requisitos

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