Présentation des classes de base de filtre
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 créateurs d’applications peuvent trouver des classes d’assistance et des utilitaires de débogage utiles. toutefois, la bibliothèque de classes de base n’est pas requise pour la programmation de 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 | Description |
|---|---|
| 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 décompte de tous les objets actifs dans la DLL au moment de l’exécution. Dans les versions Debug, la DLL déclare si elle est déchargée alors que le nombre d’objets est supérieur à zéro. Cela facilite le suivi des fuites provoquées par des problèmes de comptage des références.
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 décompte de références, QueryInterface et agrégation. Pour plus d’informations, consultez comment implémenter IUnknown.
Filtrer et épingler des classes
les classes suivantes prennent en charge la création de DirectShow filtrer et épingler des objets :
| Classe | Description |
|---|---|
| CBaseFilter | Classe de base pour les filtres. Implémente l’interface IBaseFilter . |
| CBasePin | Classe de base pour les codes confidentiels. 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 qui utilisent des 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 | Description |
|---|---|
| CSource | Classe de base pour les filtres sources. Cette classe est conçue pour la création de sources push. Elle n’est pas adaptée 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 sur les données. Les codes confidentiels pour 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 la passer en aval. Les codes confidentiels pour 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 convertisseur. La broche d’entrée pour 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 vous aurez besoin d’écrire du code dans votre classe dérivée.
Objets d’assistance
Les classes suivantes implémentent des objets d’assistance utilisés par les filtres et les codes confidentiels. La plupart de ces classes peuvent être utilisées sans dériver de nouvelles classes à partir de celles-ci :
| Classe | Description |
|---|---|
| CPullPin | Objet d’assistance pour les broches d’entrée sur les filtres de l’analyseur. Prend en charge les connexions IAsyncReader avec des sources d’extraction. |
| COutputQueue | Objet d’assistance pour les codes confidentiels de sortie qui met en file d’attente des exemples à remettre sur un thread 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 codes confidentiels, tels que les analyseurs.) |
| CEnumPins | Objet énumérateur pour l’énumération des broches sur un filtre. Implémente l’interface IEnumPins . |
| CEnumMediaTypes | Objet énumérateur pour l’énumération des types de média préférés sur un code confidentiel. Implémente l’interface IEnumMediaTypes . |
| CMemAllocator | Objet allocateur de mémoire. Implémente l’interface IMemAllocator . |
| CMediaSample | Exemple d’objet de mé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 la manipulation des structures de _ _ type de média am . |