Aracılığıyla paylaş


Video Kalitesi Yönetimi

Bu konu başlığında, Hem Microsoft Media Foundation hem de Microsoft DirectShow için Windows 7'deki video işlem hattında bazı geliştirmeler açıklanmaktadır.

Mükemmel bir dünyada, video çözünürlüğünden veya CPU/GPU yükünden bağımsız olarak video hiçbir zaman hata vermez. Gerçekte, elbette video işlem hattının sınırlı donanım kaynaklarıyla başa çıkabilmesi ve sistem ortamına uyarlamalı olarak kayıttan yürütmeyi uyarlayabilmesi gerekir. Video kalitesi yönetiminin hedefleri şunlardır:

  • Arızaları azaltın (bırakılan veya geç çerçeveler).
  • Özellikle GPU'da bellek kullanımını azaltın.
  • Özellikle pil gücüyle çalışan dizüstü bilgisayarlarda güç tüketimini azaltın.
  • Kaynak kısıtlamalarına göre mümkün olan en iyi görüntü kalitesini elde edin.
  • Videoların sesle eşitlenmiş kalmasını sağlayın.

Bu hedeflerden bazıları, özellikle düşük uçlu sistemlerde tam tersidir. Genellikle hız ve kalite arasında bir denge vardır. Aksaklık, görsel kalitesindeki orta düzeydeki azalmalardan daha sakıncalıdır. Güç tüketiminin göreli önemi ortama göre değişir; pil gücü ile çalışan bir dizüstü bilgisayarda, çok önemlidir.

Windows 7'de gelişmiş video işleyicisi (EVR), video kalitesi yönetimi için daha iyi destek sağlar. Hem Media Foundation işlem hattı hem de DirectShow işlem hattı bu özelliklerden yararlanacak şekilde güncelleştirildi. İki aşamalı bir yaklaşım kullanılır:

  • Kayıttan yürütme başlamadan önce işlem hattı, kullanıcının güç yönetimi ayarlarına ve donanım hakkındaki bilgilere göre statik iyileştirmeler gerçekleştirebilir.
  • Kayıttan yürütme başlatıldıktan sonra işlem hattı, çalışma zamanı performansına göre dinamik iyileştirmeler uygulayabilir.

Media Foundation'da Kalite Yönetimi

Statik iyileştirmeleri etkinleştirmek için, topolojiyi çözümlemeden önce kısmi topolojide MF_TOPOLOGY_STATIC_PLAYBACK_OPTIMIZATIONS özniteliğini ayarlayın. Topoloji yükleyicisi bu özniteliği IMFTopoLoader::Load yönteminde sorgular.

Statik iyileştirmeleri etkinleştirirseniz topolojide iki öznitelik daha ayarlamanız gerekir:

Öznitelik Açıklama
MF_TOPOLOGY_PLAYBACK_MAX_DIMS
Video kayıttan yürütme penceresinin en büyük boyutunu belirtir.
MF_TOPOLOGY_PLAYBACK_FRAMERATE
İzleyici yenileme hızını belirtir.

 

Bu iki öznitelik, işlem hattının kalite yönetimi için en etkili ayarı hesaplamalarına yardımcı olur.

Dinamik iyileştirmeler kalite yöneticisi tarafından gerçekleştirilir. Kalite yöneticisini etkinleştirmek için herhangi bir şey yapmanız gerekmez; otomatik olarak etkinleştirilir. Kalite yöneticisi Windows Vista'da mevcut; Windows 7'de EVR, kalite yöneticisinden gelen iletilere daha iyi yanıt verebilir.

DirectShow'da Kalite Yönetimi

DirectShow, DVD kayıttan yürütme için statik ve dinamik iyileştirmeleri destekler. Dvd kayıttan yürütme uygulamasında bu iyileştirmeleri etkinleştirmek için IDvdGraphBuilder::RenderDvdVideoVolume yönteminin dwFlags parametresinde aşağıdaki bayrakları ayarlayın:

Bayrak Açıklama
AM_DVD_ADAPT_GRAPH Statik iyileştirmeleri etkinleştirir.
AM_DVD_EVR_QOS Dinamik iyileştirmeleri etkinleştirir.

 

Diğer DirectShow uygulamaları, doğrudan EVR filtresi üzerinde IEVRFilterConfigEx::SetConfigPrefs yöntemini çağırarak dinamik iyileştirmeleri etkinleştirebilir. EVRFilterConfigPrefs_EnableQoS bayrağını belirtin.

Not

DirectShow'daki statik iyileştirmeler DVD kayıttan yürütme ile sınırlıdır.

 

EVR'de Kalite Yönetimi

EVR, kalite yönetimi için bazı yeni yapılandırma bayraklarını destekler. Daha önce açıklanan kalite yönetimi iyileştirmelerini etkinleştirirseniz, bu bayrakları doğrudan ayarlamanız gerekmez. Ancak, BUNLAR EVR üzerinde daha ayrıntılı denetim isteyen uygulamalar için belgelenmiştir.

IMFVideoMixerControl2::SetMixingPrefs yöntemini çağırarak EVR karıştırıcıda aşağıdaki bayrakları ayarlayın:

Bayrak Açıklama
  • MFVideoMixPrefs_ForceHalfInterlace
  • MFVideoMixPrefs_AllowDropToHalfInterlace
Ara çerçevelerin ikinci alanını atlayın.
  • MFVideoMixPrefs_AllowDropToBob
  • MFVideoMixPrefs_ForceBob
Sürücü daha yüksek kaliteli bir deinterlace modunu desteklese bile bob deinterlacing kullanın.

 

IMFVideoDisplayControl::SetRenderingPrefs yöntemini çağırarak EVR sunucusunda aşağıdaki bayrakları ayarlayın:

Bayrak Açıklama
  • MFVideoRenderPrefs_ForceOutputThrottling
  • MFVideoRenderPrefs_AllowOutputThrottling
Çıkışı GPU bant genişliğiyle eşleşecek şekilde kısıtla.
  • MFVideoRenderPrefs_ForceBatching
  • MFVideoRenderPrefs_AllowBatching
Batch Direct3D Present çağrıları. Bu iyileştirme, sistemin boşta kalma durumlarına daha sık girmesini sağlar ve bu da güç tüketimini azaltabilir.
  • MFVideoRenderPrefs_ForceScaling
  • MFVideoRenderPrefs_AllowScaling
Çıktı dikdörtgeninden daha küçük bir dikdörtgen kullanarak video karıştırma işlemi gerçekleştirin. Sonucu doğru çıkış boyutuna ölçeklendirin.

 

Buna ek olarak, EVR medya havuzu şu bayrakların her birine karşılık gelen yapılandırma özniteliklerini destekler:

Kayıttan yürütme başlamadan önce, bu öznitelikleri doğrudan EVR medya havuzu üzerinde ayarlayabilirsiniz; alternatif olarak IMFVideoMixerControl2 ve IMFVideoDisplayControl yöntemlerini çağırabilirsiniz. Bu öznitelikleri ayarlamak için, IMFAttributesiçin EVR medya havuzu sorgula.

Medya Oturumu