VMR での座標マッピング
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
このセクションでは、VMR によって最終的な出力イメージにマップされる前にソース イメージに適用される 5 つの変換について説明します。
- 変換 T(Src) は、変換元の四角形を変換先の四角形にマップします。 これらは、メディアタイプの VIDEOINFOHEADER または VIDEOINFOHEADER2 構造体の rcSource および rcTarget メンバーによって指定されます。 このマッピングでは、ソース イメージが VMR に渡されると前処理されます。
- 変換 T(Flag) は、メディア サンプルの flags で指定されたイメージ操作を実行します。 これには、bob インターレース フラグに対応する垂直方向の変換やスケールなどの変換が含まれていました。 インターレース変換では、画像の高さが 2 倍になり、奇数フィールドにある場合は、ビデオ行の半分で画像が変換される可能性があります。
- 変換 T(AR) は、画像の縦横比に基づいて、画像を正方形のピクセルに調整します。 VIDEOINFOHEADER メディアの種類の場合、縦横比はイメージ サイズによって決まります。 VIDEOINFOHEADER2 型の場合、縦横比は、AMCONTROL_PAD_TO_16x9またはAMCONTROL_PAD_TO_4x3フラグが設定されていない限り、dwPictAspectRatioX フィールドと dwPictAspectRatioY フィールドによって決まります。 この変換では、モニターの表示設定がモニターの物理的な縦横比と一致することを前提としています。 たとえば、ユーザーが縦横比が 4 x 3 のモニターがあり、ディスプレイを 1280 x 768 ピクセル (5 x 3) に設定した場合、画像の縦横比は正しくありません。
- 変換 T(Mix) は、 IVMRMixerControl メソッドで指定された正規化された四角形を使用して、イメージをターゲット イメージ内に配置します。 正規化された四角形を使用すると、アプリケーションはソース ストリームの配置方法とスケール方法を互いに相対的に整理できます。 VMR は、すべてのソース イメージの最大サイズを計算し、各イメージを全体の外接する四角形内に中央揃えすることで、ターゲット イメージを計算します。 外接する四角形の角には、範囲 (0,0) が (1,1) に割り当てられます。 境界の四角形は、グラフが実行される前に固定され、ストリームが追加または削除された場合でも一定のままです。 各ストリームの変換先の四角形は、(0,0) から (1,1) の範囲外にあり、引き続き有効です。
- 最後に、混合イメージの一部は、VMR の IBasicVideo インターフェイスのソース四角形と変換先の四角形で指定されたマッピング T(Dst)によって変換できます。 Allocator-Presenterが置き換えられ、 IBasicVideo インターフェイスが使用されていない場合、アプリケーションは IVMRWindowlessControl インターフェイスを実装し、座標を 2D 線形空間にマップする必要があります。 DVD ナビゲーターに返されるマウス座標も、このスペース内にある必要があります。 たとえば、アプリケーションが回転するキューブにビデオをレンダリングする場合、ウィンドウレス コントロールのディスプレイ全体をレポートし、ディスプレイに対する相対的なマウス座標を返します。
ソース データから最終的なレンダラーへのイメージ変換全体は次のとおりです。
T = T(Src)* T(Flag)T(Ar)T(Mix)* T(Dst)*
ここで* は、そのステージでイメージをコピー先のイメージにクリップできることを示します。 これらはすべてアフィン変換であるため、VMR はそれらを 1 つの変換に結合できます。
変換の逆関数は次のとおりです。
係数 T(Src) T(Flag) T(Ar) は、ソースの解像度に対して相対的です。 要素 T(Mix) では、正規化されたソース四角形は、アスペクト補正された画像に対して相対的です。 正規化された変換先の四角形は、出力解像度に対して相対的です。 次の図は、これらのリレーションシップを示しています。
関連トピック