Étape 2. Déclarer la classe Filter

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La 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.]

Il s’agit de l’étape 2 du didacticiel Écriture de filtres de transformation.

Commencez par déclarer une classe C++ qui hérite de la classe de base :

class CRleFilter : public CTransformFilter
{
    /* Declarations will go here. */
};

Chacune des classes de filtre a des classes pin associées. En fonction des besoins spécifiques de votre filtre, vous devrez peut-être remplacer les classes de broches. Dans le cas de CTransformFilter, les broches délèguent la majeure partie de leur travail au filtre. Vous n’avez donc probablement pas besoin de remplacer les broches.

Vous devez générer un CLSID unique pour le filtre. Vous pouvez utiliser l’utilitaire Guidgen ou Uuidgen ; ne copiez jamais un GUID existant. Il existe plusieurs façons de déclarer un CLSID. L’exemple suivant utilise la macro DEFINE_GUID :

[RleFilt.h]
// {1915C5C7-02AA-415f-890F-76D94C85AAF1}
DEFINE_GUID(CLSID_RLEFilter, 
0x1915c5c7, 0x2aa, 0x415f, 0x89, 0xf, 0x76, 0xd9, 0x4c, 0x85, 0xaa, 0xf1);

[RleFilt.cpp]
#include <initguid.h>
#include "RleFilt.h"

Ensuite, écrivez une méthode de constructeur pour le filtre :

CRleFilter::CRleFilter()
  : CTransformFilter(NAME("My RLE Encoder"), 0, CLSID_RLEFilter)
{ 
   /* Initialize any private variables here. */
}

Notez que l’un des paramètres du constructeur CTransformFilter est le CLSID défini précédemment.

Suivant : Étape 3. Prise en charge de la négociation du type de média.

Écriture de filtres DirectShow