Étape 2. Déclarer la classe filter

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 d’épingle associées. Selon les besoins spécifiques de votre filtre, vous devrez peut-être remplacer les classes d’épingle. Dans le cas de CTransformFilter, les broches délèguent la plupart 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 qu’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 de type de média.

Écriture de filtres de DirectShow