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.

Jerarquía de clases cbasereferenceclock

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:

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
Refclock.h (include Streams.h)
Biblioteca
Strmbase.lib (compilaciones comerciales);
Strmbasd.lib (compilaciones de depuración)