Broches de port vidéo
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Un appareil de capture avec un port vidéo matériel peut utiliser les extensions de port vidéo (VPE) dans Microsoft® DirectX®. Si c’est le cas, le filtre de capture aura une broche de port vidéo (VP). Aucune donnée vidéo ne transite à partir de l’épingle VP dans le graphique de filtre. Au lieu de cela, les trames vidéo sont produites dans le matériel et envoyées directement à la mémoire vidéo. La broche VP permet d’envoyer des messages de contrôle au matériel.
Il est important de connecter l’épingle VP, même si votre application effectue uniquement la capture de fichiers sans aperçu. Si vous laissez l’épingle non connectée, le graphique ne s’exécutera pas correctement. Cela diffère des broches d’aperçu, qui n’ont pas besoin d’être connectées.
Les différents convertisseurs vidéo DirectShow offrent une prise en charge variable des broches VP :
- Convertisseur vidéo : connectez la broche VP à l’épingle 0 sur le filtre Overlay Mixer et connectez le filtre Overlay Mixer au convertisseur vidéo.
- VMR-7 : connectez l’épingle VP au filtre Video Port Manager et connectez le gestionnaire de port vidéo au VMR-7.
- VMR-9 : vous ne pouvez pas utiliser le VMR-9 si l’appareil a une broche VP, car Direct3D 9 ne prend pas en charge les ports vidéo. Utilisez le convertisseur vidéo ou le VMR-7.
Pour les scénarios de port vidéo, le mélangeur de superposition et le convertisseur vidéo sont recommandés par rapport au Gestionnaire de ports vidéo et à VMR-7, car tous les pilotes ne prennent pas en charge video Port Manager. En général, overlay Mixer est l’option la plus fiable pour les ports vidéo.
La méthode ICaptureGraphBuilder2::RenderStream insère automatiquement le mélangeur de superposition s’il existe une broche VP. Si vous créez le graphique sans utiliser cette méthode, vous devez case activée pour une broche de port vidéo sur le filtre de capture et, le cas échéant, le connecter au filtre Overlay Mixer, comme illustré dans le diagramme suivant.
Vous pouvez utiliser la méthode ICaptureGraphBuilder2::FindPin pour rechercher une épingle VP sur le filtre de capture :
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.
);
Après avoir ajouté le mélangeur de superposition au graphique, appelez à nouveau FindPin pour rechercher l’épingle 0 sur le mélangeur de superposition. L’épingle 0 est toujours la première broche d’entrée sur le filtre.
pBuild->FindPin(pOvMix, PINDIR_INPUT, NULL, NULL, TRUE, 0, &pOVPin);
Connectez les deux broches en appelant IGraphBuilder::Connect.
pGraph->Connect(pVPPin, pOvPin);
Ensuite, connectez la broche de sortie du mélangeur de superposition au filtre Video Renderer. Vous pouvez masquer la vidéo en appelant les méthodes IVideoWindow::p ut_AutoShow et IVideoWindow::p ut_Visible dans le Gestionnaire de graphe de filtres.
Pour les tuners TV, le filtre de capture peut également avoir une broche VBI de port vidéo (PIN_CATEGORY_VIDEOPORT_VBI). Si c’est le cas, connectez cette broche au filtre D’allocation surface VBI . Pour plus d’informations, consultez Affichage des sous-titres.
Rubriques connexes