Bagikan melalui


Pengantar Kelas Dasar Filter

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan 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 Audio/Video Capture 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.]

Artikel ini menjelaskan pustaka kelas dasar Microsoft DirectShow. Pustaka ini ditujukan untuk pengembang filter, tetapi penulis aplikasi mungkin menemukan beberapa kelas pembantu dan utilitas debugging berguna. Namun, pustaka kelas dasar tidak diperlukan untuk pemrograman DirectShow.

Bagian berikut ini meringkas kelas dasar paling penting di pustaka.

Kelas Objek COM

Kelas berikut mendukung pembuatan objek COM:

Kelas Deskripsi
CBaseObject Kelas objek dasar.
CUnknown Mengimplementasikan antarmuka IUnknown .

 

Sebagian besar kelas DirectShow berasal dari CBaseObject. Kelas ini menyediakan bantuan penelusuran kesalahan dengan menyimpan hitungan semua objek aktif di DLL pada durasi. Dalam build debug, DLL menegaskan jika dibongkar sementara jumlah objek lebih besar dari nol. Ini memudahkan untuk melacak kebocoran yang disebabkan oleh masalah penghitungan referensi.

Semua kelas dasar yang mendukung antarmuka COM berasal dari CUnknown, yang mewarisi CBaseObject. Kelas CUnknown mendukung penghitungan referensi, QueryInterface, dan agregrasi. Untuk informasi selengkapnya, lihat Cara Mengimplementasikan IUnknown.

Filter dan Sematkan Kelas

Kelas berikut mendukung pembuatan filter DirectShow dan menyematkan objek:

Kelas Deskripsi
CBaseFilter Kelas dasar untuk filter. Mengimplementasikan antarmuka IBaseFilter .
CBasePin Kelas dasar untuk pin. Mengimplementasikan antarmuka IPin dan IQualityControl .
CBaseInputPin Kelas dasar untuk pin input yang menggunakan transportasi memori lokal. Mengimplementasikan antarmuka IMemInputPin . Kelas ini berasal dari CBasePin.
CBaseOutputPin Kelas dasar untuk pin output yang menggunakan koneksi IMemInputPin . Kelas ini berasal dari CBasePin.

 

Kelas berikut berguna untuk membuat jenis filter yang lebih khusus:

Kelas Deskripsi
CSource Kelas dasar untuk filter sumber. Kelas ini dirancang untuk membuat sumber pendorongan. Ini tidak cocok untuk sumber penarikan, seperti pembaca file. Untuk membuat pin output untuk kelas ini, gunakan kelas CSourceStream .
CTransformFilter Kelas dasar untuk filter transformasi. Kelas ini melakukan salinan pada data. Pin untuk kelas ini adalah CTransformInputPin dan CTransformOutputPin.
CTransInPlaceFilter Kelas dasar untuk filter transformasi yang tidak menyalin data. Kelas ini melakukan pemrosesan data langsung pada data input sebelum melewatinya di hilir. Pin untuk kelas ini adalah CTransInPlaceInputPin dan CTransInPlaceOutputPin.
CVideoTransformFilter Kelas dasar untuk filter transformasi video. Kelas ini berasal dari CTransformFilter dan menambahkan dukungan untuk kontrol kualitas.
CBaseRenderer Kelas dasar untuk filter perender. Pin input untuk kelas ini adalah CRendererInputPin.
CBaseVideoRenderer Kelas dasar untuk perender video. Kelas ini berasal dari CBaseRenderer.

 

Untuk menggunakan kelas ini, Anda harus memperoleh kelas Anda sendiri dan menulis kode untuk mendukung fungsionalitas yang khusus untuk filter Anda. Semakin khusus kelas dasar, semakin sedikit kode yang perlu Anda tulis di kelas turunan Anda.

Objek Pembantu

Kelas berikut mengimplementasikan objek pembantu yang digunakan oleh filter dan pin. Sebagian besar kelas ini dapat digunakan tanpa mengambil kelas baru dari kelas tersebut:

Kelas Deskripsi
CPullPin Objek pembantu untuk pin input pada filter pengurai. Mendukung koneksi IAsyncReader dengan sumber penarikan.
COutputQueue Objek pembantu untuk pin output yang mengantrekan sampel untuk pengiriman pada utas pekerja.
CSourceSeeking Objek bantuan untuk menerapkan pencarian pada filter sumber dengan tepat satu pin output. (Kelas ini tidak dirancang untuk filter dengan beberapa pin, seperti pengurai.)
CEnumPins Objek enumerator untuk menghitung pin pada filter. Mengimplementasikan antarmuka IEnumPins .
CEnumMediaTypes Objek enumerator untuk menghitung jenis media pilihan pada pin. Mengimplementasikan antarmuka IEnumMediaTypes .
CMemAllocator Objek alokator memori. Mengimplementasikan antarmuka IMemAllocator .
CMediaSample Objek sampel media. Mengimplementasikan antarmuka IMediaSample2 .
CBaseReferenceClock Kelas dasar untuk jam referensi. Mengimplementasikan antarmuka IReferenceClock .
CMediaType Objek pembantu untuk memanipulasi struktur AM_MEDIA_TYPE .