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.]
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:
- CTransformFilter::CheckInputType
- CTransformFilter::CheckTransform
- CTransformFilter::D ecideBufferSize
- CTransformFilter::GetMediaType
- CTransformFilter::Transform
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 |
|
Pustaka |
|