Freigeben über


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
S_FALSE
Mindestens ein Downstreamrenderer sendet keine Stoppbenachrichtigung.
S_OK
Erfolg.
E_FAIL
Eine übereinstimmende Pin konnte nicht gefunden werden, oder der Pin hat die Streamsteuerung nicht unterstützt.
E_POINTER
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.

Hinweis  

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.

 
Um eine Pin zu steuern, ruft diese Methode die Methoden IAMStreamControl::StartAt und IAMStreamControl::StopAt auf . Jeder Pin sendet beim Start eine EC_STREAM_CONTROL_STARTED-Ereignisbenachrichtigung. Der zweite Parameter der Ereignisbenachrichtigung ist der in wStartCookie angegebene Wert. Wenn der Pin beendet wird, wird eine EC_STREAM_CONTROL_STOPPED-Ereignisbenachrichtigung gesendet. Der zweite Parameter dieser Ereignisbenachrichtigung ist der in wStopCookie angegebene Wert.

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

Weitere Informationen

Fehler- und Erfolgscodes

ICaptureGraphBuilder2-Schnittstelle