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.]
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:
- Internamente, o método CBaseReferenceClock::GetPrivateTime retorna o tempo real mantido pelo relógio.
- Externamente, o método CBaseReferenceClock::GetTime retorna o tempo de referência para o grafo de filtro.
É 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 |
|
Biblioteca |
|