Kelas CTransformFilter

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

Hierarki kelas ctransformfilter

Kelas CTransformFilter adalah kelas dasar untuk menerapkan filter transformasi. Kelas ini dirancang untuk menerapkan filter transformasi dengan satu pin input dan satu pin output. Ini menggunakan alokator terpisah untuk pin input dan pin output. Untuk membuat filter yang memproses data di tempat, gunakan kelas CTransInPlaceFilter .

Filter ini menggunakan kelas CTransformInputPin untuk pin inputnya, dan kelas CTransformOutputPin untuk pin outputnya. Biasanya, Anda tidak perlu mengambil alih kelas pin ini. Sebagian besar metode pin memanggil metode yang sesuai pada CTransformFilter kelas , sehingga Anda dapat mengambil alih metode filter jika perlu. Filter membuat kedua pin dalam metode CTransformFilter::GetPin . Jika Anda mengambil alih kelas pin, Anda harus mengambil alih GetPin untuk membuat pin kustom Anda.

Untuk menggunakan kelas ini, dapatkan kelas baru dari CTransformFilter dan terapkan metode berikut:

Anda mungkin perlu mengambil alih metode lain juga, tergantung pada persyaratan filter Anda.

Jenis Media

Pin input filter ini tidak mengusulkan jenis media apa pun; ini bergantung pada filter upstream untuk mengusulkan jenis media untuk koneksi. Alasan untuk desain ini adalah bahwa dalam banyak kasus, filter upstram dapat memberikan informasi lebih lanjut tentang format. Misalnya, dengan format video, filter upstream mengetahui dimensi video dan kecepatan bingkai, sedangkan filter transformasi tidak memiliki cara untuk menentukan informasi ini. Jika Anda ingin mengubah perilaku ini, ganti metode GetMediaType pin input. Ketika filter upstram mengusulkan jenis media, pin input memanggil metode CheckInputType filter (virtual murni).

Sampai pin input tersambung, pin output menolak semua koneksi, dan tidak mengembalikan jenis media pilihan. Setelah pin input tersambung, pin output mengembalikan daftar jenis pilihan dengan memanggil metode GetMediaType filter. Ini memeriksa jenis output untuk koneksi melalui metode CheckTransform filter. (Kedua metode adalah virtual murni.) Biasanya, jenis input sebagian akan menentukan jenis output yang dapat diterima.

Bergantung pada filter, Anda mungkin ingin mendaftarkan beberapa jenis media filter yang didukung, sehingga objek Filter Mapper dapat menemukan filter Anda. Untuk informasi selengkapnya, lihat Cara Mendaftarkan Filter DirectShow.

Streaming

Kelas ini tidak mengantrekan data output. Setiap sampel output dikirimkan di dalam metode IMemInputPin::Receive . Metode Terima memanggil metode Transformasi filter (juga virtual murni) untuk memproses data.

Untuk informasi selengkapnya tentang menggunakan kelas ini, lihat Menulis Filter Transformasi.

Variabel Anggota yang Dilindungi Deskripsi
m_bEOSDelivered Bendera yang menunjukkan apakah filter telah mengirim pemberitahuan end-of-stream.
m_bSampleSkipped Bendera yang menunjukkan apakah sampel terbaru dihilangkan.
m_bQualityChanged Bendera yang menunjukkan apakah kualitas telah berubah.
m_csFilter Bagian penting yang melindungi status filter.
m_csReceive Bagian penting yang melindungi status streaming.
m_pInput Arahkan ke pin input.
m_pOutput Arahkan ke pin output.
Metode Publik Deskripsi
CTransformFilter Metode konstruktor.
~ CTransformFilter Metode destruktor.
GetPinCount Mengambil jumlah pin pada filter. Virtual.
GetPin Mengambil pin. Virtual.
Transformasi Mengubah sampel input untuk menghasilkan sampel output. Virtual.
StartStreaming Dipanggil saat filter beralih ke status dijeda. Virtual.
StopStreaming Dipanggil saat filter beralih ke status berhenti. Virtual.
AlterQuality Memberi tahu filter bahwa perubahan kualitas diminta. Virtual.
SetMediaType Dipanggil ketika jenis media diatur pada salah satu pin filter. Virtual.
CheckConnect Menentukan apakah koneksi pin cocok. Virtual.
Putuskan Sambungan Melepaskan pin dari koneksi. Virtual.
CompleteConnect Menyelesaikan koneksi pin. Virtual.
Receive Menerima sampel media, memprosesnya, dan mengirimkan sampel output ke filter hilir. Virtual.
InisialisasiOutputSample Mengambil sampel output baru dan menginisialisasinya.
EndOfStream Memberi tahu filter bahwa tidak ada data tambahan yang diharapkan dari pin input. Virtual.
BeginFlush Memulai operasi flush. Virtual.
EndFlush Mengakhiri operasi flush. Virtual.
Penetapan Baru Memberi tahu filter bahwa sampel media yang diterima setelah panggilan ini dikelompokkan sebagai segmen. Virtual.
Metode Virtual Murni Deskripsi
CheckInputType Memeriksa apakah jenis media tertentu dapat diterima untuk input.
CheckTransform Memeriksa apakah jenis media input kompatibel dengan jenis media output.
DecideBufferSize Mengatur persyaratan buffer pin output.
GetMediaType Mengambil jenis media pilihan untuk pin output.
Metode IMediaFilter Deskripsi
Hentikan Menghentikan filter.
Pause Menjeda filter.
Metode IBaseFilter Deskripsi
FindPin Mengambil pin dengan pengidentifikasi yang ditentukan.

Persyaratan

Persyaratan Nilai
Header
Transfrm.h (termasuk Streams.h)
Pustaka
Strmbase.lib (build ritel);
Strmbasd.lib (build debug)