Partager 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, 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.]

Les filtres de capture dans DirectShow ont certaines fonctionnalités qui les distinguent d’autres types de filtres. Bien que le générateur Capture Graph Builder 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.

catégories de broches

Un filtre de capture comporte souvent deux broches de sortie ou plus 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 sont distinguées par leurs fonctionnalités, identifiées à l’aide d’un GUID, appelée la catégorie de broche .

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

épingles d’aperçu et les 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 restituer la vidéo à l’écran, tandis que la broche de capture est utilisée pour écrire une 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 trames 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 du flux lorsque l’image a été capturée. Une épingle d’aperçu n’horodaille pas les échantillons qu’il livre.

La raison pour laquelle les images d’aperçu n’ont pas d’horodatages 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 tard. Cela peut entraîner la suppression des images par le convertisseur vidéo pendant qu’il tente de rattraper le retard. La suppression des horodatages garantit que le renderer présente chaque échantillon lorsqu’il arrive, sans supprimer de trames.

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

broches de port vidéo

Un port vidéo est une connexion matérielle entre un appareil vidéo (tel qu’un tuner tv analogique) et la carte vidéo. Un port vidéo permet à l’appareil d’envoyer des données vidéo directement à la carte graphique. 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 en dur sur la même carte.

L’avantage d’un port vidéo est que la vidéo passe directement en mémoire vidéo, sans aucun travail 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 afficher un aperçu de la vidéo.
  • Le basculement entre les images se produit automatiquement, ce qui rend difficile la synchronisation du retournement avec d’autres opérations vidéo.

Si un appareil 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’épingles 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 épingle d’aperçu ou une broche de port vidéo, mais jamais les deux. Les filtres peuvent avoir plusieurs broches de capture et épingles d’aperçu, chacune fournissant un type de média distinct. Ainsi, un seul filtre 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 rien d’équivalent à un port vidéo pour l’audio, cependant.)

filtres WDM en amont

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

  • filtre de réglage TV. Contrôle le réglage des réglages pour les tuners tv analogiques.
  • filtre audio TV. Contrôle les paramètres audio pour les tuners tv analogiques.
  • filtre de barre croisée vidéo analogique. Route 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 que ces filtres soient distincts dans DirectShow, ils représentent généralement le même périphérique matériel. Chaque filtre contrôle une fonction différente de l’appareil. Les filtres sont connectés par broches, mais aucune donnée multimédia ne se déplace sur les connexions de broche. Par conséquent, les broches sur ces filtres ne se connectent pas en établissant un type de média. Au lieu de cela, ils utilisent des valeurs GUID appelées supports. 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 la même carte TV prennent tous deux en charge le même support, ce qui permet à l’application de générer correctement le graphique.

Dans la pratique, tant que vous utilisez ICaptureGraphBuilder2 pour créer vos graphiques de capture, ces filtres sont ajoutés automatiquement au graphe. Pour une discussion plus détaillée, consultez filtres de pilotes de classe WDM.

À propos de la capture vidéo dans DirectShow