共用方式為


影片品質管理

本主題描述 Windows 7 中視訊管線的一些改善,包括適用於 Microsoft Media Foundation 和 Microsoft DirectShow。

在完美的世界中,無論視訊解析度或 CPU/GPU 負載為何,影片永遠不會故障。 當然,在現實中,視訊管線必須能夠應付有限的硬體資源,而且必須根據系統環境調整播放。 影片品質管理的目標是:

  • 減少故障(已卸除或晚期框架)。
  • 減少記憶體使用量,特別是在 GPU 中。
  • 降低耗電量,特別是在電池電力上執行的膝上型計算機。
  • 根據資源條件約束,盡可能取得最佳的影像品質。
  • 讓視訊與音訊保持同步。

其中一些目標相反,特別是在低端系統上。 一般來說,速度和質量之間有取捨。 問題比視覺質量的適度減少更令人反感。 耗電量的相對重要性會隨著環境而有所不同:在電池電源上執行的膝上型計算機中,它非常重要。

在 Windows 7 中,增強的視訊轉譯器 (EVR) 對影片品質管理有更好的支援。 Media Foundation 管線和 DirectShow 管線都已更新,以利用這些功能。 使用雙管齊下的方法:

  • 開始播放之前,管線可以根據用戶的電源管理設定和硬體相關信息來執行靜態優化。
  • 播放開始之後,管線可以根據運行時間效能套用動態優化。

媒體基礎的品質管理

若要啟用靜態優化,請先在部分拓撲上設定 MF_TOPOLOGY_STATIC_PLAYBACK_OPTIMIZATIONS 屬性,再解析拓撲。 拓撲載入器會在其 IMFTopoLoader::Load 方法中查詢此屬性。

如果啟用靜態優化,您應該在拓撲上設定另外兩個屬性:

屬性 描述
MF_TOPOLOGY_PLAYBACK_MAX_DIMS
指定視訊播放視窗的大小上限。
MF_TOPOLOGY_PLAYBACK_FRAMERATE
指定監視器重新整理速率。

 

這兩個屬性可協助管線計算最有效的品質管理設定。

動態優化是由品質管理員執行。 您不需要執行任何動作來啟用品質管理員;它會自動啟用。 品質管理員存在於 Windows Vista 中;在 Windows 7 中,EVR 可以更好地回應來自品質管理員的訊息。

DirectShow 中的品質管理

DirectShow 支援 DVD 播放的靜態和動態優化。 若要在 DVD 播放應用程式中啟用這些優化,請在 IDvdGraphBuilder::RenderDvdVideoVolume 方法的 dwFlags 參數中設定下列旗標:

描述
AM_DVD_ADAPT_GRAPH 啟用靜態優化。
AM_DVD_EVR_QOS 啟用動態優化。

 

其他 DirectShow 應用程式可以直接在 EVR 篩選條件上呼叫 IEVRFilterConfigEx::SetConfigPrefs 方法來啟用動態優化。 指定 EVRFilterConfigPrefs_EnableQoS 旗標。

注意

DirectShow 中的靜態優化僅限於 DVD 播放。

 

EVR 中的品質管理

EVR 支援一些用於品質管理的新組態旗標。 如果您啟用先前所述的品質管理優化,則不需要直接設定這些旗標。 不過,系統會針對想要對EVR進行更細微控制的應用程式記錄它們。

呼叫 IMFVideoMixerControl2::SetMixingPrefs 方法,在 EVR 混音器上設定下列旗標:

標誌 描述
  • MFVideoMixPrefs_ForceHalfInterlace
  • MFVideoMixPrefs_AllowDropToHalfInterlace
略過每個交錯式框架的第二個字段。
  • MFVideoMixPrefs_AllowDropToBob
  • MFVideoMixPrefs_ForceBob
即使驅動程式支持高品質 deinterlace 模式,也請使用 bob deinterlacing。

 

呼叫 IMFVideoDisplayControl::SetRenderingPrefs 方法,在 EVR 演示者上設定下列旗標:

標誌 描述
  • MFVideoRenderPrefs_ForceOutputThrottling
  • MFVideoRenderPrefs_AllowOutputThrottling
節流輸出以符合 GPU 頻寬。
  • MFVideoRenderPrefs_ForceBatching
  • MFVideoRenderPrefs_AllowBatching
Batch Direct3D Present 呼叫。 此優化可讓系統更頻繁地進入閑置狀態,以減少耗電量。
  • MFVideoRenderPrefs_ForceScaling
  • MFVideoRenderPrefs_AllowScaling
使用小於輸出矩形的矩形執行影片混合。 將結果調整為正確的輸出大小。

 

此外,EVR 媒體接收支持對應至每個旗標的組態屬性:

在播放開始之前,您可以直接在 EVR 媒體接收上設定這些屬性,作為呼叫 IMFVideoMixerControl2IMFVideoDisplayControl 方法的替代方法。 若要設定這些屬性,請查詢 IMFAttributes的 EVR 媒體接收。

媒體會話