共用方式為


VMR 中的座標對應

[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、imfMediaEngine 取代,並在媒體基金會 音訊/視訊擷取。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayerIMFMediaEngine 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]

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

  1. 轉換 T(Src) 將來源矩形對應至目的地矩形。 這些是由媒體類型中 VIDEOINFOHEADERVIDEOINFOHEADER2 結構的成員所指定 rcSourcercTar get。 當來源映像傳遞至 VMR 時,此對應會預先處理。
  2. 轉換 T(Flag) 會執行媒體範例中旗標所指定的任何影像作。 這些包括轉換,例如垂直轉譯和縮放以容納 bob 交錯旗標。 交錯轉換會將影像高度加倍,如果影像位於奇數位段,則可能會將影像轉譯為視訊線的一半。
  3. 轉換 T(AR) 會根據影像外觀比例,將影像調整為平方圖元。 針對 VIDEOINFOHEADER 媒體類型,外觀比例取決於影像大小。 針對 VIDEOINFOHEADER2 類型,外觀比例取決於 dwPictAspectRatioXdwPictAspectRatioY 字段,除非設定AMCONTROL_PAD_TO_16x9或AMCONTROL_PAD_TO_4x3旗標。 此轉換假設監視器顯示設定符合監視器的實體外觀比例。 例如,如果使用者具有 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 導覽器的滑鼠座標也必須在此空間中。 例如,如果應用程式將視訊轉譯到旋轉的 Cube 上,則會回報無視窗控件的整個顯示器,並傳回相對於顯示器的滑鼠座標。

從源數據到最終轉譯器的整體影像轉換為:

T = T(Src)* T(Flag)T(Ar)T(Mix)* T(Dst)*

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

轉換的反向是:

反向轉換

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

映射轉換步驟

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