Passaggio 2. Dichiarare la classe Filter
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Questo è il passaggio 2 dell'esercitazione Scrittura di filtri di trasformazione.
Iniziare dichiarando una classe C++ che eredita la classe base:
class CRleFilter : public CTransformFilter
{
/* Declarations will go here. */
};
Ognuna delle classi di filtro ha associato classi di pin. A seconda delle esigenze specifiche del filtro, potrebbe essere necessario eseguire l'override delle classi di pin. Nel caso di CTransformFilter, i pin delegano la maggior parte del loro lavoro al filtro, quindi probabilmente non è necessario eseguire l'override dei pin.
È necessario generare un CLSID univoco per il filtro. È possibile usare l'utilità Guidgen o Uuidgen; non copiare mai un GUID esistente. Esistono diversi modi per dichiarare un CLSID. Nell'esempio seguente viene usata 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"
Scrivere quindi un metodo del costruttore per il filtro:
CRleFilter::CRleFilter()
: CTransformFilter(NAME("My RLE Encoder"), 0, CLSID_RLEFilter)
{
/* Initialize any private variables here. */
}
Si noti che uno dei parametri del costruttore CTransformFilter è il CLSID definito in precedenza.
Avanti: Passaggio 3. Supportare la negoziazione dei tipi di supporto.
Argomenti correlati