Bagikan melalui


Langkah 2. Mendeklarasikan Kelas Filter

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Perekaman Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Pengambilan Audio/Video di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Ini adalah langkah 2 dari tutorial Menulis Filter Transformasi.

Mulailah dengan mendeklarasikan kelas C++ yang mewarisi kelas dasar:

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

Masing-masing kelas filter memiliki kelas pin terkait. Bergantung pada kebutuhan spesifik filter Anda, Anda mungkin perlu mengambil alih kelas pin. Dalam kasus CTransformFilter, pin mendelegasikan sebagian besar pekerjaan mereka ke filter, jadi Anda mungkin tidak perlu mengambil alih pin.

Anda harus membuat CLSID unik untuk filter. Anda dapat menggunakan utilitas Guidgen atau Uuidgen; tidak pernah menyalin GUID yang ada. Ada beberapa cara untuk mendeklarasikan CLSID. Contoh berikut menggunakan makro 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"

Selanjutnya, tulis metode konstruktor untuk filter:

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

Perhatikan bahwa salah satu parameter untuk konstruktorCTransformFilter adalah CLSID yang ditentukan sebelumnya.

Berikutnya: Langkah 3. Mendukung Negosiasi Jenis Media.

Penulisan Filter DirectShow