Comment les appareils matériels participent au graphe de filtre
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La 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.]
Cet article décrit comment DirectShow interagit avec le matériel audio et vidéo.
Filtres wrapper
Tous les filtres DirectShow sont des composants logiciels en mode utilisateur. Pour qu’un périphérique matériel en mode noyau, tel qu’une capture vidéo carte, rejoigne un graphique de filtre DirectShow, l’appareil doit être représenté en tant que filtre en mode utilisateur. Cette fonction est exécutée par des filtres « wrapper » spécialisés fournis avec DirectShow. Ces filtres incluent le filtre Capture audio , le filtre Capture VFW , le filtre Tuner TV , le filtre Audio TV et le filtre De barre croisée vidéo analogique . DirectShow fournit également un filtre appelé KsProxy, qui peut représenter n’importe quel type d’appareil de streaming wdM (Windows Driver Model). Les fournisseurs de matériel peuvent étendre KsProxy pour prendre en charge les fonctionnalités personnalisées, en fournissant un plug-in Ksproxy, qui est un objet COM agrégé par KsProxy.
Les filtres de wrapper exposent les interfaces COM qui représentent les fonctionnalités de l’appareil. L’application utilise ces interfaces pour transmettre des informations vers et à partir du filtre. Le filtre traduit les appels de la méthode COM en appels de pilotes de périphérique, transmet ces informations au pilote en mode noyau, puis traduit le résultat dans l’application. Les filtres TV Tuner, TV Audio, Analog Video Crossbar et KsProxy prennent en charge les propriétés de pilote personnalisées via l’interface IKsPropertySet . Le filtre capture VFW et le filtre capture audio ne sont pas extensibles de cette façon.
Pour les développeurs d’applications, les filtres wrapper permettent à l’application de contrôler les appareils comme ils contrôlent n’importe quel autre filtre DirectShow. Aucune programmation spéciale n’est requise; les détails de la communication avec l’appareil en mode noyau sont encapsulés dans le filtre.
Vidéo pour les appareils Windows
Le filtre capture VFW prend en charge les cartes de capture vidéo pour Windows (VfW) antérieures. Lorsqu’un carte VfW est présent sur le système cible, il peut être découvert et ajouté au graphique de filtre à l’aide de l’énumérateur d’appareils système DirectShow. Pour plus d’informations, consultez Énumération d’appareils et de filtres.
Appareils de capture et de mixage audio (cartes son)
Les cartes son plus récentes ont des prises d’entrée pour les microphones et d’autres types d’appareils. En règle générale, ces cartes ont également des fonctionnalités de mixage intégrées pour contrôler le volume, les aigus et les basses de chaque entrée individuelle. Dans DirectShow, les entrées et le mixeur du carte son sont encapsulés par le filtre Capture audio. Chaque son carte peut être découvert avec l’énumérateur de périphérique système. Pour afficher les cartes son dans votre système, exécutez GraphEdit et sélectionnez dans la catégorie Sources de capture audio. Chaque filtre de cette catégorie est un instance distinct du filtre Capture audio. (Voir Utilisation de GraphEdit.)
Appareils de streaming WDM
Les décodeurs matériels et les cartes de capture plus récents sont conformes à la spécification wdM (Windows Driver Model). Ces appareils disposent de fonctionnalités supérieures à celles des appareils VfW. Les cartes de capture vidéo WDM peuvent prendre en charge des fonctionnalités qui ne sont pas disponibles sous VfW, notamment l’énumération des formats de capture, le contrôle par programme des paramètres vidéo tels que la teinte et la luminosité, la sélection d’entrée par programmation et la prise en charge du tuner TV.
Pour prendre en charge les appareils de streaming WDM, DirectShow fournit le filtre KsProxy (ksproxy.ax). KsProxy a été appelé le « filtre swiss army knife » parce qu’il fait tellement de choses différentes. Le nombre de broches sur le filtre et le nombre d’interfaces COM exposées par le filtre dépendent des fonctionnalités du pilote sous-jacent. KsProxy n’apparaît pas dans le graphe de filtre sous le nom « KsProxy ». Il prend toujours le nom convivial de l’appareil, qui se trouve dans le Registre. Pour afficher les appareils WDM sur votre système, exécutez GraphEdit et sélectionnez parmi les catégories WDM Streaming. Même si vous n’avez qu’une seule carte WDM sur votre système, cette carte peut contenir plusieurs appareils. Chaque appareil est représenté sous la forme d’un filtre distinct, et chacun de ces filtres est en fait KsProxy.
Une application utilise l’énumérateur d’appareil système pour rechercher les monikers d’appareil WDM sur le système. KsProxy est instancié en appelant BindToObject sur le moniker. Étant donné que KsProxy peut représenter toutes sortes d’appareils WDM, il doit interroger le pilote pour déterminer quelle propriété définit le pilote pris en charge. Les jeux de propriétés sont des collections de structures de données utilisées par les pilotes WDM, ainsi que par certains filtres de mode utilisateur, tels que les décodeurs logiciels MPEG-2. KsProxy se configure lui-même pour exposer les interfaces COM qui correspondent à ces jeux de propriétés. KsProxy traduit les appels de la méthode COM en jeux de propriétés et les envoie au pilote. Les fournisseurs de matériel peuvent étendre KsProxy en fournissant des plug-ins, qui sont des interfaces spécifiques au fournisseur qui exposent les fonctionnalités spéciales d’un appareil. Tous ces détails sont masqués dans l’application. L’application contrôle l’appareil au moyen de KsProxy, de la même manière que tout autre filtre DirectShow.
Streaming du noyau
Les appareils WDM prennent en charge la diffusion en continu du noyau, dans lequel les données sont entièrement diffusées en mode noyau sans jamais basculer vers le mode utilisateur. Le basculement entre le mode noyau et le mode utilisateur est coûteux en calcul ; la diffusion en continu du noyau permet des débits de bits élevés sans surcharger le processeur hôte. Les filtres WDM peuvent utiliser la diffusion en continu du noyau pour transmettre des données multimédias directement d’un appareil matériel à un autre, soit sur le même carte, soit sur un autre carte, sans copier les données dans la mémoire main du système.
Du point de vue d’une application, il semble que les données passent d’un filtre en mode utilisateur au suivant. En réalité, les données peuvent ne jamais passer en mode utilisateur, mais elles peuvent être diffusées directement d’un appareil en mode noyau vers un autre jusqu’à ce qu’elles soient affichées sur les graphiques vidéo carte. Certains scénarios, tels que la capture dans un fichier, nécessitent que les données passent du mode noyau au mode utilisateur à un moment donné. Toutefois, ce commutateur ne nécessite pas nécessairement que les données soient copiées vers un nouvel emplacement en mémoire.
Les développeurs d’applications n’ont généralement pas besoin de se préoccuper des détails de la diffusion en continu du noyau, sauf en tant qu’informations de base. Pour plus d’informations sur WDM, la diffusion en continu de noyau, KsProxy et les rubriques connexes, consultez microsoft DDK.
Rubriques connexes