Gambaran Umum Graph Building
[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.]
Untuk membuat grafik filter, mulailah dengan membuat instans Filter Graph Manager:
IGraphBuilder* pIGB;
HRESULT hr = CoCreateInstance(CLSID_FilterGraph,
NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder,
(void **)&pIGB);
Filter Graph Manager mendukung metode pembuatan grafik berikut:
- IFilterGraph::ConnectDirect mencoba membuat koneksi langsung di antara dua pin. Jika pin tidak dapat tersambung, metode gagal.
- IGraphBuilder::Connect menyambungkan dua pin. Jika memungkinkan, itu membuat koneksi langsung. Jika tidak, ia menggunakan filter perantara untuk menyelesaikan koneksi.
- IGraphBuilder::Render dimulai dari pin output dan membangun grafik lainnya. Metode ini menambahkan filter sesuai kebutuhan, bekerja di hilir, hingga mencapai filter perender.
- IGraphBuilder::RenderFile membangun grafik pemutaran file lengkap.
- IFilterGraph::AddFilter menambahkan filter ke grafik. Ini tidak menyambungkan filter. Anda harus membuat filter sebelum memanggil metode ini, baik dengan memanggil CoCreateInstance atau dengan menggunakan Filter Mapper atau System Device Enumerator.
Metode ini menyediakan tiga pendekatan dasar untuk membangun grafik:
- Filter Graph Manager membangun seluruh grafik.
- Filter Graph Manager membangun bagian dari grafik.
- Aplikasi ini membangun seluruh grafik.
Manajer Grafik Filter Membangun Seluruh Grafik
Jika Anda hanya ingin memutar file yang ditulis dalam format yang dikenali, seperti AVI, MPEG, WAV, atau MP3, gunakan metode RenderFile . Artikel Cara Memutar File memperlihatkan cara melakukan ini.
Metode RenderFile dimulai dengan melihat registri untuk filter sumber yang dapat mengurai file. Ini menggunakan protokol (seperti " https://
" di URL), ekstensi file, atau pola byte yang telah ditentukan sebelumnya dalam file untuk menentukan filter sumber. Untuk detailnya, lihat Mendaftarkan Jenis File Kustom.
Untuk membangun grafik lainnya, Filter Graph Manager menggunakan proses berulang di mana dibutuhkan jenis media yang didukung filter pada pin outputnya, dan mencari registri untuk filter yang akan menerima jenis media tersebut sebagai input. Ini menggunakan beberapa kriteria untuk mempersempit pencarian dan memprioritaskan filter:
- Kategori filter mengidentifikasi fungsionalitas umum filter.
- Jenis media menjelaskan jenis data apa yang dapat diterima filter sebagai input atau pengiriman sebagai output.
- Manfaat menentukan urutan di mana filter dicoba. Jika dua filter dalam kategori filter yang sama mendukung jenis input yang sama, Filter Graph Manager memilih filter dengan nilai merit tertinggi. Beberapa filter sengaja diberi nilai berjasa rendah karena dirancang untuk tujuan khusus dan hanya boleh ditambahkan ke grafik oleh aplikasi.
Filter Graph Manager menggunakan objek Filter Mapper untuk mencari registri.
Saat setiap filter ditambahkan, Filter Graph Manager mencoba menyambungkannya ke pin output filter sebelumnya. Filter bernegosiasi untuk menentukan apakah filter dapat terhubung, dan jika demikian, jenis media apa yang akan digunakan untuk koneksi. Jika filter baru tidak dapat tersambung, Filter Graph Manager akan membuangnya dan mencoba filter lain. Proses ini berlanjut hingga setiap aliran dirender.
Filter Graph Manager Membangun Bagian dari Grafik
Untuk melakukan sesuatu selain hanya memutar file, aplikasi Anda harus melakukan setidaknya beberapa pekerjaan pembuatan grafik. Misalnya, aplikasi pengambilan video harus memilih filter sumber pengambilan dan menambahkannya ke grafik. Jika Anda menulis data ke file AVI, Anda harus menambahkan filter AVI Mux dan File Writer ke grafik. Namun, sering dimungkinkan untuk membiarkan Filter Graph Manager menyelesaikan grafik. Misalnya, Anda dapat merender pin untuk pratinjau dengan memanggil metode Render .
Aplikasi Membangun Seluruh Grafik
Dalam beberapa skenario, aplikasi Anda mungkin perlu membangun grafik dengan menambahkan dan menghubungkan setiap filter. Dalam hal ini, Anda mungkin tahu secara khusus filter mana yang harus ditambahkan ke grafik. Dengan pendekatan ini, aplikasi menambahkan setiap filter dengan memanggil AddFilter, menghitung pin pada filter, dan menghubungkannya dengan memanggil Connect atau ConnectDirect.
Topik terkait