影片品質管制
本主題描述 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 播放應用程式中啟用這些優化,請在IEoGraphBuilder::RenderEoVideoVolume方法的dwFlags參數中設定下列旗標:
旗標 | 描述 |
---|---|
AM_DVD_ADAPT_GRAPH | 啟用靜態優化。 |
AM_DVD_EVR_QOS | 啟用動態優化。 |
其他 DirectShow 應用程式可以直接在 EVR 篩選準則上呼叫 IEVRFilterConfigEx::SetConfigPrefs 方法,以啟用動態優化。 指定 EVRFilterConfigPrefs_EnableQoS 旗標。
注意
DirectShow 中的靜態優化僅限於 DVD 播放。
EVR 中的品質管制
EVR 支援一些新的組態旗標來進行品質管制。 如果您啟用先前所述的管理服務優化,就不需要直接設定這些旗標。 不過,系統會針對想要更細微控制 EVR 的應用程式記載它們。
呼叫 IMFVideoMixerControl2::SetMixingPrefs 方法,在 EVR 混音器上設定下列旗標:
Flags | 描述 |
---|---|
|
略過每個交錯畫面的第二個欄位。 |
|
即使驅動程式支援高品質 deinterlace 模式,也請使用 bob deinterlacing。 |
呼叫 IMFVideoDisplayControl::SetRenderingPrefs 方法,在 EVR 簡報者上設定下列旗標:
Flags | 描述 |
---|---|
|
節流輸出以符合 GPU 頻寬。 |
|
Batch Direct3D Present 呼叫。 此優化可讓系統更頻繁地進入閒置狀態,進而降低耗電量。 |
|
使用小於輸出矩形的矩形來執行視訊混合。 將結果調整為正確的輸出大小。 |
此外,EVR 媒體接收支援對應至每個旗標的組態屬性:
- EVRConfig_AllowBatching
- EVRConfig_AllowDropToBob
- EVRConfig_AllowDropToHalfInterlace
- EVRConfig_AllowScaling
- EVRConfig_AllowDropToThrottle
- EVRConfig_ForceBatching
- EVRConfig_ForceBob
- EVRConfig_ForceHalfInterlace
- EVRConfig_ForceScaling
- EVRConfig_ForceThrottle
開始播放之前,您可以直接在 EVR 媒體接收上設定這些屬性,作為呼叫 IMFVideoMixerControl2 和 IMFVideoDisplayControl 方法的替代方法。 若要設定這些屬性,請查詢 IMFAttributes的 EVR 媒體接收。
相關主題