Bagikan melalui


VMR dengan Beberapa Aliran (Mode Pencampuran)

[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.]

VMR dapat merender beberapa aliran input. Dalam konfigurasi ini, yang disebut mode pencampuran, VMR memuat mixer dan kompositnya untuk melakukan pencampuran dan pencampuran sebelum penyajian. Mode pencampuran dapat digunakan baik saat VMR dalam mode berjendela atau mode tanpa jendela.

Mode pencampuran mengharuskan driver grafis mendukung bendera kemampuan DDCAPS_BLTFOURCC dan DDCAPS_BLTSTRETCH (konversi ruang warna dan peregangan blitting). Hampir semua driver grafis baru memiliki kemampuan tersebut. Selain itu, driver harus mendukung pembuatan target render Direct3D untuk kedalaman piksel tampilan saat ini. Beberapa perangkat tidak mendukung operasi Direct3D saat tampilan diatur ke 24 bit per piksel. Untuk informasi selengkapnya, lihat dokumentasi DirectX Graphics SDK.

Catatan

Saat VMR mencampur beberapa aliran video, grafik filter tidak mencari dengan benar. Jika Anda perlu mencari beberapa aliran video, Anda harus membuat grafik filter terpisah yang berbagi objek alokator-penyaji kustom yang sama.

 

Mengonfigurasi VMR-7 untuk Beberapa Aliran

Untuk merender beberapa aliran input dengan VMR-7, lakukan hal berikut:

  1. Sebelum menyambungkan salah satu pin input VMR, panggil metode IVMRFilterConfig::SetNumberOfStreams dengan jumlah aliran. Ini menyebabkan VMR memuat mixer dan compositor dan membuat jumlah pin input yang ditentukan.
  2. Panggil IVMRFilterConfig::SetRenderingPrefs untuk menentukan berbagai preferensi penyajian.
  3. Sambungkan pin ke filter upstram. Cara termampu untuk melakukan ini adalah dengan memanggil IGraphBuilder::RenderFile untuk setiap aliran input. Jika pin output pada filter upstream (biasanya dekoder) dan pin input pada VMR tidak dapat menyetujui koneksi, maka instans baru VMR dengan pengaturan default akan dibuat. Ini akan menghasilkan jendela baru dengan "ActiveMovie" di bilah judul. Untuk mencegah hal ini terjadi, aplikasi harus selalu memverifikasi bahwa instans VMR yang benar sedang digunakan dengan memanggil metode seperti IPin::ConnectedTo. Opsi lain adalah menambahkan filter sumber lalu menyambungkan pin menggunakan IGraphBuilder::Connect.
  4. Gunakan antarmuka IVMRMixerControl pada VMR untuk mengontrol parameter untuk setiap aliran, seperti nilai alfa, pengurutan Z, dan persegi output.
  5. Jalankan grafik filter.

Mengonfigurasi VMR-9 untuk Beberapa Aliran

Secara default, VMR-9 membuat empat pin input. Jika Anda ingin mencampur lebih dari empat aliran video, panggil IVMRFilterConfig9::SetNumberOfStreams sebelum menyambungkan pin input apa pun. Gunakan antarmuka IVMRMixerControl9 untuk mengatur parameter stream, seperti alfa, urutan Z, dan posisi.

Menggunakan Mode Pencampuran VMR