共用方式為


VMR 中的座標組應

[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。

本節說明 VMR 對應至最終輸出映射之前,套用至來源映射的五個轉換。

  1. 轉換 T (Src) 將來源矩形對應至目的地矩形。 這些是由媒體類型中VIDEOINFOHEADERVIDEOINFOHEADER2結構的rcSourcercTarget成員所指定。 此對應會在來源映射傳遞至 VMR 時預先處理。
  2. 轉換 T (Flag) 會執行媒體範例中旗標所指定的任何影像操作。 這些包括垂直轉譯和縮放等轉換,以容納 bob 交錯旗標。 交錯轉換會將影像高度加倍,如果影像位於奇數位段中,可能會將影像轉譯成一半的視訊線。
  3. 轉換 T (AR) 會根據影像外觀比例,將影像調整為平方圖元。 對於 VIDEOINFOHEADER 媒體類型,外觀比例取決於影像大小。 對於 VIDEOINFOHEADER2 類型,除非已設定AMCONTROL_PAD_TO_16x9或AMCONTROL_PAD_TO_4x3旗標,否則外觀比例取決於 dwPictAspectRatioXdwPictAspectRatioY 欄位。 此轉換假設監視器顯示設定符合監視器的實體外觀比例。 例如,如果使用者有 4 x 3 外觀比例的監視器,但會將顯示器設定為 1280 x 768 圖元 (5 x 3) ,則影像將不會有正確的外觀比例。
  4. 轉換 T (Mix) 轉換會使用 IVMRMixerControl 方法中指定的標準化矩形,將影像放置在目的地影像內。 標準化矩形可讓應用程式組織來來源資料流的定位方式,並彼此相對調整。 VMR 會計算所有來源影像的最大維度,並將每個影像置中于整體周框內,以計算目的地影像。 周框的角落會指派範圍 (0,0) (1,1) 。 在圖形執行之前,周框是固定的,即使新增或刪除資料流程,仍會維持不變。 每個資料流程的目的地矩形可以位於範圍 (0,0) 之外, (1,1 個) ,而且仍然有效。
  5. 最後,混合映射的一部分可以透過 VMR 上IBasicVideo介面中的來源和目的地矩形所指定的對應T (Dst) 來轉換。 如果已取代Allocator-Presenter,且未使用 IBasicVideo 介面,應用程式必須實作 IVMRWindowlessControl 介面,並將座標組應回 2D 線性空間。 返回 DVD 導覽器的滑鼠座標也必須在此空間中。 例如,如果應用程式將視訊轉譯到旋轉立方體,則會回報無視窗控制項的整個顯示器,並傳回相對於顯示器的滑鼠座標。

從來源資料到最終轉譯器的整體影像轉換為:

T = T (Src) * T (旗標) T (Ar) T (Mix) * T (Dst) *

其中 * 表示影像可以裁剪到該階段的目的地影像。 請注意,這些全都是相依轉換,因此 VMR 可以將它們合併成單一轉換。

轉換的反向是:

反向轉換

T (Src) T (旗標) T (Ar) 與來源解析度相對。 在 Factor T (Mix) 中,正規化來源矩形相對於外觀更正的影像。 標準化目的地矩形相對於輸出解析度。 下圖顯示這些關聯性。

影像轉換步驟

使用適用于 DirectShow 篩選開發人員的 VMR