Filter Perender Video

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

Filter Video Renderer adalah perender video serdadu yang kuat.

Catatan

Pada Windows XP dan yang lebih baru, perender video default adalah Video Mixing Renderer Filter 7 (VMR-7). VMR-7 dan Video Renderer keduanya memiliki nama yang ramah "Video Renderer." Pada platform sebelumnya, Video Renderer adalah perender default. Lihat Memilih Perender yang Tepat.

 

Video Renderer menggunakan permukaan DirectDraw dan overlay, jika kartu video mendukungnya. Filter Graph Manager mengekspos antarmuka IVideoWindow , yang memungkinkan aplikasi mengatur dan mengambil properti di Video Renderer. Dengan kartu video yang lebih baru, Video Renderer mendukung penyajian layar penuh. Jika tidak, Filter Graph Manager secara otomatis beralih ke filter Penyaji Layar Penuh untuk mode layar penuh. Lihat IVideoWindow::p ut_FullScreenMode untuk informasi selengkapnya.

  • ! [Penting]

    Biasanya, jendela video filter ini memproses pesan pada utas pekerja yang dibuat oleh Filter Graph Manager. Howerver, jika aplikasi secara langsung membuat filter menggunakan CoCreateInstance, jendela video memproses pesan pada utas aplikasi. Dalam hal ini, utas aplikasi harus memiliki perulangan pesan, untuk mengirim pesan ke jendela video. Selain itu, utas tidak boleh keluar sampai panggilan Rilis akhir ke Video Renderer, yang terjadi saat Filter Graph Manager dimatikan. Jika tidak, aplikasi mungkin kebuntuan.

     

Label Nilai
Antarmuka Filter IBaseFilter, IBasicVideo, IBasicVideo2, IDirectDrawVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IQualityControl, IQualProp, IVideoWindow
Jenis Media Pin Input Format video yang tidak dikompresi.
Antarmuka Pin Input IMemInputPin, IOverlay, IPin, IPinConnection, IQualityControl
Tipe Media Pin Output Tidak dapat diterapkan.
Antarmuka Pin Output Tidak dapat diterapkan.
Filter CLSID CLSID_VideoRenderer
CLSID Halaman Properti Tidak ada halaman properti.
Eksekusi quartz.dll
Merit Windows XP dan yang lebih baru: MERIT_UNLIKELY
Kategori Filter CLSID_LegacyAmFilterCategory

 

Keterangan

Dalam versi debug Quartz.dll, jika tingkat debug LOG_TRACE diatur ke 5 atau lebih tinggi, Video Renderer menampilkan stempel waktu setiap bingkai di jendela video. Angka-angka ini tidak muncul dalam versi ritel DLL. Untuk informasi selengkapnya, lihat Fungsi Output Debug.

Keterangan berikut ditujukan untuk pengembang filter:

Video Renderer menerima format YUV jika kartu grafis video mendukung permukaan overlay YUV. Namun, ketika pertama kali terhubung ke filter upstram, Video Renderer memerlukan format RGB yang cocok dengan kedalaman warna pengaturan monitor saat ini. Misalnya, jika pengaturan tampilan saat ini berwarna 24-bit, filter upstram harus dapat menyediakan video RGB 24-bit. Saat grafik filter beralih ke status berjalan, Video Renderer menegosiasikan perubahan format dinamis ke ruang warna YUV yang sesuai.

Dengan menyambungkan dengan jenis RGB, Video Renderer memastikan bahwa ia dapat menggunakan GDI jika DirectDraw tidak tersedia. Ini akan beralih ke GDI jika aplikasi lain menggunakan memori video, jika persegi panjang video melekat dua monitor pada sistem multi-monitor, atau jika persegi panjang video benar-benar dikaburkan oleh jendela lain.

Catatan

Video Mixing Renderer tidak melakukan jenis perubahan format dinamis ini, dan tidak memerlukan jenis media RGB, karena tidak pernah menggunakan GDI untuk penyajian.

 

Untuk menegosiasikan perubahan format, Video Renderer memanggil IPin::QueryAccept dengan jenis media baru. Jika filter upstram kembali S_OK, Video Renderer melampirkan media baru ke sampel berikutnya. Filter upstream harus memanggil IMediaSample::GetMediaType pada setiap sampel. Jika GetMediaType mengembalikan nilai non-NULL , itu menunjukkan perubahan format, dan filter upstram harus merespons dengan beralih jenis output. (Jangan beralih jenis dalam metode QueryAccept .) Filter upstram harus menerima setidaknya jenis RGB utama, dan idealnya harus mendukung jenis YUV umum. Selama streaming, Video Renderer mungkin beralih bolak-balik antara jenis YUV dan RGB berapa kali. Perender Video tidak menerima perubahan format dinamis yang dimulai oleh filter upstram.

Saat Perender Video menarik ke permukaan overlay DirectDraw, Perender Video mengalokasikan buffer tunggal untuk pin inputnya. Jika filter upstram mencoba memaksa koneksi menggunakan beberapa buffer, Video Renderer tidak akan dapat menggunakan permukaan overlay.

Filter DirectShow