Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngineet audio/vidéo capture dans 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 capture audio/vidéo dans Media Foundation au lieu de directShow, lorsque cela est 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 via le graphique de filtre. Au lieu de cela, les images vidéo sont produites dans le matériel et envoyées directement à la mémoire vidéo. L’épingle VP permet d’envoyer des messages de contrôle au matériel.
Il est important de connecter la broche VP, même si votre application effectue uniquement la capture de fichiers sans préversion. Si vous laissez la broche non connectée, le graphique ne s’exécute pas correctement. Ceci est différent 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 :
- Video Renderer : Connectez l’épingle VP à épingler 0 sur le filtre de mélangeur overlay et connectez le filtre Overlay Mixer à Video Renderer.
- VMR-7 : Connectez l’épingle VP au filtre Video Port Manager et connectez le Gestionnaire de ports vidéo à VMR-7.
- VMR-9 : Vous ne pouvez pas utiliser VMR-9 si l’appareil a une broche VP, car Direct3D 9 ne prend pas en charge les ports vidéo. Utilisez le renderer vidéo ou vmR-7.
Pour les scénarios de port vidéo, overlay Mixer et Video Renderer sont recommandés sur le Gestionnaire de ports vidéo et VMR-7, car tous les pilotes ne prennent pas en charge le Gestionnaire de ports vidéo. En général, le mélangeur overlay est l’option la plus fiable pour les ports vidéo.
La méthode ICaptureGraphBuilder2 ::RenderStream insère automatiquement le mélangeur overlay s’il existe une broche VP. Si vous créez le graphe sans utiliser cette méthode, vous devez rechercher 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.
);
Une fois que vous avez ajouté le mélangeur overlay au graphique, appelez FindPin à nouveau pour rechercher l’épingle 0 sur le mélangeur overlay. 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 mixeur Overlay au filtre Du renderer vidéo. Vous pouvez masquer la vidéo en appelant les méthodes IVideoWindow ::p ut_AutoShow et IVideoWindow ::p ut_Visible sur le Gestionnaire de graphiques de filtre.
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-le au filtre VBI Surface Allocator. Pour plus d’informations, consultez Affichage des sous-titres.
Rubriques connexes