Menggunakan Filter DirectShow EVR

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

Untuk membuat filter perender video (EVR) yang ditingkatkan, panggil CoCreateInstance. CLSID CLSID_EnhancedVideoRenderer, didefinisikan dalam uuids.h. Anda tidak perlu memanggil MFStartup atau MFShutdown untuk menggunakan filter EVR.

Untuk informasi selengkapnya tentang menggunakan filter EVR di aplikasi DirectShow, lihat Pemutaran Audio/Video di DirectShow.

Filter EVR dimulai dengan satu pin input, yang sesuai dengan aliran referensi. Untuk menambahkan pin untuk sub-aliran, kueri filter untuk antarmuka IEVRFilterConfig dan panggil IEVRFilterConfig::SetNumberOf Aliran. Panggil metode ini sebelum menyambungkan pin input apa pun. Pin 0 selalu menjadi aliran referensi. Koneksi pin ini sebelum pin lain, karena format aliran referensi mungkin membatasi format sub-aliran mana yang tersedia.

Sebelum memulai grafik, atur jendela kliping video dan persegi panjang tujuan. Untuk informasi selengkapnya, lihat Menggunakan Kontrol Tampilan Video.

Tidak seperti Video Mixing Renderer (VMR), EVR tidak memiliki mode operasional (berjendela, tanpa jendela, dan sebagainya). Secara khusus:

  • EVR tidak mendukung mode berjendela. Aplikasi harus menyediakan jendela kliping.
  • EVR tidak memiliki mode tanpa render. Untuk mengganti penyaji default, panggil IMFVideoRenderer::InitializeRenderer.
  • EVR tidak memiliki mode pencampuran. EVR selalu membuat mixer. Jika Anda memiliki satu aliran input, tidak perlu memanggil SetNumberOf Aliran untuk memaksa EVR menggunakan mixer.

Filter Antarmuka

Filter EVR mengekspos antarmuka berikut. Beberapa antarmuka ini didokumentasikan dalam DirectShow SDK. Gunakan QueryInterface untuk mengambil pointer ke antarmuka ini:

Antarmuka Pin Input

Pin input pada filter EVR mengekspos antarmuka berikut. Gunakan QueryInterface untuk mengambil pointer ke antarmuka ini:

Selain itu, Anda dapat menggunakan antarmuka IMFGetService untuk mengambil antarmuka berikut:

Pemutaran Audio/Video di DirectShow

Perender Video yang Ditingkatkan