Condividi tramite


Metodo IMediaFilter::SetSyncSource (strmif.h)

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il SetSyncSource metodo imposta l'orologio di riferimento.

Sintassi

HRESULT SetSyncSource(
  [in] IReferenceClock *pClock
);

Parametri

[in] pClock

Puntatore all'interfaccia IReferenceClock dell'orologio o NULL. Se questo parametro è NULL, il grafico del filtro non usa un orologio di riferimento e tutti i filtri vengono eseguiti il più rapidamente possibile.

Valore restituito

Restituisce S_OK se ha esito positivo o un valore HRESULT che indica la causa dell'errore.

Commenti

Tutti i filtri nel grafico del filtro condividono lo stesso orologio di riferimento, per rimanere sincronizzati. L'ora di flusso viene calcolata dall'orologio di riferimento. I filtri del renderer usano l'orologio di riferimento per pianificare quando eseguono il rendering degli esempi. Se non è presente un orologio di riferimento, un filtro del renderer esegue il rendering di ogni esempio non appena arriva.

Questo metodo viene implementato da tutti i filtri DirectShow e anche da Filter Graph Manager.

Implementazione del filtro

Quando viene eseguito il grafico, Il gestore Filter Graph chiama questo metodo su ogni filtro nel grafico, per notificarli dell'orologio di riferimento del grafico. Usare questo metodo per archiviare il puntatore IReferenceClock . Aumentare il conteggio dei riferimenti sul puntatore archiviato. Prima che il filtro venga rimosso dal grafico, Filter Graph Manager chiama di nuovo SetSyncSource con il valore NULL. Rilasciare il puntatore archiviato e impostarlo su NULL.

La classe CBaseFilter implementa questo metodo; vedere CBaseFilter::SetSyncSource.

Si noti che i filtri non possono usare questo metodo per selezionare l'orologio grafico. Nei filtri, l'unica funzione di questo metodo consiste nell'informare il filtro dell'orologio usato dal grafico. Un filtro può fornire un orologio di riferimento esponendo l'interfaccia IReferenceClock . Per altre informazioni, vedere Time and Clocks in DirectShow.

Uso dell'applicazione

Un'applicazione può eseguire l'override dell'orologio predefinito chiamando SetSyncSource in Filter Graph Manager. Non farlo a meno che non si abbia un motivo particolare per preferire un altro orologio. È anche possibile impostare il grafico non per usare alcun orologio di riferimento chiamando SetSyncSource con il valore NULL. È possibile eseguire questa operazione per elaborare gli esempi il più rapidamente possibile. Per altre informazioni, vedere Impostazione dell'orologio grafico.

Le applicazioni non devono mai chiamare questo metodo nei filtri.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione strmif.h (include Dshow.h)
Libreria Strmiids.lib

Vedi anche

Codici errore e esito positivo

IFilterGraph::SetDefaultSyncSource

Interfaccia IMediaFilter