Share via


Filtres de capture vidéo DirectShow

[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.]

Les filtres de capture dans DirectShow ont des fonctionnalités qui les distinguent des autres types de filtres. Bien que le Générateur de graphiques de capture masque un grand nombre de détails, il est judicieux de lire cette section afin d’avoir une compréhension générale des graphiques de capture DirectShow.

Épingler les catégories

Un filtre de capture a souvent au moins deux broches de sortie qui fournissent le même type de données, par exemple, une broche d’aperçu et une broche de capture. Par conséquent, les types de supports ne sont pas un bon moyen de distinguer les broches. Au lieu de cela, les broches se distinguent par leur fonctionnalité, qui est identifiée à l’aide d’un GUID, appelé catégorie de broche.

Pour plus d’informations sur la façon d’interroger des épingles pour leur catégorie, consultez Utilisation des catégories d’épingles. Toutefois, pour la plupart des applications, vous n’aurez pas à interroger directement les épingles. Au lieu de cela, différentes méthodes ICaptureGraphBuilder2 prennent des paramètres qui spécifient la catégorie de broche sur laquelle opérer. Le Générateur de graphiques de capture localise automatiquement l’épingle correcte.

Épingles d’aperçu et broches de capture

Certains appareils de capture vidéo ont des broches de sortie distinctes pour la préversion et la capture. L’épingle d’aperçu est utilisée pour afficher la vidéo à l’écran, tandis que l’épingle de capture est utilisée pour écrire la vidéo dans un fichier.

Une broche d’aperçu et une broche de capture présentent les différences suivantes :

  • Une broche d’aperçu supprime les images si nécessaire pour maintenir le débit sur la broche de capture.
  • Chaque image d’une broche de capture est horodatée avec l’heure de la capture de l’image. Une broche d’aperçu n’horoda pas les exemples qu’elle livre.

La raison pour laquelle les images d’aperçu n’ont pas d’horodatage est que le graphique de filtre introduit une faible latence dans le flux. Si l’heure de capture est utilisée comme heure de présentation, le convertisseur vidéo traite chaque échantillon comme étant légèrement en retard. Cela peut entraîner la suppression d’images par le convertisseur vidéo pendant qu’il tente de rattraper son retard. La suppression des horodatages garantit que le convertisseur présente chaque échantillon lorsqu’il arrive, sans supprimer les images.

La catégorie d’épingle pour les broches d’aperçu est PIN_CATEGORY_PREVIEW. La catégorie des broches de capture est PIN_CATEGORY_CAPTURE.

Broches de port vidéo

Un port vidéo est une connexion matérielle entre un périphérique vidéo (tel qu’un tuner tv analogique) et le carte vidéo. Un port vidéo permet à l’appareil d’envoyer des données vidéo directement aux carte graphiques. La vidéo s’affiche à l’écran à l’aide d’une superposition matérielle. Un port vidéo peut être un câble réel qui connecte deux appareils sur des cartes distinctes ; ou il peut s’agir d’une connexion câblée sur le même carte.

L’avantage d’un port vidéo est que la vidéo passe directement en mémoire vidéo, sans aucune intervention du processeur. Toutefois, les ports vidéo présentent certains inconvénients :

  • Un port vidéo utilise toujours la surface de superposition pendant la capture, que vous souhaitiez ou non afficher un aperçu de la vidéo.
  • Le basculement entre les images se produit automatiquement, ce qui rend difficile la synchronisation du basculement avec d’autres opérations vidéo.

Si un périphérique de capture utilise un port vidéo, le filtre de capture a une broche de port vidéo au lieu d’une broche d’aperçu. La catégorie d’épingle pour les broches de port vidéo est PIN_CATEGORY_VIDEOPORT.

Chaque filtre de capture a au moins une broche de capture. En outre, il peut avoir une broche d’aperçu ou une broche de port vidéo, mais jamais les deux. Les filtres peuvent avoir plusieurs broches de capture et d’aperçu, chacune fournissant un type de média distinct. Ainsi, un filtre unique peut avoir une broche de capture vidéo, une broche d’aperçu vidéo, une broche de capture audio et une broche d’aperçu audio. (Il n’y a cependant rien d’équivalent à un port vidéo pour l’audio.)

Filtres WDM en amont

Les appareils WDM (Windows Driver Model) peuvent nécessiter des filtres supplémentaires amont du filtre de capture. Ces filtres incluent les éléments suivants :

  • Filtre tuner TV. Contrôle le réglage des tuners tv analogiques.
  • Filtre audio TV. Contrôle les paramètres audio des tuners tv analogiques.
  • Filtre de barre croisée vidéo analogique. Achemine les signaux vidéo et audio via l’appareil matériel. Par exemple, un appareil peut avoir plusieurs entrées, telles que S-Video et la vidéo composite. Le filtre de barre croisée permet à l’application de sélectionner l’entrée.

Bien qu’il s’agisse de filtres distincts dans DirectShow, ils représentent généralement le même appareil matériel. Chaque filtre contrôle une fonction différente de l’appareil. Les filtres sont connectés par des broches, mais aucune donnée multimédia ne se déplace sur les connexions de broche. Par conséquent, les broches de ces filtres ne se connectent pas en établissant un type de média. Au lieu de cela, ils utilisent des valeurs GUID appelées mediums. Les GUID moyens sont définis de manière unique pour un minidriver d’appareil donné. Par exemple, le filtre Tv Tuner et le filtre Capture vidéo pour le même carte TV prennent tous deux en charge le même média, ce qui permet à l’application de générer correctement le graphique.

Dans la pratique, tant que vous utilisez ICaptureGraphBuilder2 pour générer vos graphiques de capture, ces filtres sont ajoutés automatiquement au graphique. Pour une discussion plus détaillée, consultez Filtres des pilotes de classe WDM.

À propos de la capture vidéo dans DirectShow