DXVA_BlendCombination 構造体 (dxva.h)

DXVA_BlendCombination構造は、ソース図と、アルファ ブレンド情報を伴うグラフィック イメージからブレンドされた画像を作成する方法を指定するために、ホスト デコーダーによってアクセラレータに送信されます。

構文

typedef struct _DXVA_BlendCombination {
  WORD             wPictureSourceIndex;
  WORD             wBlendedDestinationIndex;
  RECT             PictureSourceRect16thPel;
  RECT             PictureDestinationRect;
  RECT             GraphicSourceRect;
  RECT             GraphicDestinationRect;
  WORD             wBlendDelay;
  BYTE             bBlendOn;
  BYTE             bWholePlaneAlpha;
  DXVA_AYUVsample2 OutsideYUVcolor;
} DXVA_BlendCombination, *LPDXVA_BlendCombination;

メンバー

wPictureSourceIndex

図と組み合わせる図の DdMoCompBeginFrame の前の呼び出しで、DD_BEGINMOCOMPFRAMEDATAlpInputData メンバーが指す DWORD の内容によって定義される、圧縮されていないサーフェス インデックスを指定します。 この値は、バックエンド ハードウェア アルファ ブレンドが使用されている場合に0xFFFFされます (DXVA_ConfigAlphaCombine の bConfigBlendType メンバー 1 の場合)。

wBlendedDestinationIndex

作成する画像の DdMoCompBeginFrame の以前の呼び出しで、DD_BEGINMOCOMPFRAMEDATA の lpInputData メンバーが指す DWORD の内容によって定義される、圧縮されていないサーフェス インデックスを指定します。 この値は、バックエンド ハードウェア アルファ ブレンドが使用されている場合 ( DXVA_ConfigAlphaCombine の bConfigBlendType メンバーが 1 の場合) に0xFFFFされます。

バックエンド ハードウェア アルファ ブレンドが使用されている場合を除き、この値を wPictureSourceIndex と等しくすることはできません。

PictureSourceRect16thPel

RECT 構造体としてグラフィック イメージと組み合わせるソース図の領域を指定します。 寸法は、輝度成分のサンプル値間の距離の16分の1の単位で指定されます。 (つまり、RECT 構造体のメンバーは、バイナリ ポイントの前に 28 ビット、バイナリ ポイントの後に 4 ビットを持つ固定ポイント表現です)。この 16 番目のサンプル精度により、 PictureSourceRect16thPel には 、MPEG-2 ビデオのframe_centre_horizontal_offsetおよび frame_centre_vertical_offset パン スキャン変数と同じ精度を含めることができます。

DXVA_ConfigAlphaCombineの bConfigPictureResizing メンバーが 0 の場合、 PictureSourceRect16thPel 内のすべてのディメンションは 16 の整数の倍数である必要があります。

PictureDestinationRect

変換先の図の領域を RECT 構造体として指定します。 これには、 PictureSourceRect16thPel によってソース画像に対して定義された領域が含まれます。

DXVA_ConfigAlphaCombinebConfigPictureResizing メンバーが 0 の場合、PictureDestinationRect で指定された領域の幅と高さは、PictureSourceRect16thPel で指定された領域と同じである必要があります。 PictureDestinationRect のサイズが PictureSourceRect16thPel と異なる場合、適用するリサンプリング メソッドは指定されませんが、少なくともバイリニア リサンプリングと同等の品質が必要です。

GraphicSourceRect

ソース グラフィック イメージの領域を RECT 構造体として指定します。 この領域は、 PictureSourceRect16thPel で指定されたソース図の一部と組み合わせて、アルファ ブレンドされた図を作成します。

GraphicDestinationRect

コピー先のグラフィック イメージの領域を RECT 構造体として指定します。

DXVA_ConfigAlphaCombineの bConfigGraphicResizing メンバーが 0 の場合、コピー先の図の幅と高さは GraphicSourceRect で指定された領域と同じである必要があります。 GraphicDestinationRect のサイズが GraphicSourceRect と異なる場合、グラフィック イメージに適用するリサンプリング メソッドは指定されません。 ただし、使用されるリサンプリング方法には、ブレンド情報を表す AYUV サーフェスのバイリニア リサンプリングと少なくとも同等の品質が必要です。

wBlendDelay

ブレンドの組み合わせが有効になる前の遅延時間 (ミリ秒) を指定します。 バックエンド ハードウェア ブレンドが使用されている場合 (たとえば、DXVA_ConfigAlphaCombinebConfigBlendType メンバーが 1 の場合)、wBlendDelay には、ブレンドの組み合わせが有効になる前の遅延のミリ秒数が含まれます。 フロントエンド ブレンドが使用されている場合、このメンバーは意味がなく、ゼロである必要があります。

bBlendOn

ブレンドの組み合わせ操作が開始および停止するタイミングを指定します。 バックエンド ハードウェア ブレンドが使用されている場合、ブレンドは、ブレンドの組み合わせ操作で指定された時間 ( bBlendOn が 1 の場合) から、新しいブレンドの組み合わせの実行時間 ( bBlendOn が 1 に等しい場合) まで、またはブレンドの組み合わせ操作 ( bBlendOn が 0 に等しい) によってブレンドが無効になるまで適用されます。 バックエンド ハードウェア ブレンドが使用中で 、bBlendOn が 0 の場合、意味のあるアルファ ブレンドの組み合わせバッファー内の他の値は wBlendDelay のみです。 フロントエンド ブレンドが使用されている場合、このメンバーには意味がなく、0 である必要があります。

bWholePlaneAlpha

グラフィック イメージのアルファ チャネルの不透明度の乗数が含まれます。 値 0 は、グラフィック イメージが透明であることを示します (そのため、グラフィック コンテンツは、結果のブレンドされた画像には影響しません)。 値 255 は、グラフィック イメージが完全なサンプル不透明度を使用していることを示します。 bWholePlaneAlpha が 0 に等しくない場合、指定されたブレンドは、グラフィック コンテンツ内の各位置の不透明度を (bWholePlaneAlpha+1)/256 で乗算することです。 bWholePlaneAlpha の値が 0 の場合、使用するブレンドは、変更せずにグラフィック イメージで指定された不透明度です。 DXVA_ConfigAlphaCombinebConfigWholePlaneAlpha メンバーが 0 の場合、これは 255 に等しい必要があります。

OutsideYUVcolor

PictureDestinationRect の外側の領域がブレンドに一定の色を使用するかどうかを示します。 その場合、このメンバーはその色定数を指定します。 OutsideYUVcolor メンバーは、DXVA_AYUVsample2構造体として定義されます。 詳細については、「解説」セクションを参照してください。

注釈

ソースとコピー先の図が 4:4:4 形式でない場合、必要に応じて、グラフィックス ブレンド情報の 2 つ目のサンプル (1 つ目、3 つ目、または 5 番目など) が、ブレンドされた結果を生成するために必要に応じて垂直方向または水平方向のサブサンプリングされたソース クロミナンス情報に適用されます。

次のセクションでは、RECT 構造体の および下 のメンバーに適用される制限を示します。

PictureSourceRect16thPel の RECT 構造体の制限

PictureSourceRect16thPelRECT ディメンションには、次の制限が適用されます。
  • lefttop は 0 以上である必要があります。
  • rightbottom は、それぞれ lefttop 以上である必要があります。
  • rightと等しい場合、または topbottom と等しい場合、すべての RECT メンバーは、ソース画像が使用されていないことを示す値 0 を持つ必要があります。 このケースは、DXVA_ConfigAlphaCombinebConfigOnlyUsePicDestRectArea メンバーが 0 の場合にのみ許可されます。
  • 右側下部 は、圧縮されていないソース画像サーフェスの割り当てられた幅と高さのそれぞれ 16 倍を超えてはなりません。
たとえば、 PictureSourceRect16thPel を使用して MPEG-2 デコードされた画像全体を選択する場合、 PictureSourceRect16thPel 値は次のように計算できます。
  • left = 0
  • top = 0
  • right = 16 X horizontal_size
  • bottom = 16 X vertical_size

PictureDestinationRect の RECT 構造体の制限

PictureDestinationRectRECT ディメンションには、次の制限が適用されます。
  • lefttop は 0 以上である必要があります。
  • rightbottom は、それぞれ lefttop 以上である必要があります。
  • rightleft または top と等しい場合 (DXVA_ConfigAlphaCombinebConfigOnlyUsePicDestRectArea メンバーが 0 の場合にのみ使用できます)、すべての RECT メンバーは値 0 を持ち、PictureSourceRect16thPel も値 0 を持つすべての値を指定する必要があります。
  • DXVA_ConfigAlphaCombineの bConfigBlendType メンバーが 0 の場合、 rightbottom は、圧縮されていないコピー先の図サーフェスの割り当てられた幅と高さを超えてはなりません。
  • DXVA_ConfigAlphaCombineの bConfigBlendType メンバーが 1 の場合、 は、ソース グラフィックサーフェイスの割り当てられた幅と高さを超えてはなりません。

GraphicSourceRect の RECT 構造体の制限

アルファ ブレンド データの読み込みで、値が 2 の DXVA_ConfigAlphaLoadbConfigDataType メンバーを使用する場合、GraphicSourceRectRECT ディメンションには次の制限が適用されます。
  • top left は 0 である必要があります。
  • right は、「 GraphicDestinationRect の RECT 構造体の制限」セクションで説明されているように、異なる四角形の解釈に合わせて調整するには、直前の DVD SET_DAREA DCCMD の最後の X 座標から開始 X 座標を引いた値に 1 を加えた値に等しい必要があります。
  • なる四角形の解釈に合わせて調整するには、bottom は、直前の DVD SET_DAREA DCCMD の最後の Y 座標から開始 Y 座標を引いた 1 を引いた値に等しい必要があります。
アルファ ブレンド データの読み込みで、値が 2 の DXVA_ConfigAlphaLoad の bConfigDataType メンバーを使用しない場合、 GraphicSourceRect の RECT ディメンションには次の制限が適用されます。
  • lefttop は 0 以上である必要があります。
  • right bottom は、それぞれ lefttop 以上である必要があります。
  • rightに等しい場合、または topに等しい場合、すべての RECT メンバーは、グラフィック画像を使用しない値 0 を持つ必要があります。
  • rightbottom は、グラフィック ソース イメージの割り当てられた幅と高さを超えてはなりません。 割り当てられた幅と高さは、DXVA_ConfigAlphaLoadの bConfigDataType メンバーが 2 の場合、それぞれ 720 サンプルと 576 サンプルとして定義されます。

GraphicDestinationRect の RECT 構造体の制限

GraphicDestinationRectRECT ディメンションには、次の制限が適用されます。
  • lefttop は、8 つのサンプルでグラフィックをオフセットする必要性と競合しない限り、0 以上である必要があります。 これは、次のシナリオの場合です。
    • アルファ ブレンド データ読み込みでは、値が 2 の DXVA_ConfigAlphaCombinebConfigDataType メンバーと、値が 0 のDXVA_ConfigAlphaCombineの bConfigGraphicResizing メンバーを使用します。
    • 操作は、DVD 704 全体のパン スキャン以外に設定されています ( DVD 704 全体のパン スキャン以外の例を参照)。
    • 操作は DVD 352 全体に設定されます ( DVD 352 全体の例を参照)。
  • rightbottom は、それぞれ lefttop 以上である必要があります。 rightleft または top と等しい場合、RECT 構造体のすべてのこれらのメンバーは値 0 を持ち、GraphicSourceRect はそのすべてのメンバーに値 0 を指定する必要があります。
  • DXVA_ConfigAlphaCombinebConfigBlendType メンバーが 0 に等しい場合、rightbottom は、圧縮されていないコピー先の図サーフェスの割り当てられた幅と高さを超えないようにする必要があります。
  • DXVA_ConfigAlphaCombineの bConfigBlendType メンバーが 1 に等しい場合、 rightbottom は、ソース グラフィック イメージの割り当てられた幅と高さを超えてはなりません。
アルファ ブレンド データの読み込みで、値が 2 の DXVA_ConfigAlphaCombine の bConfigDataType メンバーと、値が 0 のDXVA_ConfigAlphaCombineの bConfigGraphicResizing メンバーを使用する場合、 GraphicDestinationRect ディメンションに関する次の追加の制限が適用されます。
  • top は、直前の DVD SET_DAREA DCCMD の Start Y 座標と等しい必要があります。
  • left は、直前の DVD SET_DAREA DCCMD の Start X 座標、またはその値から 8 を引いた値のいずれかと等しい必要があります。 詳細については、「 DVD 704 全体のパン スキャン以外の例 」および 「DVD 352 全体の例」を参照してください
  • right、次の注で説明する異なる四角形の解釈に合わせて調整するには、left の値に加えて、最後の DVD SET_DAREA DCCMD の開始 X 座標を引いた End X 座標と 1 を加算した値に等しい必要があります。
  • bottom は、次の注で説明する異なる四角形の解釈に合わせて調整するには、 top と End Y 座標から DCCMD の直前の DVD SET_DAREA DCCMD の開始 Y 座標を引いた値に 1 を加えた値と等しい必要があります。
メモ DVD ビデオ仕様でサブ画像の四角形領域を定義する方法と、Microsoft が使用する規則には違いがあります。 この参照は Microsoft の規則に従います。そのため、図の左上隅にある幅 10 と高さ 10 の四角形は、 top = 0、 left = 0、 right = 10、 bottom = 10 で定義されます。 DVD ビデオ仕様では、 right = 9 と bottom = 9 に相当する 値が使用されます。
 

OutsideYUVcolor 値の設定

OutsideYUVcolor 構造体の値は次のとおりです。
  • PictureDestinationRect の外側の領域がブレンドに使用する定数色として生成される場合、OutsideYUVcolor.bSampleAlpha8 の値は 255 である必要があります。
  • 次の 2 つのケースのいずれかが適用される場合、 OutsideYUVcolor.bSampleAlpha8 の値は 0 である必要があります。
    • PictureDestinationRect の外側の領域は、ブレンドの影響を受けません。
    • PictureDestinationRect の外部の領域は使用できません (値が 1 の bConfigStayInPicDestRectArea メンバー DXVA_ConfigAlphaCombine示されます)。
OutsideYUVcolor.bSampleAlpha8 のその他の値はすべて、将来の使用のために予約されています。

DXVA_ConfigAlphaCombine構造体の bConfigStayInPicDestRectArea メンバーが 1 の場合、OutsideYUVcolor.bSampleAlpha8 の値は 0 である必要があります。

OutsideYUVcolor.bSampleAlpha8 が 0 の場合、ブレンドの影響を受けるターゲット サーフェスの領域は PictureDestinationRect 内のパーツだけです。

OutsideYUVcolor.bSampleAlpha8 が 255 の場合、PictureDestinationRect の外側にあるが GraphicDestinationRect 内にある宛先サーフェスの領域は、OutsideYUVcolor の nonalpha メンバーで指定された色でグラフィックをブレンドすることによって生成されます。 この場合、 PictureDestinationRectGraphicDestinationRect の両方の外側にある宛先サーフェスの割り当てられた領域全体が 、OutsideYUVcolor の nonalpha メンバーで指定された色に設定されます。 DXVA_ConfigAlphaCombine構造体の bConfigBlendType メンバーが 1 の場合、OutsideYUVcolor メンバーは、bSampleAlpha8 = 255、bY_Value = 16、bCbValue = bCrValue = 128 を指定して、黒とのブレンドを示すように設定されます。

DXVA_ConfigAlphaCombine構造体の bConfigBlendType メンバーが 1 (バックエンド ハードウェア ブレンド) の場合、ブレンド操作は、このリファレンスで説明されているものと多少異なる場合があります。 ソース画像からコピー先の画像サイズにビデオ画像をマップするために使用される一部のサイズ変更パラメーターは、変更された方法で適用され、グラフィックイメージをソース画像に対する適切な位置にマップできます。 ただし、ブレンド結果は、このリファレンスのアルファ ブレンドの組み合わせコマンドによって得られるブレンド結果と同じになります。

要件

要件
Header dxva.h (Dxva.h を含む)

こちらもご覧ください

DD_BEGINMOCOMPFRAMEDATA

DXVA_AYUVsample2

DXVA_ConfigAlphaCombine

DdMoCompBeginFrame

Rect