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 |