Partager via


Présentation de la programmation d’applications 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.]

Cet article présente la terminologie et les concepts de base utilisés dans DirectShow. Après avoir lu cette section, vous serez prêt à écrire votre première application DirectShow.

Filtres et graphiques de filtres

Le bloc de construction de DirectShow est un composant logiciel appelé filtre. Un filtre est un composant logiciel qui effectue une opération sur un flux multimédia. Par exemple, les filtres DirectShow peuvent

  • lire des fichiers
  • obtenir une vidéo à partir d’un appareil de capture vidéo
  • décoder différents formats de flux, tels que la vidéo MPEG-1
  • transmettre des données aux graphiques ou au son carte

Les filtres reçoivent l’entrée et produisent une sortie. Par exemple, si un filtre décode une vidéo MPEG-1, l’entrée est le flux encodé en MPEG et la sortie est une série d’images vidéo non compressées.

Dans DirectShow, une application effectue n’importe quelle tâche en connectant des chaînes de filtres, afin que la sortie d’un filtre devienne l’entrée d’un autre. Un ensemble de filtres connectés est appelé graphe de filtres. Par exemple, le diagramme suivant montre un graphique de filtre pour lire un fichier AVI.

filtrer le graphique pour lire un fichier avi

Le filtre Source de fichier lit le fichier AVI à partir du disque dur. Le filtre splitter AVI analyse le fichier en deux flux, un flux vidéo compressé et un flux audio. Le filtre décompresseur AVI décode les trames vidéo. Le filtre Convertisseur vidéo dessine les images sur l’affichage, à l’aide de DirectDraw ou de GDI. Le filtre Appareil DirectSound par défaut lit le flux audio à l’aide de DirectSound.

L’application n’a pas besoin de gérer tous ces flux de données. Au lieu de cela, les filtres sont contrôlés par un composant de haut niveau appelé Gestionnaire de graphes de filtres. L’application effectue des appels d’API de haut niveau, tels que « Exécuter » (pour déplacer des données dans le graphique) ou « Arrêter » (pour arrêter le flux de données). Si vous avez besoin de davantage de contrôle sur les opérations de flux, vous pouvez accéder aux filtres directement via les interfaces COM. Le Gestionnaire de graphe de filtres transmet également des notifications d’événements à l’application.

Le Gestionnaire de graphe de filtres sert également un autre objectif : il fournit des méthodes permettant à l’application de générer le graphe de filtres, en connectant les filtres entre eux. (DirectShow fournit également divers objets d’assistance qui simplifient ce processus. Ceux-ci sont décrits en détail dans la documentation.)

Écriture d’une application DirectShow

En termes généraux, toute application DirectShow doit effectuer trois tâches. Celles-ci sont illustrées dans le diagramme suivant.

application de mode d’affichage des directs

  1. L’application crée une instance du Gestionnaire de graphe de filtres.
  2. L’application utilise le Gestionnaire de graphe de filtres pour générer un graphique de filtre. L’ensemble exact des filtres dans le graphique dépend de l’application.
  3. L’application utilise le Gestionnaire de graphe de filtre pour contrôler le graphe de filtre et diffuser les données via les filtres. Tout au long de ce processus, l’application répond également aux événements du Gestionnaire de graphes de filtres.

Une fois le traitement terminé, l’application libère le Gestionnaire de graphe de filtres et tous les filtres.

DirectShow est basé sur COM ; Le Gestionnaire de graphe de filtres et les filtres sont tous des objets COM. Vous devez avoir une compréhension générale de la programmation du client COM avant de commencer à programmer DirectShow. De nombreux livres sur la programmation COM sont disponibles.

Pour commencer à utiliser DirectShow, lisez l’article Comment lire un fichier, qui présente une application console simple permettant de lire un fichier vidéo. La section À propos de DirectShow explique plus en détail l’architecture de DirectShow, tandis que la section Utilisation de DirectShow examine les principaux scénarios pris en charge par DirectShow, tels que la capture, l’édition vidéo, la lecture de DVD et la télévision.