Manajemen Kualitas Video

Topik ini menjelaskan beberapa penyempurnaan alur video di Windows 7, baik untuk Microsoft Media Foundation maupun Microsoft DirectShow.

Dalam dunia yang sempurna, video tidak akan pernah salah, terlepas dari resolusi video atau beban CPU/GPU. Pada kenyataannya, tentu saja, alur video harus dapat mengatasi sumber daya perangkat keras terbatas, dan harus menyesuaikan pemutaran secara adaptif dengan lingkungan sistem. Tujuan untuk manajemen kualitas video adalah untuk:

  • Kurangi glitching (bingkai yang dihilangkan atau terlambat).
  • Kurangi penggunaan memori, terutama di GPU.
  • Kurangi konsumsi daya, terutama pada laptop yang berjalan dengan daya baterai.
  • Dapatkan kualitas gambar terbaik, dengan batasan sumber daya tertentu.
  • Menjaga video tetap sinkron dengan audio.

Beberapa tujuan ini bertentangan, terutama pada sistem low-end. Umumnya ada trade-off antara kecepatan dan kualitas. Glitching lebih tidak menyenangkan daripada pengurangan sedang dalam kualitas visual. Kepentingan relatif konsumsi daya bervariasi menurut lingkungan; dalam laptop yang berjalan dengan daya baterai, itu sangat penting.

Dalam Windows 7, perender video (EVR) yang ditingkatkan memiliki dukungan yang lebih baik untuk manajemen kualitas video. Alur Media Foundation dan alur DirectShow telah diperbarui untuk memanfaatkan kemampuan ini. Pendekatan dua-pronged digunakan:

  • Sebelum pemutaran dimulai, alur dapat melakukan pengoptimalan statis, berdasarkan pengaturan manajemen daya pengguna dan informasi tentang perangkat keras.
  • Setelah pemutaran dimulai, alur dapat menerapkan pengoptimalan dinamis, berdasarkan performa run-time.

Manajemen Kualitas di Media Foundation

Untuk mengaktifkan pengoptimalan statis, atur atribut MF_TOPOLOGY_STATIC_PLAYBACK_OPTIMIZATIONS pada topologi parsial sebelum menyelesaikan topologi. Pemuat topologi meminta atribut ini dalam metode IMFTopoLoader::Load-nya .

Jika Anda mengaktifkan pengoptimalan statis, Anda harus mengatur dua atribut lain pada topologi:

Atribut Deskripsi
MF_TOPOLOGY_PLAYBACK_MAX_DIMS
Menentukan ukuran maksimum jendela pemutaran video.
MF_TOPOLOGY_PLAYBACK_FRAMERATE
Menentukan laju refresh monitor.

 

Kedua atribut ini membantu alur menghitung pengaturan yang paling efektif untuk manajemen kualitas.

Pengoptimalan dinamis dilakukan oleh manajer kualitas. Anda tidak perlu melakukan apa pun untuk mengaktifkan manajer kualitas; diaktifkan secara otomatis. Manajer kualitas ada di Windows Vista; di Windows 7, EVR dapat merespons pesan yang lebih baik dari manajer kualitas.

Manajemen Kualitas di DirectShow

DirectShow mendukung pengoptimalan statis dan dinamis untuk pemutaran DVD. Untuk mengaktifkan pengoptimalan ini dalam aplikasi pemutaran DVD, atur bendera berikut dalam parameter dwFlags dari metode IDvdGraphBuilder::RenderDvdVideoVolume :

Bendera Deskripsi
AM_DVD_ADAPT_GRAPH Mengaktifkan pengoptimalan statis.
AM_DVD_EVR_QOS Memungkinkan pengoptimalan dinamis.

 

Aplikasi DirectShow lainnya dapat mengaktifkan pengoptimalan dinamis dengan memanggil metode IEVRFilterConfigEx::SetConfigPrefs langsung pada filter EVR. Tentukan bendera EVRFilterConfigPrefs_EnableQoS .

Catatan

Pengoptimalan statis di DirectShow terbatas pada pemutaran DVD.

 

Manajemen Kualitas dalam EVR

EVR mendukung beberapa bendera konfigurasi baru untuk manajemen kualitas. Jika Anda mengaktifkan pengoptimalan manajemen kualitas yang dijelaskan sebelumnya, Anda tidak perlu mengatur bendera ini secara langsung. Namun, mereka di dokumentasikan untuk aplikasi yang menginginkan kontrol yang lebih terperinci atas EVR.

Atur bendera berikut pada mixer EVR dengan memanggil metode IMFVideoMixerControl2::SetMixingPrefs :

Bendera Deskripsi
  • MFVideoMixPrefs_ForceHalfInterlace
  • MFVideoMixPrefs_AllowDropToHalfInterlace
Lewati bidang kedua dari setiap bingkai yang terjalin.
  • MFVideoMixPrefs_AllowDropToBob
  • MFVideoMixPrefs_ForceBob
Gunakan bob deinterlacing, bahkan jika driver mendukung mode deinterlace berkualitas lebih tinggi.

 

Atur bendera berikut pada penyaji EVR dengan memanggil metode IMFVideoDisplayControl::SetRenderingPrefs :

Bendera Deskripsi
  • MFVideoRenderPrefs_ForceOutputThrottling
  • MFVideoRenderPrefs_AllowOutputThrottling
Batasi output agar sesuai dengan bandwidth GPU.
  • MFVideoRenderPrefs_ForceBatching
  • MFVideoRenderPrefs_AllowBatching
Batch Direct3D Menyajikan panggilan. Pengoptimalan ini memungkinkan sistem untuk masuk ke status diam lebih sering, yang dapat mengurangi konsumsi daya.
  • MFVideoRenderPrefs_ForceScaling
  • MFVideoRenderPrefs_AllowScaling
Lakukan pencampuran video menggunakan persegi yang lebih kecil dari persegi output. Skalakan hasilnya ke ukuran output yang benar.

 

Selain itu, sink media EVR mendukung atribut konfigurasi yang sesuai dengan masing-masing bendera ini:

Sebelum pemutaran dimulai, Anda dapat mengatur atribut ini langsung di sink media EVR, sebagai alternatif untuk memanggil metode IMFVideoMixerControl2 dan IMFVideoDisplayControl . Untuk mengatur atribut ini, kueri sink media EVR untuk IMFAttributes.

Sesi Media