CBaseReferenceClock (clase)
[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
La CBaseReferenceClock
clase implementa un reloj de referencia.
Variables miembro protegidas | Descripción |
---|---|
m_pSchedule | Objeto CAMSchedule que controla las tareas de programación del reloj. |
Métodos protegidos | Descripción |
~CBaseReferenceClock | Método de destructor. |
Métodos públicos | Descripción |
CBaseReferenceClock | Método constructor. |
GetPrivateTime | Recupera el tiempo real del reloj. |
SetTimeDelta | Ajusta la hora del reloj interna. |
GetSchedule | Recupera un puntero al objeto de programación del reloj. |
TriggerThread | Activa el subproceso de trabajo que controla la programación. |
Métodos IReferenceClock | Descripción |
ConocerHora | Recupera la hora de referencia actual. |
AdviseTime | Crea una solicitud de aviso único. |
AdvisePeriodic | Crea una solicitud de aviso periódica. |
Unadvise | Quita una solicitud de aviso pendiente. |
Métodos IReferenceClockTimerControl | Descripción |
GetDefaultTimerResolution | Devuelve la resolución actual del temporizador del reloj de referencia. |
SetDefaultTimerResolution | Establece la resolución del temporizador del reloj de referencia. |
Funciones del asistente | Descripción |
ConvertToMilliseconds | Convierte un tiempo de referencia en milisegundos. |
Observaciones
Esta clase implementa un reloj de referencia que admite las interfaces IReferenceClock e IReferenceClockTimerControl . Si un filtro puede proporcionar un reloj de referencia para el gráfico de filtros, por ejemplo, accediendo a un dispositivo de hardware, puede usar esta clase para implementar el reloj.
El CBaseReferenceClock
objeto mantiene dos valores de hora distintos:
- Internamente, el método CBaseReferenceClock::GetPrivateTime devuelve la hora real mantenida por el reloj.
- Externamente, el método CBaseReferenceClock::GetTime devuelve la hora de referencia del gráfico de filtros.
Es válido para que el reloj interno se ejecute hacia atrás durante breves períodos. Por ejemplo, si el reloj se desplaza hacia delante, el filtro puede ajustarlo hacia atrás. (Vea CBaseReferenceClock::SetTimeDelta). El método GetTime usa los valores de hora notificados por GetPrivateTime. Sin embargo, el tiempo de referencia está aumentando de forma monotónica; en otras palabras, nunca se ejecuta hacia atrás. Por lo tanto, si el reloj interno se ejecuta hacia atrás, GetTime continúa informando de la hora anterior hasta que el reloj interno se ponga al día.
Por ejemplo, los dos métodos pueden devolver las secuencias siguientes:
GetPrivateTime: 105, 106, 103, 104, 105, 106, 107, 108
GetTime: 105, 106, 106, 106, 106, 106, 107, 108
En el tercer tic del reloj, el reloj interno salta hacia atrás a 103. El método GetTime continúa notificando 106 hasta que el reloj interno se ponga al día.
De forma predeterminada, GetPrivateTime devuelve la hora del sistema a través de una llamada a la función timeGetTime . Un filtro que proporciona un reloj de referencia desde un dispositivo externo puede realizar una de las siguientes acciones:
- Invalide GetPrivateTime para devolver la hora del dispositivo.
- Supervise la discrepancia entre la hora del dispositivo y la hora del sistema y llame a SetTimeDelta para realizar correcciones.
Esta clase usa un objeto CAMSchedule para controlar la programación de solicitudes de asesoramiento. Para obtener más información, consulte la documentación de la clase CAMSchedule .
Requisitos
Requisito | Value |
---|---|
Encabezado |
|
Biblioteca |
|