Schritt 2: Deklarieren der Filterklasse

Dies ist Schritt 2 des Lernprogramms zum Schreiben von Transformationsfiltern.

Beginnen Sie mit dem Deklarieren einer C++-Klasse, die die Basisklasse erbt:

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

Jede der Filterklassen verfügt über zugeordnete Pinklassen. Je nach den spezifischen Anforderungen Ihres Filters müssen Sie die Pinklassen möglicherweise außer Kraft setzen. Im Fall von CTransformFilter delegieren die Pins die meisten ihrer Arbeit an den Filter, sodass Sie die Pins wahrscheinlich nicht außer Kraft setzen müssen.

Sie müssen eine eindeutige CLSID für den Filter generieren. Sie können das Guidgen- oder Uuidgen-Dienstprogramm verwenden; Kopieren Sie niemals eine vorhandene GUID. Es gibt mehrere Möglichkeiten, eine CLSID zu deklarieren. Im folgenden Beispiel wird das DEFINE_GUID-Makro verwendet:

[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"

Schreiben Sie als Nächstes eine Konstruktormethode für den Filter:

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

Beachten Sie, dass eine der Parameter für den CTransformFilter-Konstruktor die zuvor definierte CLSID ist.

Weiter: Schritt 3. Unterstützen Sie die Medientypverhandlung.

Schreiben von DirectShow-Filtern