ICaptureGraphBuilder2::ControlStream-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 ControlStream
-Methode legt die Start- und Stoppzeiten für einen oder mehrere Datenströme fest.
Syntax
HRESULT ControlStream(
[in] const GUID *pCategory,
[in] const GUID *pType,
[in] IBaseFilter *pFilter,
[in] REFERENCE_TIME *pstart,
[in] REFERENCE_TIME *pstop,
[in] WORD wStartCookie,
[in] WORD wStopCookie
);
Parameter
[in] pCategory
Ein Zeiger auf eine GUID, die eine der unter Pin-Eigenschaftensatz aufgeführten Pinkategorien angibt. Der Wert dieses Parameters darf nicht NULL sein.
[in] pType
Zeiger auf eine Haupttyp-GUID, die den Medientyp oder NULL angibt. Wenn dieser Parameter NULL ist, legen Sie auch den pFilter-Parameter auf NULL fest. Andernfalls können Sie die falsche Pin steuern und unvorhersehbare Ergebnisse erhalten.
[in] pFilter
Zeiger auf eine IBaseFilter-Schnittstelle , die angibt, welcher Filter gesteuert werden soll. Um alle Erfassungsfilter im Diagramm zu steuern, legen Sie diesen Parameter auf NULL fest.
[in] pstart
Zeiger auf eine Variable, die die Startzeit enthält. Wenn der Wert MAXLONGLONGLONG (0x7FFFFFFFFFFFFFFF) lautet, bricht die -Methode die vorherige Startanforderung ab. Wenn der Wert NULL ist, wird der Pin sofort gestartet, wenn das Diagramm ausgeführt wird.
[in] pstop
Zeiger auf eine Variable, die die Stoppzeit enthält. Wenn der Wert MAXLONGLONGLONG ist, bricht die -Methode jede vorherige Stoppanforderung ab. Wenn der Wert NULL ist, wird der Pin sofort beendet.
[in] wStartCookie
Wert, der als zweiter Parameter der EC_STREAM_CONTROL_STARTED Ereignisbenachrichtigung gesendet wird. Weitere Informationen finden Sie unter Hinweise.
[in] wStopCookie
Wert, der als zweiter Parameter der EC_STREAM_CONTROL_STOPPED-Ereignisbenachrichtigung gesendet wird. Weitere Informationen finden Sie unter Hinweise.
Rückgabewert
Gibt einen HRESULT-Wert zurück. Die folgenden Werte sind möglich.
Rückgabecode | Beschreibung |
---|---|
|
Mindestens ein Downstreamrenderer sendet keine Stoppbenachrichtigung. |
|
Erfolg. |
|
Eine übereinstimmende Pin konnte nicht gefunden werden, oder der Pin hat die Streamsteuerung nicht unterstützt. |
|
NULL-Zeigerargument. |
Hinweise
Diese Methode sucht Ausgabepins für Erfassungsfilter mithilfe von Suchkriterien, die Sie im Methodenaufruf angeben. Anschließend werden die IAMStreamControl-Methoden für diese Pins aufgerufen. Mit dieser Methode kann eine Anwendung Datenströme steuern, ohne dass die Anwendung die Filter und Pins im Diagramm auflisten muss.
Verwenden Sie diese Methode für die framegenaue Erfassung oder für die individuelle Steuerung der Aufnahme und Vorschau. Sie können z. B. die Aufzeichnung auf dem Datenträger beenden, aber die Videovorschau weiterhin ausführen.
Die ersten drei Parameter geben an, welche Pins gesteuert werden sollen. Ein Erfassungsdiagramm kann über mehrere Erfassungsfilter verfügen. Es kann z. B. Filter für Video-, Audio- und Untertiteldaten enthalten. Außerdem kann ein Erfassungsfilter über mehrere Ausgabepins verfügen. Einige Aufnahmefilter verfügen über separate Pins für Vorschau und Aufnahme oder separate Pins für reine Videodaten und Audio-Video-Ineinandergreifende Daten. Um die Videovorschau zu steuern, geben Sie z. B. PIN_CATEGORY_PREVIEW für pCategory und MEDIATYPE_Video für pType an.
Wenn die Pinkategorie PIN_CATEGORY_PREVIEW ist, können Sie keine bestimmten Start- und Stoppzeiten festlegen, da die von einer Vorschaunadel übermittelten Beispiele keine Zeitstempel aufweisen (siehe Zeitstempel). Verwenden Sie stattdessen die Werte NULL und MAXLONGLONG, um den Pin zum gewünschten Zeitpunkt zu starten und zu beenden.
Außerdem wird diese Methode für die Vorschau nicht unterstützt, wenn das Gerät einen Videoport-Pin verwendet, da in diesem Fall das Gerät die Vorschaubeispiele direkt über Hardware bereitstellt.
Wenn diese Methode einen übereinstimmenden Pin findet, sucht sie nach einem anderen Filter, der IAMStreamControl unterstützt (in der Regel ein Multiplexer). Wenn eine gefunden wird, werden auch die Start- und Stoppzeiten für diesen Filter festgelegt. Dadurch werden zwei Paare von Stoppbenachrichtigungen generiert: eines für den Erfassungsfilter und eines für den Downstreamfilter. Nur die Stoppbenachrichtigung des Downstreamfilters verwendet den wStopCookie-Parameter . Wenn Sie auf dieses Ereignis warten, wird sichergestellt, dass der Downstreamfilter das letzte Beispiel empfängt.
Wenn iamStreamControl von keinem Downstreamfilter unterstützt wird, gibt die Methode S_FALSE zurück. In diesem Fall erhalten Sie möglicherweise die Benachrichtigung zum Beenden, bevor das letzte Beispiel gerendert wird.
MAXLONGLONG ist der größtmögliche REFERENCE_TIME Wert. In der DirectShow-Basisklassenbibliothek ist sie auch als konstante MAX_TIME definiert.
Anforderungen
Anforderung | Wert |
---|---|
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 |