Bagikan melalui


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.
  • Tetap sinkronkan video dengan audio.

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

Di 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 prong 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 mengkueri atribut ini dalam metode IMFTopoLoader::Load.

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 dengan 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 IDvdGraphBuilder::RenderDvdVideoVolume metode:

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

 

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

Nota

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 didokumenkan 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 saling terkait.
  • MFVideoMixPrefs_AllowDropToBob
  • MFVideoMixPrefs_ForceBob
Gunakan bob deinterlacing, bahkan jika driver mendukung mode deinterlace berkualitas lebih tinggi.

 

Atur bendera berikut pada penyaji EVR dengan memanggil metodeIMFVideoDisplayControl::SetRenderingPrefs:

Bendera Deskripsi
  • MFVideoRenderPrefs_ForceOutputThrottling
  • MFVideoRenderPrefs_AllowOutputThrottling
Batasi output agar sesuai dengan bandwidth GPU.
  • MFVideoRenderPrefs_ForceBatching
  • MFVideoRenderPrefs_AllowBatching
Batch Direct3D Sajikan 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 panjang yang lebih kecil dari persegi panjang output. Skalakan hasil 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 IMFVideoMixerControl2 dan metode IMFVideoDisplayControl. Untuk mengatur atribut ini, kueri sink media EVR untuk IMFAttributes.

Sesi Media