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.
Nota
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 MemilihRight Renderer .
Video Renderer menggunakan permukaan DirectDraw dan overlay, jika kartu video mendukungnya. Filter Graph Manager mengekspos antarmukaIVideoWindow, yang memungkinkan aplikasi untuk mengatur dan mengambil properti pada Video Renderer. Dengan kartu video yang lebih baru, Video Renderer mendukung penyajian layar penuh. Jika tidak, Filter Graph Manager secara otomatis beralih ke filter Full Screen Renderer 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 rilis akhir panggilan ke Video Renderer, yang terjadi saat Filter Graph Manager dimatikan. Jika tidak, aplikasi mungkin kebuntuan.
Label | Nilai |
---|---|
Filter Antarmuka | 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 berlaku. |
Antarmuka Pin Output | Tidak berlaku. |
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 |
Komentar
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 di versi ritel DLL. Untuk informasi selengkapnya, lihat Fungsi Output Debug.
Komentar 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 upstream, Video Renderer memerlukan format RGB yang cocok dengan kedalaman warna pengaturan monitor saat ini. Misalnya, jika pengaturan tampilan saat ini berwarna 24-bit, filter upstream 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.
Nota
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 upstream mengembalikan S_OK, Video Renderer melampirkan media baru ke sampel berikutnya. Filter upstream harus memanggil IMediaSample::GetMediaType pada setiap sampel. Jika GetMediaType mengembalikan nilaiNULL non-, itu menunjukkan perubahan format, dan filter upstream harus merespons dengan beralih jenis output. (Jangan beralih jenis dalam metode QueryAccept.) Filter upstream 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 Video Renderer menarik ke permukaan overlay DirectDraw, Video Renderer mengalokasikan satu buffer untuk pin inputnya. Jika filter upstream mencoba memaksa koneksi menggunakan beberapa buffer, Video Renderer tidak akan dapat menggunakan permukaan overlay.
Topik terkait