Remarque
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. Elle a été remplacée par MediaPlayer, IMFMediaEngine et Capture audio/vidéo dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Si possible, Microsoft recommande vivement d’utiliser MediaPlayer, IMFMediaEngine et Capture audio/vidéo dans Media Foundation pour le nouveau code, plutôt que DirectShow. 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 la bibliothèque de classes de base Microsoft DirectShow. Cette bibliothèque est destinée aux développeurs de filtres, mais les auteurs d'applications pourraient trouver certaines des classes utilitaires et des utilitaires de débogage utiles. Toutefois, la bibliothèque de classes de base n’est pas requise pour la programmation DirectShow.
Les sections suivantes résument les classes de base les plus importantes dans la bibliothèque.
Classes d’objets COM
Les classes suivantes prennent en charge la création d’objets COM :
| classe | Descriptif |
|---|---|
| CBaseObject | Classe d’objet de base. |
| CUnknown | Implémente l’interface IUnknown . |
La plupart des classes DirectShow dérivent de CBaseObject. Cette classe fournit une assistance de débogage en conservant le nombre d’objets actifs dans la DLL au moment de l’exécution. Dans les versions de débogage, la DLL génère une assertion si elle est déchargée alors que le nombre d’objets est supérieur à zéro. Cela facilite le suivi des fuites causées par des problèmes de comptage de référence.
Toutes les classes de base qui prennent en charge les interfaces COM dérivent de CUnknown, qui hérite de CBaseObject. La classe CUnknown prend en charge le comptage de références, QueryInterface et l’agrégation. Pour plus d’informations, consultez Comment implémenter IUnknown.
Filtrer et épingler les classes
Les classes suivantes prennent en charge la création d’objets de filtre et de broches DirectShow :
| classe | Descriptif |
|---|---|
| CBaseFilter | Classe de base pour les filtres. Implémente l’interface IBaseFilter . |
| CBasePin | Classe de base pour les broches. Implémente les interfaces IPin et IQualityControl . |
| CBaseInputPin | Classe de base pour les broches d’entrée qui utilisent le transport de mémoire locale. Implémente l’interface IMemInputPin . Cette classe dérive de CBasePin. |
| CBaseOutputPin | Classe de base pour les broches de sortie utilisant les connexions IMemInputPin. Cette classe dérive de CBasePin. |
Les classes suivantes sont utiles pour créer des types de filtres plus spécialisés :
| classe | Descriptif |
|---|---|
| CSource | Classe de base pour les filtres sources. Cette classe est conçue pour créer des sources Push. Il n’est pas adapté aux sources d’extraction, telles que les lecteurs de fichiers. Pour créer des broches de sortie pour cette classe, utilisez la classe CSourceStream . |
| CTransformFilter | Classe de base pour les filtres de transformation. Cette classe effectue une copie des données. Les broches de cette classe sont CTransformInputPin et CTransformOutputPin. |
| CTransInPlaceFilter | Classe de base pour les filtres de transformation qui ne copient pas de données. Cette classe effectue le traitement des données directement sur les données d’entrée avant de les transmettre en aval. Les broches de cette classe sont CTransInPlaceInputPin et CTransInPlaceOutputPin. |
| CVideoTransformFilter | Classe de base pour les filtres de transformation vidéo. Cette classe dérive de CTransformFilter et ajoute la prise en charge du contrôle de qualité. |
| CBaseRenderer | Classe de base pour les filtres de renderer. La broche d’entrée de cette classe est CRendererInputPin. |
| CBaseVideoRenderer | Classe de base pour les convertisseurs vidéo. Cette classe dérive de CBaseRenderer. |
Pour utiliser ces classes, vous devez dériver votre propre classe et écrire du code pour prendre en charge les fonctionnalités spécifiques à votre filtre. Plus la classe de base est spécialisée, moins de code vous devrez écrire dans votre classe dérivée.
Objets d’assistance
Les classes suivantes implémentent des objets d’assistance utilisés par des filtres et des broches. La plupart de ces classes peuvent être utilisées sans dériver de nouvelles classes :
| classe | Descriptif |
|---|---|
| CPullPin | Objet d'assistance pour les ports d'entrée des filtres de parseur. Prend en charge les connexions IAsyncReader avec des sources de collecte. |
| COutputQueue | Objet auxiliaire pour les broches de sortie qui met en file d'attente des échantillons à livrer dans un fil de travail. |
| CSourceSeeking | Objet d’aide pour l’implémentation de la recherche sur un filtre source avec exactement une broche de sortie. (Cette classe n’est pas conçue pour les filtres avec plusieurs broches, telles que les analyseurs.) |
| CEnumPins | Objet Énumérateur destiné à l'énumération des broches sur un filtre. Implémente l’interface IEnumPins . |
| CEnumMediaTypes | Objet Énumérateur pour énumérer les types de supports préférés sur une broche. Implémente l’interface IEnumMediaTypes . |
| CMemAllocator | Objet gestionnaire de mémoire. Implémente l’interface IMemAllocator . |
| CMediaSample | Exemple d’objet multimédia. Implémente l’interface IMediaSample2 . |
| CBaseReferenceClock | Classe de base pour les horloges de référence. Implémente l’interface IReferenceClock . |
| CMediaType | Objet d’assistance pour manipuler des structures AM_MEDIA_TYPE . |