Perender Video yang Ditingkatkan

[Komponen yang dijelaskan di halaman ini, Enhanced Video Renderer, adalah fitur warisan. Ini telah digantikan oleh Simple Video Renderer (SVR) yang diekspos melalui komponen MediaPlayer dan IMFMediaEngine . Untuk memutar konten video, Anda harus mengirim data ke salah satu komponen ini dan memungkinkan mereka membuat instans perender video baru. Komponen-komponen ini telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer atau API IMFMediaEngine tingkat bawah untuk memutar media video di Windows alih-alih EVR, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Perender video yang ditingkatkan (EVR) adalah komponen yang menampilkan video di monitor pengguna. Ada dua versi EVR:

  • Sink media EVR, untuk aplikasi Media Foundation.
  • Filter EVR, untuk aplikasi DirectShow.

Kedua versi menggunakan objek internal yang sama untuk merender video, dan mereka berbagi banyak antarmuka yang sama.

EVR dapat mencampur hingga 16 aliran video. Aliran input pertama disebut aliran referensi. Aliran referensi selalu muncul terlebih dahulu dalam urutan z. Aliran tambahan apa pun disebut sub-aliran, dan dicampur di atas aliran referensi. Aplikasi dapat mengubah urutan z substream, tetapi tidak ada sub-aliran yang dapat terlebih dahulu dalam urutan z.

Driver grafis menentukan format video mana yang didukung, tetapi biasanya terbatas pada yang berikut ini:

  • Aliran referensi: YUV progresif atau terjalin tanpa alfa per piksel (seperti NV12 atau YUY2); atau RGB progresif.
  • Substream: YUV progresif dengan per-pixel-alpha, seperti AYUV atau AI44.

Format sub-aliran yang tersedia mungkin bergantung pada format aliran referensi. Untuk informasi selengkapnya, lihat Negosiasi Jenis Media EVR.

Secara internal, EVR menggunakan objek yang disebut mixer untuk menyusun bingkai dari aliran input ke satu permukaan untuk penyajian. Mixer juga melakukan deinterlacing dan koreksi warna. Output dari mixer adalah bingkai video yang dikomposisikan akhir. Objek kedua yang disebut penyaji merender bingkai video ke tampilan. Penyaji menjadwalkan kapan bingkai dirender dan mengelola perangkat Direct3D. Aplikasi dapat menyediakan implementasi kustom dari mixer atau penyaji.

Kecepatan bingkai output dikunci ke aliran referensi. Setiap kali substream menerima bingkai baru, mixer memegangnya. Ketika aliran referensi menerima bingkai baru, mixer menyusun bingkai tersebut dengan bingkai sub-aliran. (Jika aliran referensi terjalin, bingkai referensi lengkap mungkin memerlukan lebih dari satu sampel media.) Dimungkinkan bagi substream untuk menerima lebih dari satu bingkai saat mixer sedang menunggu bingkai referensi. Dalam hal ini, mixer hanya membuang bingkai sub-aliran sebelumnya.

Karena penyaji membuat perangkat Direct3D, penyaji juga bertanggung jawab untuk berbagi perangkat dengan objek alur lain yang perlu mengakses layanan DirectX Video Acceleration (DXVA). Secara khusus, mixer EVR menggunakan layanan pemrosesan video DXVA untuk mendeinterlace dan mencampur video. Di luar EVR, dekode perangkat lunak dapat menggunakan DXVA untuk dekode video yang dipercepat. Penyaji berbagi perangkat Direct3D melalui Direct3D Device Manager. Diagram berikut menunjukkan arsitektur internal EVR. (Dekoder perangkat lunak, bernaung abu-abu, bukan bagian dari EVR.)

architectural diagram showing the evr.

Antarmuka EVR

EVR mendukung antarmuka berikut. Beberapa antarmuka ini diimplementasikan oleh mixer atau penyaji. Untuk setiap antarmuka, topik referensi menjelaskan cara mendapatkan penunjuk ke antarmuka.

Antarmuka Deskripsi
IEVRFilterConfig Mengatur jumlah pin input pada filter EVR (hanya DirectShow).
IEVRFilterConfigEx Mengonfigurasi filter EVR (hanya DirectShow).
IEVRTrustedVideoPlugin Mengaktifkan plug-in EVR untuk merender video yang dilindungi.
IMFDesiredSample Memungkinkan penyaji EVR untuk meminta bingkai tertentu dari mixer.
IMFQualityAdvise Memungkinkan manajer kualitas untuk menyesuaikan kualitas video EVR.
IMFTopologyServiceLookup Memungkinkan mixer atau penyaji kustom untuk mendapatkan penunjuk antarmuka dari EVR.
IMFVideoDeviceID Mengembalikan pengidentifikasi perangkat dari mixer atau penyaji EVR.
IMFVideoDisplayControl Mengontrol bagaimana EVR menampilkan video.
IMFVideoMixerBitmap Alpha-memadukan gambar bitmap statis dengan video.
IMFVideoMixerControl Mengontrol bagaimana Enhanced Video Renderer (EVR) mencampur sub-aliran video.
IMFVideoMixerControl2 Mengontrol preferensi untuk deinterlacing video.
IMFVideoPositionMapper Peta posisi pada aliran video input ke posisi yang sesuai pada aliran video output.
IMFVideoPresenter Diekspos oleh penyaji EVR.
IMFVideoProcessor Mengontrol pemrosesan video, termasuk penyesuaian, filter kebisingan, dan filter detail.
IMFVideoRenderer Mengatur mixer atau penyaji pada EVR.
IMFVideoSampleAllocator Mengalokasikan sampel video.

 

Di Bagian Ini

Topik Deskripsi
Menggunakan Filter DirectShow EVR Cara menggunakan EVR dalam aplikasi DirectShow.
Menggunakan EVR Media Sink Cara menggunakan EVR dalam aplikasi Media Foundation.
Menggunakan Kontrol Tampilan Video Cara mengontrol cara EVR menampilkan video di dalam jendela aplikasi.
Menggunakan Kontrol Video Mixer Cara mengontrol cara mixer EVR beroperasi.
Negosiasi Jenis Media EVR Menjelaskan bagaimana EVR menentukan format video mana yang dapat diterimanya sebagai input.
Mixer Kustom Cara menulis mixer kustom untuk EVR.
Cara Menulis Penyaji EVR Cara menulis penyaji kustom untuk EVR.

 

Pemutaran Audio/Video