Cara Perangkat Keras Berpartisipasi dalam Grafik 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 bagaimana DirectShow berinteraksi dengan perangkat keras audio dan video.
Filter Pembungkus
Semua filter DirectShow adalah komponen perangkat lunak mode pengguna. Agar perangkat keras mode kernel, seperti kartu pengambilan video, untuk bergabung dengan grafik filter DirectShow, perangkat harus direpresentasikan sebagai filter mode pengguna. Fungsi ini dilakukan oleh filter "wrapper" khusus yang disediakan dengan DirectShow. Filter ini mencakup filter Audio Capture , filter VFW Capture , filter Tuner TV , filter Audio TV , dan filter Crossbar Video Analog . DirectShow juga menyediakan filter yang disebut KsProxy, yang dapat mewakili semua jenis perangkat streaming Windows Driver Model (WDM). Vendor perangkat keras dapat memperluas KsProxy untuk mendukung fungsionalitas kustom, dengan menyediakan plug-in Ksproxy, yang merupakan objek COM yang dikumpulkan oleh KsProxy.
Filter pembungkus mengekspos antarmuka COM yang mewakili kemampuan perangkat. Aplikasi ini menggunakan antarmuka ini untuk meneruskan informasi ke dan dari filter. Filter menerjemahkan panggilan metode COM ke dalam panggilan driver perangkat, meneruskan informasi tersebut ke driver dalam mode kernel, lalu menerjemahkan hasilnya kembali ke aplikasi. Tuner TV, Audio TV, Crossbar Video Analog, dan filter KsProxy mendukung properti driver kustom melalui antarmuka IKsPropertySet . Filter VFW Capture dan filter Audio Capture tidak dapat diperluas dengan cara ini.
Untuk pengembang aplikasi, filter pembungkus memungkinkan aplikasi untuk mengontrol perangkat sama seperti mereka mengontrol filter DirectShow lainnya. Tidak diperlukan pemrograman khusus; detail berkomunikasi dengan perangkat mode kernel dienkapsulasi dalam filter.
Video untuk Perangkat Windows
Filter VFW Capture mendukung kartu pengambilan Video for Windows (VfW) sebelumnya. Ketika kartu VfW ada pada sistem target, kartu tersebut dapat ditemukan dan ditambahkan ke grafik filter menggunakan DirectShow System Device Enumerator. Untuk detailnya, lihat Menghitung Perangkat dan Filter.
Tangkapan Audio dan Perangkat Pencampuran (Kartu Suara)
Kartu suara yang lebih baru memiliki jack input untuk mikrofon dan jenis perangkat lainnya. Biasanya kartu-kartu ini juga memiliki kemampuan pencampuran on-board untuk mengontrol volume, treble, dan bas dari setiap input individu. Di DirectShow, input dan mixer kartu suara dibungkus oleh filter Audio Capture. Setiap kartu suara dapat ditemukan dengan Enumerator Perangkat Sistem. Untuk melihat kartu suara di sistem Anda, jalankan GraphEdit dan pilih dari kategori Sumber Pengambilan Audio. Setiap filter dalam kategori tersebut adalah instans terpisah dari filter Tangkapan Audio. (Lihat Menggunakan GraphEdit.)
Perangkat Streaming WDM
Dekode perangkat keras dan kartu tangkapan yang lebih baru sesuai dengan spesifikasi Windows Driver Model (WDM). Perangkat ini memiliki fungsionalitas yang lebih besar daripada perangkat VfW. Kartu pengambilan video WDM dapat mendukung fitur yang tidak tersedia di bawah VfW, termasuk enumerasi format pengambilan, kontrol terprogram parameter video seperti rona dan kecerahan, pemilihan input terprogram, dan dukungan TUner TV.
Untuk mendukung perangkat streaming WDM, DirectShow menyediakan filter KsProxy (ksproxy.ax). KsProxy telah disebut "filter Pisau Tentara Swiss" karena melakukan begitu banyak hal yang berbeda. Jumlah pin pada filter, dan jumlah antarmuka COM yang diekspos oleh filter, bergantung pada kemampuan driver yang mendasar. KsProxy tidak muncul di grafik filter dengan nama "KsProxy." Selalu mengambil nama perangkat yang ramah, yang ditemukan di registri. Untuk melihat perangkat WDM di sistem Anda, jalankan GraphEdit dan pilih dari kategori Streaming WDM. Bahkan jika Anda hanya memiliki satu kartu WDM pada sistem Anda, kartu itu mungkin berisi lebih dari satu perangkat. Setiap perangkat direpresentasikan sebagai filter terpisah, dan masing-masing filter ini sebenarnya adalah KsProxy.
Aplikasi menggunakan System Device Enumerator untuk menemukan moniker perangkat WDM pada sistem. KsProxy dibuat dengan memanggil BindToObject pada moniker. Karena KsProxy dapat mewakili semua jenis perangkat WDM, KsProxy harus meminta driver untuk menentukan properti mana yang didukung driver. Kumpulan properti adalah kumpulan struktur data yang digunakan oleh driver WDM, dan juga oleh beberapa filter mode pengguna, seperti dekoder perangkat lunak MPEG-2. KsProxy mengonfigurasi dirinya sendiri untuk mengekspos antarmuka COM yang sesuai dengan set properti tersebut. KsProxy menerjemahkan panggilan metode COM ke dalam set properti dan mengirimkannya ke driver. Vendor perangkat keras dapat memperluas KsProxy dengan menyediakan plug-in, yang merupakan antarmuka khusus vendor yang mengekspos kemampuan khusus perangkat. Semua detail ini disembunyikan dari aplikasi. Aplikasi mengontrol perangkat dengan cara KsProxy, dengan cara yang sama seperti filter DirectShow lainnya.
Kernel Streaming
Perangkat WDM mendukung streaming kernel, di mana data dialirkan sepenuhnya dalam mode kernel tanpa pernah beralih ke mode pengguna. Beralih antara mode kernel dan mode pengguna secara komputasi mahal; streaming kernel memungkinkan laju bit tinggi tanpa membebani CPU host. Filter berbasis WDM dapat menggunakan streaming kernel untuk meneruskan data multimedia langsung dari satu perangkat keras ke perangkat keras lainnya, baik pada kartu yang sama atau pada kartu yang berbeda, tanpa menyalin data ke dalam memori utama sistem.
Dari sudut pandang aplikasi, data akan muncul seolah-olah data berpindah dari satu filter mode pengguna ke filter berikutnya. Pada kenyataannya, data mungkin tidak pernah diteruskan ke mode pengguna sama sekali, tetapi sebaliknya mungkin dialirkan langsung dari satu perangkat mode kernel ke perangkat lain sampai dirender pada kartu grafis video. Beberapa skenario, seperti pengambilan ke file, mengharuskan data melewati dari mode kernel ke mode pengguna di beberapa titik. Namun, sakelar ini tidak selalu mengharuskan data disalin ke lokasi baru dalam memori.
Pengembang aplikasi umumnya tidak perlu khawatir dengan detail streaming kernel, kecuali sebagai informasi latar belakang. Lihat Microsoft DDK untuk informasi lebih rinci tentang WDM, streaming kernel, KsProxy, dan topik terkait.
Topik terkait