次の方法で共有


スキップされたマクロブロックの生成

DirectX VA でのスキップされたマクロ ブロックの生成は、MPEG-2 ビデオ セクション 7.6.6 の生成とは多少異なります。 DirectX VA では、スキップされたマクロブロックは、前のスキップされていないマクロ ブロックの種類と表示される図の種類から推論されるのではなく、別のマクロブロック 制御コマンドで生成されます (たとえば、MPEG-2 では、スキップされたマクロブロックを生成する方法は、図が P 画像B 図かによって異なります)。

スキップされたマクロブロックを生成して使用する場合は、次の条件が必要です。

  • スキップされたマクロブロックには、残差はありません。

  • スキップされたマクロブロックを生成するには、マクロブロック 制御コマンドの操作を w MB (メガバイト)address をインクリメントして繰り返します。 (後続のスキップされた各マクロ ブロックは、w MB (メガバイト)address の値をインクリメントする以外は、最初のマクロブロックと同じ方法で生成されます)。

  • マクロ ブロックのスキップは、画像内のマクロ ブロックの新しい行への折り返しが制限されます。 (マクロ ブロックの各行の最初のマクロ ブロックを生成するには、個別のマクロ ブロック制御コマンドを送信する必要があります)。

  • MB (メガバイト)skipsFollowing0 以外の値を持つマクロ ブロック コントロール コマンドの内容は、スキップされた一連のマクロブロックの最初の明示的な指定の内容と等価です (MB (メガバイト)skipsFollowing の値を除く)。 したがって、MB (メガバイト)skipsFollowing が 0 でない場合は常に、次の構造体のメンバーと変数がすべて 0 に等しい必要があります: Motion4MV、IntraMacroblock、wPatternCode、およびwPC_Overflow

最初の 3 つの前の条件のため、アクセラレータは、指定されたモーション ベクトルを輝度コンポーネント内の次の式と等しい幅の四角形に適用し、同様に指定された色度コンポーネント内の四角形に適用することで、モーション補正 (Motion4MV がゼロの場合) を実装できます。 この四角形領域モーション補正方法は、同じマクロ ブロック制御操作の MB (メガバイト)skipsFollowing+ 1 回の繰り返しを使用するのではなく、アクセラレータによって実行できます。

(bMacroblockWidthMinus1+1) X (MBskipsFollowing+1)

bMacroblockWidthMinus1 メンバーは、DXVA_PictureParametersに含まれています。 MB (メガバイト)skipsFollowing 変数は、各マクロ ブロック制御構造体の w MB (メガバイト)type メンバーにあります。

H.263 のスキップされたマクロブロック(Annex F)

高度な予測モードがアクティブな H.263 でスキップされたマクロ ブロックを生成するには (Annex F)、DirectX VA マクロ ブロック制御コマンドで、スキップされたマクロ ブロックをスキップされていないマクロ ブロックとして表す必要があります。 これは、これらのマクロブロック内で OBMC 効果を生成するために行われます。

MPEG-2 でのスキップされたマクロ ブロックの生成の例

次の例は、スキップされたマクロ ブロックが生成されるときにマクロ ブロック コントロール コマンドがどのように使用されるかを示しています。 演示のために,MPEG-2ビットストリームで7つのマクロブロックが以下の方法で使用されていると仮定します.

マクロブロック番号 説明

0

残差でコード化

1

スキップ済み

2

残差でコード化

3

スキップ済み

4

スキップ済み

5

スキップ済み

6

残差でコード化

これらの 7 つのマクロ ブロックでは、次の表に示す 5 つの DirectX VA マクロ ブロック制御コマンドを (少なくとも) 生成する必要があります。 MB (メガバイト)skipsFollowing 変数は、スキップされたマクロブロックの数を示します。 w MB (メガバイト)address メンバーは、マクロ ブロックのアドレスを示します。 MBskipsFollowing および wMBaddress は、DXVA_MBctrl_P_OffHostIDCT_1およびDXVA_MBctrl_P_HostResidDiff_1構造体に含まれています。 (〘MB (メガバイト)skipsFollowing 変数は dw MB (メガバイト)_SNL 構造体メンバーで定義されます。

マクロ ブロック コマンド[Macroblock こまんど] メンバー値

最初

w MB (メガバイト)address = 0

MBskipsFollowing = 0

Second

wMBaddress = 1

MBskipsFollowing = 0

Third

wMBaddress = 2

MBskipsFollowing = 0

4 番目

wMBaddress = 3

MBskipsFollowing = 2

第 5

wMBaddress = 6

MBskipsFollowing = 0