非方形混合
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
本主題適用于 Windows XP Service Pack 2 或更新版本。
當 VMR-9 混合兩個或多個資料流程時,有兩個點可以進行縮放:當混音器複合輸入資料流程時,以及配置器簡報者轉譯複合影像時。
舊版的 VMR-9 一律使用正方形 (1:1) 圖元外觀比例來複合輸入資料流程, (PAR) ,即使只有單一視訊串流也一樣。 如果輸入資料流程有非平方圖元,這會導致不必要的縮放作業。 當然,應該盡可能避免縮放,因為它會降低最終影像品質。
從 Windows XP Service Pack 2 開始,VMR-9 支援兩種不同的方式,以避免發生雙重調整的問題:
- 實作自訂配置器簡報者並支援 IVMRSurfaceAllocatorEx9 介面。
- 使用非方形混合模式。
本節說明非方形混合模式。 應用程式可以結合這兩種技術。
非平方混合的運作方式
在非平方混合模式中,VMR-9 會選取一個輸入資料流程作為目標大小和 PAR。 VMR 的混音器不會從該資料流程或具有相同影像大小和 PAR 的任何其他資料流程調整視訊。 具有不同大小或外觀比例的資料流程會調整為符合目標 PAR 和信件收件匣,以符合最終輸出影像大小。
資料流程的選擇取決於目前的混合模式:
- YUV 混合模式僅限於釘選 0 上的一個視訊串流。 (其他針腳可能有子圖形或關閉標題 streams.) 因此,VMR-9 一律會選取目標映射大小和 PAR 的針腳 0。
- 在 RGB 混合模式中,VMR 會選取具有最大映射大小的資料流程。 如果有一個以上的,它會選取具有最高迭置順序的複本;如果仍然有系結,則會選取具有最低針腳編號的資料流程。
作業範例
範例 1. 資料流程 0 是 720 x 480 圖元,圖片外觀比例為 16:9。 Stream 1 是 640 x 480 圖元,圖片外觀比例為 4:3。
在此範例中,資料流程 0 具有最大的映射大小,因此不論 RGB 混合模式或 YUB 混合模式為何,VMR 都會選擇此資料流程。 PAR 是 32:27 (16:9 / 720:480) ,這表示影像必須透過這個比例水準縮放,才能產生正確的 16:9 圖片外觀比例。
為了比對目標 PAR,VMR 混音器會以反向比例調整資料流程 1 (27:32) ,產生 540 x 480 影像。 然後,這兩個數據流會複合到一個表面。 若要正確顯示產生的影像,配置器簡報者必須水準延展影像,以符合 16:9 圖片外觀比例。
範例 2. 資料流程 0 是 720 x 480 圖元,圖片外觀比例為 16:9。 Stream 1 是 1024 x 768 圖元,圖片外觀比例為 4:3。
如果 VMR-9 使用 YUV 混合模式,則一律會選取資料流程 0。 因此,它會將資料流程 1 延展至 540 x 480 圖元,以符合資料流程 0 的 PAR。
如果 VMR-9 使用 RGB 混合模式,它會選取串流 1 作為目標,因為該資料流程具有最大的影像大小。 它會將資料流程 0 延展至 1024 x 576 圖元的影像大小。 請注意,在此情況下,複合影像的 PAR 為 1:1,因此配置器簡報者不需要更正非方形圖元。 (可能需要延展視訊以考慮目的地矩形。)
使用非方形混合模式
如果下列任一條件成立,建議使用非平方混合模式:
- 您的應用程式永遠不會將多個視訊串流傳送至 VMR-9。
- 您的應用程式會轉譯 DVD、電視或 ms-dvr 檔案。 在此情況下,如果圖形硬體支援,您也應該使用 YUV 混合模式。
如果您的應用程式混合多個可能具有不同影像大小或圖元外觀比例的視訊串流,建議使用預設的方形混合模式。
若要設定非方形混合模式,篩選圖形必須停止,且所有輸入針腳在 VMR-9 上中斷連線。 然後使用 MixerPref9_NonSquareMixing 旗標呼叫 IVMRMixerControl9::SetMixingPrefs :
DWORD dwPrefs;
pMixControl->GetMixingPrefs(&dwPrefs);
dwPrefs |= MixerPref9_NonSquareMixing;
pMixControl->SetMixingPrefs(dwPrefs);
注意
如果您將 MixerPref9_NonSquareMixing 旗標與 MixerPref9_ARAdjustXorY 旗標結合,VMR-9 會忽略MixerPref9_ARAdjustXorY旗標。
如果您的應用程式使用具有非方形混合模式的自訂配置器簡報者,請注意複合影像可能有非方形 PAR。 配置器簡報者必須將影像縮放至正方形 (1:1) PAR。
靜態點陣圖
如果您使用 IVMRMixerBitmap9 介面將靜態點陣圖混合到視訊上,您應該將點陣圖視為第二個視訊串流,以供 VMR 混合模式之用。
VMR 會將點陣圖視為與目標具有相同的 PAR。 它不會調整點陣圖,以調整目標的圖元外觀比例。 在 VMR 的預設組態中,目標具有符合大部分點陣圖的 1:1 PAR。 在非方形混合模式中,目標可能有非平方圖元。 為了確保正確顯示點陣圖,應用程式應該提供符合目標 PAR 的影像。
相關主題