Compartilhar via


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

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na 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 Captura de Áudio/Vídeo no 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.]

O SetSyncSource método define o relógio de referência.

Sintaxe

HRESULT SetSyncSource(
  [in] IReferenceClock *pClock
);

Parâmetros

[in] pClock

Ponteiro para a interface IReferenceClock do relógio ou NULL. Se esse parâmetro for NULL, o grafo de filtro não usará um relógio de referência e todos os filtros serão executados o mais rápido possível.

Retornar valor

Retorna S_OK se tiver êxito ou um valor HRESULT que indica a causa do erro.

Comentários

Todos os filtros no grafo de filtro compartilham o mesmo relógio de referência para permanecer sincronizado. O tempo de fluxo é calculado a partir do relógio de referência. Os filtros de renderizador usam o relógio de referência para agendar quando renderizam amostras. Se não houver relógio de referência, um filtro de renderizador renderizará cada exemplo assim que ele chegar.

Esse método é implementado por todos os filtros directShow e também pelo Gerenciador de Grafo de Filtro.

Implementação de filtro

Quando o grafo é executado, o gerenciador do Filter Graph chama esse método em todos os filtros do grafo para notificá-los do relógio de referência do grafo. Use esse método para armazenar o ponteiro IReferenceClock . Incremente a contagem de referência no ponteiro armazenado. Antes que o filtro seja removido do grafo, o Gerenciador de Grafo de Filtro chama SetSyncSource novamente com o valor NULL. Solte o ponteiro armazenado e defina-o como NULL.

A classe CBaseFilter implementa esse método; consulte CBaseFilter::SetSyncSource.

Observe que os filtros não podem usar esse método para selecionar o relógio de grafo. Em filtros, a única função desse método é informar o filtro do relógio que o grafo está usando. Um filtro pode fornecer um relógio de referência expondo a interface IReferenceClock . Para obter mais informações, consulte Hora e relógios no DirectShow.

Uso do aplicativo

Um aplicativo pode substituir o relógio padrão chamando SetSyncSource no Gerenciador de Grafo de Filtro. Não faça isso a menos que você tenha um motivo específico para preferir outro relógio. Você também pode definir o grafo para não usar nenhum relógio de referência, chamando SetSyncSource com o valor NULL. Você pode fazer isso para processar amostras o mais rápido possível. Para obter mais informações, consulte Configurando o relógio do grafo.

Os aplicativos nunca devem chamar esse método em filtros.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho strmif.h (inclua Dshow.h)
Biblioteca Strmiids.lib

Confira também

Códigos de erro e êxito

IFilterGraph::SetDefaultSyncSource

IMediaFilter Interface