Compartir a través de


Método IMediaFilter::SetSyncSource (strmif.h)

[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.

El SetSyncSource método establece el reloj de referencia.

Sintaxis

HRESULT SetSyncSource(
  [in] IReferenceClock *pClock
);

Parámetros

[in] pClock

Puntero a la interfaz IReferenceClock del reloj o NULL. Si este parámetro es NULL, el gráfico de filtros no usa un reloj de referencia y todos los filtros se ejecutan lo antes posible.

Valor devuelto

Devuelve S_OK si se ejecuta correctamente o un valor HRESULT que indica la causa del error.

Observaciones

Todos los filtros del gráfico de filtros comparten el mismo reloj de referencia para mantenerse sincronizado. El tiempo de la secuencia se calcula a partir del reloj de referencia. Los filtros del representador usan el reloj de referencia para programar cuándo representan muestras. Si no hay ningún reloj de referencia, un filtro de representador representa cada muestra en cuanto llega.

Todos los filtros DirectShow implementan este método y también el Administrador de gráficos de filtros.

Implementación de filtros

Cuando se ejecuta el grafo, el administrador de Filter Graph llama a este método en todos los filtros del grafo, para notificarles el reloj de referencia del grafo. Use este método para almacenar el puntero IReferenceClock . Incremente el recuento de referencias en el puntero almacenado. Antes de quitar el filtro del gráfico, el Administrador de gráficos de filtros llama a SetSyncSource de nuevo con el valor NULL. Libere el puntero almacenado y establézcalo en NULL.

La clase CBaseFilter implementa este método; vea CBaseFilter::SetSyncSource.

Tenga en cuenta que los filtros no pueden usar este método para seleccionar el reloj del gráfico. En los filtros, la única función de este método es informar al filtro del reloj que usa el gráfico. Un filtro puede proporcionar un reloj de referencia exponiendo la interfaz IReferenceClock . Para obtener más información, vea Time and Clocks in DirectShow.

Uso de la aplicación

Una aplicación puede invalidar el reloj predeterminado llamando a SetSyncSource en filter Graph Manager. No hagas esto a menos que tengas una razón determinada para preferir otro reloj. También puede establecer el gráfico para que no use ningún reloj de referencia, llamando a SetSyncSource con el valor NULL. Puede hacerlo para procesar muestras lo más rápido posible. Para obtener más información, vea Establecer el reloj del grafo.

Las aplicaciones nunca deben llamar a este método en filtros.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado strmif.h (incluye Dshow.h)
Library Strmiids.lib

Consulte también

Códigos de error y éxito

IFilterGraph::SetDefaultSyncSource

IMediaFilter (interfaz)