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 |
---|---|
|
Ara çerçevelerin ikinci alanını atlayın. |
|
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 |
---|---|
|
Çıkışı GPU bant genişliğiyle eşleşecek şekilde kısıtla. |
|
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. |
|
Çı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:
- EVRConfig_AllowBatching
- EVRConfig_AllowDropToBob
- EVRConfig_AllowDropToHalfInterlace
- EVRConfig_AllowScaling
- EVRConfig_AllowDropToThrottle
- EVRConfig_ForceBatching
- EVRConfig_ForceBob
- EVRConfig_ForceHalfInterlace
- EVRConfig_ForceScaling
- EVRConfig_ForceThrottle
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.
İlgili konular