Videoport-Pins
Ein Erfassungsgerät mit einem Hardwarevideoport kann die Videoporterweiterungen (VPE) in Microsoft® DirectX®. Wenn dies der Der Erfassungsfilter ist, wird ein Videoport (VP)-Pin verwendet. Vom VP-Pin werden keine Videodaten durch das Filterdiagramm gestreamt. Stattdessen werden Videoframes in Hardware erstellt und direkt an den Videospeicher gesendet. Mit dem VP-Pin können Steuerungsmeldungen an die Hardware gesendet werden.
Es ist wichtig, den VP-Pin zu verbinden, auch wenn Ihre Anwendung nur Dateierfassung ohne Vorschau ausführt. Wenn Sie die Verbindung mit dem Anheften nicht mehr herstellen, wird das Diagramm nicht ordnungsgemäß ausgeführt. Dies ist anders als bei Vorschaupins, die nicht verbunden werden müssen.
Die verschiedenen DirectShow-Videorenderer bieten unterschiedliche Unterstützung für VP-Pins:
- Videorenderer: Verbinden VP-Pin anheften, um 0 auf dem Overlay Mixer-Filter zu heften, und verbinden Sie den Overlay-Mixer mit dem Videorenderer.
- VMR-7: Verbinden VP-Pin an den Videoport-Manager-Filter an, und verbinden Sie den Videoport-Manager mit VMR-7.
- VMR-9: Sie können VMR-9 nicht verwenden, wenn das Gerät über einen VP-Pin verfügt, da Direct3D 9 keine Videoports unterstützt. Verwenden Sie entweder den Videorenderer oder VMR-7.
Für Videoportszenarien werden overlay Mixer und Video Renderer gegenüber dem Videoport-Manager und VMR-7 empfohlen, da nicht alle Treiber den Videoport-Manager unterstützen. Im Allgemeinen ist das Overlay-Mixer die zuverlässigste Option für Videoports.
Die ICaptureGraphBuilder2::RenderStream-Methode fügt die Overlay-Mixer automatisch ein, wenn ein VP-Pin vorgelegen hat. Wenn Sie das Diagramm ohne diese Methode erstellen, sollten Sie nach einem Videoportanschluss für den Erfassungsfilter suchen und, falls vorhanden, eine Verbindung mit dem Filter Overlay Mixer herstellen, wie im folgenden Diagramm dargestellt.

Sie können die ICaptureGraphBuilder2::FindPin-Methode verwenden, um im Erfassungsfilter nach einem VP-Pin zu suchen:
hr = pBuild->FindPin(
pCap, // Pointer to the capture filter.
PINDIR_OUTPUT, // Look for an output pin.
&PIN_CATEGORY_VIDEOPORT, // Look for a video port pin.
NULL, // Any media type.
FALSE, // Pin can be connected.
0, // Retrieve the first matching pin.
&pVPPin // Receives a pointer to the pin.
);
Nachdem Sie dem Diagramm den Overlay-Mixer hinzugefügt haben, rufen Sie FindPin erneut auf, um pin 0 auf dem Overlay-Mixer. Pin 0 ist immer der erste Eingabepin im Filter.
pBuild->FindPin(pOvMix, PINDIR_INPUT, NULL, NULL, TRUE, 0, &pOVPin);
Verbinden die beiden Stecknadeln durch Aufrufen von IGraphBuilder::Verbinden.
pGraph->Connect(pVPPin, pOvPin);
Verbinden Sie dann den Ausgabepin Mixer Overlay-Filter mit dem Videorendererfilter. Sie können das Video ausblenden, indem Sie die Methoden IVideoWindow::p ut _ AutoShow und IVideoWindow::p ut _ Visible im Filter Graph Manager aufrufen.
Bei TV-Tunern kann der Erfassungsfilter auch über einen Videoport-VBI-Pin (PIN _ CATEGORY _ VIDEOPORT _ VBI) verfügen. Falls ja, verbinden Sie diesen Pin mit dem VBI Surface Allocator-Filter. Weitere Informationen finden Sie unter Anzeigen von Untertiteln.