Freigeben über


IMediaFilter::SetSyncSource-Methode (strmif.h)

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Die SetSyncSource -Methode legt die Verweisuhr fest.

Syntax

HRESULT SetSyncSource(
  [in] IReferenceClock *pClock
);

Parameter

[in] pClock

Zeiger auf die IReferenceClock-Schnittstelle der Uhr oder NULL. Wenn dieser Parameter NULL ist, verwendet das Filterdiagramm keine Verweisuhr, und alle Filter werden so schnell wie möglich ausgeführt.

Rückgabewert

Gibt bei erfolgreicher Ausführung S_OK oder einen HRESULT-Wert zurück, der die Fehlerursache angibt.

Bemerkungen

Alle Filter im Filterdiagramm verwenden dieselbe Referenzuhr, um synchronisiert zu bleiben. Die Streamzeit wird anhand der Referenzuhr berechnet. Rendererfilter verwenden die Referenzuhr, um das Rendern von Beispielen zu planen. Wenn keine Referenzuhr vorhanden ist, rendert ein Rendererfilter jedes Beispiel, sobald es eintrifft.

Diese Methode wird von allen DirectShow-Filtern und auch vom Filter Graph-Manager implementiert.

Filterimplementierung

Wenn das Diagramm ausgeführt wird, ruft der Filter Graph-Manager diese Methode für jeden Filter im Graphen auf, um sie über die Graphenreferenzuhr zu informieren. Verwenden Sie diese Methode, um den IReferenceClock-Zeiger zu speichern. Erhöhen Sie die Verweisanzahl für den gespeicherten Zeiger. Bevor der Filter aus dem Graphen entfernt wird, ruft der Filtergraph-Manager SetSyncSource erneut mit dem Wert NULL auf. Lassen Sie den gespeicherten Zeiger los, und legen Sie ihn auf NULL fest.

Die CBaseFilter-Klasse implementiert diese Methode. siehe CBaseFilter::SetSyncSource.

Beachten Sie, dass Filter diese Methode nicht verwenden können, um die Graphuhr auszuwählen. In Filtern besteht die einzige Funktion dieser Methode darin, den Filter der Uhr zu informieren, die der Graph verwendet. Ein Filter kann eine Referenzuhr bereitstellen, indem die IReferenceClock-Schnittstelle verfügbar ist. Weitere Informationen finden Sie unter Zeit und Uhren in DirectShow.

Anwendungsverwendung

Eine Anwendung kann die Standarduhr überschreiben, indem SetSyncSource im Graph-Filter-Manager aufgerufen wird. Tun Sie dies nur, wenn Sie einen bestimmten Grund haben, eine andere Uhr zu bevorzugen. Sie können auch festlegen, dass das Diagramm keine Verweisuhr verwendet, indem Sie SetSyncSource mit dem Wert NULL aufrufen. Sie können dies tun, um Beispiele so schnell wie möglich zu verarbeiten. Weitere Informationen finden Sie unter Festlegen der Graphuhr.

Anwendungen sollten diese Methode niemals für Filter aufrufen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile strmif.h (include Dshow.h)
Bibliothek Strmiids.lib

Siehe auch

Fehler- und Erfolgscodes

IFilterGraph::SetDefaultSyncSource

IMediaFilter-Schnittstelle