巨大區塊 Control 命令結構的第一個部分

泛型巨大區塊控制命令結構的前四個成員一律相同。 下表描述此結構第一個部分的成員。

member 描述

wMBaddress

指定目前正在處理之巨大區塊的巨大區塊位址。

wMBtype

指定要處理的巨大區塊類型。 此成員包含旗標,指出是否使用「動作補償」來預測巨大區塊的值,以及所傳送的剩餘差異資料類型。

dwMB_SNL

包含前8位的兩個欄位 MBskipsFollowing () 和較低的24位) 中的 MBdataLocation (。

MBskipsFollowing 指定要在目前的巨大區塊之後產生的已略過巨大區塊數目。

MBdataLocation 是 IDCT 剩餘差異區塊資料緩衝區的索引,表示目前巨大區塊之區塊的剩餘差異資料的位置。

wPatternCode

指出是否針對巨大區塊中的每個區區塊轉送剩餘的差異資料。

wMBaddress

WMBaddress結構成員會以點陣掃描順序指定目前巨大區塊的巨大區塊位址。 下表顯示巨大區塊位址的範例。

巨大區塊 位址

左上角

零個

右上方

wPicWidthInMBminus1

左下方

wPicHeightInMBminus1 x (wPicWidthInMBminus1+ 1)

右下角

(wPicHeightInMBminus1+ 1) x (wPicWidthInMBminus1+ 1) -1

WPicWidthInMBminus1wPicHeightInMBminus1位址是DXVA_PictureParameters結構的成員。

wMBtype

WMBtype結構成員會指定正在處理的巨大區塊類型。 這個成員包含一組定義巨大區塊和動作向量處理方式的位。 BPic4MVallowedbPicScanMethodbPicBackwardPredictionbPicStructurebPicScanFixed位址是DXVA_PictureParameters結構的成員。 BConfigHostInverseScan位址是DXVA_ConfigPictureDecode結構的成員。

Bits Description

15至12

MvertFieldSel_3 (位15,最重要的) 到 MvertFieldSel_0 (bit 12)

針對稍後在巨大區塊控制項命令中傳送的對應動作向量指定垂直欄位選取,如下表所示。 若為具有框架圖片結構的框架型動作 (例如,261和 .H) ,這些位必須全部為零。 MvertFieldSel_0、MvertFieldSel_1、MvertFieldSel_2MvertFieldSel_3中的位會對應至 mpeg-2 的區段6.3.17.2 中的 motion_vertical_field_select [r] [s] 位。

11

保留位。 必須為零。

10

HostResidDiff

指定是否傳送空間剩餘差異解碼區塊,或是否針對目前巨大區塊的非主機識別碼CT 傳送轉換係數。 如果 bConfigResidDiffHost 為零,則必須為零。 如果 bConfigResidDiffAccelerator 為零,則必須是1。

9和8

MotionType

指定圖片中的動作類型。 例如,針對框架圖片結構的框架型動作 (為 261) ,位9必須是1,而位8必須為零。

使用這些位會直接對應到6.3.17.1 中的 frame_motion_typefield_motion_type 位,以及 Mpeg-2 影片標準的資料表6-17 和6-18 (當這些位存在於 mpeg-2 位流時)。 下表將進一步說明這些位的使用。

7和6

MBscanMethod

指定巨大區塊 scan 方法。 如果bPicScanFixed為1,則此項必須等於bPicScanMethod 。 如果 HostResidDiff 是1,則這個變數沒有任何意義,而且應該將這些位設定為零。

如果 bConfigHostInverseScan 為零,則 MBscanMethod 必須是下列其中一個值:

  • Bit 6 為零,而位7為零,代表中位數掃描 (MPEG 2 圖 7-2)

  • Bit 6 是1,而 bit 7 是零,用於替代垂直掃描 (MPEG 2 圖 7-3)

  • Bit 6 為零,而 bit 7 是1用於交替水準掃描 (H 263 圖 I. 2 部分 a)

如果 bConfigHostInverseScan 是1,則 MBscanMethod 必須等於下列值:

  • Bit 6 是1,而 bit 7 是1,適用于具有絕對係數位址的任意掃描。

5

FieldResidual

指出剩餘差異區塊是否使用 MPEG-2 中所指定的欄位 IDCT 結構。

如果 bPicStructure 是1或2,此旗標必須是1。 如果 MPEG-2 語法中的 frame_pred_frame_DCT 旗標是1,則使用於 mpeg-2 時,此旗標必須為零。 如果巨大區塊有dct_type ,此旗標必須等於 mpeg-2 語法的dct_type元素(如果有的話)。

4

H261LoopFilter

指定目前巨大區塊預測的261迴圈篩選 (區段3.2.3 是否為作用中) 。 261迴圈篩選是將1/4、1/2、1/4 篩選同時套用至261巨大區塊中的所有六個區塊,但在其中一個點擊範圍會落在區塊外的區塊邊緣除外。 在這種情況下,篩選準則會變更為具有係數0、1、0。 在2D 篩選進程的輸出中,會保留完整的算術精確度,並四捨五入為8位整數 (半整數或更高的值) 。

3

Motion4MV

指出向前移動針對巨大區塊中的四個亮度區塊使用相異的動作向量,如同在 .H 附件 F 和 J 中使用一樣。如果MotionForward為零或bPic4MVallowed為零,則Motion4MV必須為零。

2

MotionBackward

這個變數是用來做為 MPEG 2 中對應 macroblock_motion_backward 參數的指定。 如果 DXVA_PictureParameters 結構的 bPicBackwardPrediction 成員為零,則 MotionBackward 必須為零。

1

MotionForward

這個變數是用來指定在 MPEG 2 中對應的 macroblock_motion_forward 。 本表格之後的文字會進一步說明此位的用法。

0

IntraMacroblock

表示巨大區塊會編碼為內部,而且沒有任何動作向量用於目前的巨大區塊。

此變數會對應至 MPEG-2 中的 macroblock_intra 變數。 本表格之後的文字會進一步說明此位的用法。

當巨大區塊 predictively 編碼時,它們會有相關聯的動作向量值。 系統會根據巨大區塊是用於欄位編碼或框架編碼的圖片來產生值。 任何實施都必須適當地為每個使用的巨大區塊型別進行考慮, (特別是針對欄位結構化圖片或雙質數移動) 。

本章節中的下列兩個表格表示 IntraMacroblockMotionForwardMotionBackwardMotionTypeMvertFieldSelMVector 的有效組合,適用于框架編碼和欄位編碼的圖片。 MVector 包含動作向量的水準和垂直元件。 其餘的變數和旗標會指定「動作向量」運算。 這取決於所處理的巨大區塊類型,以及巨大區塊是否用於框架編碼或欄位編碼的圖片。

下表 (在下列情況中所顯示的值) 會發生下列情況:

  • H261LoopFilterMotion4MVbPicOBMC 為零。

  • 除非bPicStructure為 2 (底部欄位) ,否則PicCurrentField旗標為零。 在此情況下, PicCurrentField 為1。

MVectorDXVA_MBctrl_P_HostResidDiff_1DXVA_MBctrl_P_OffHostIDCT_1 結構的成員。 IntraMacroblockMotionForwardMotionBackwardMotionTypeMvertFieldSelH261LoopFilterMotion4MV旗標和變數都會位欄位包含在 DXVA_MBctrl_P_HostResidDiff_1 和 DXVA_MBctrl_P_OffHostIDCT_1 結構的wMBtype成員中。 bPicOBMCDXVA_PictureParameters 結構的成員。 PicCurrentField旗標衍生自 DXVA_PictureParameters 的bPicStructure成員。

檢查本節中的下列資料表時,適用下列考慮事項:

  • 在許多地方,會使用 MPEG-2 變數名稱 PMV 來指出運動向量的值。 此標記法可用來區分 PMV 變數,如 mpeg-2 中所定義(在框架座標中),以及可能位於欄位座標中的動作向量 (換言之,以半垂直解析度) 。 在所有情況下, PMV 會參考目前的動作向量值更新 後的 PMV 值 (如 mpeg-2 video 區段 7.6.3.1) 中所指定。

  • Vector ' [2] [0] 和向量 ' [3] [0] 的定義可在 MPEG-2 區段7.6.3.6 中找到。 顯示的左 - 移作業表示垂直元件已修改為框架座標。

  • 在「沒有動作」案例中 (0、0、0) ,巨大區塊參數會模擬向前預測巨大區塊 (0,1,0) 具有零值的動作向量。 (另請參閱 MPEG-2 區段7.6.3.5。 )

  • 以單引號顯示的 MotionType 的值為二進位標記法 (第一個數位是位9,而第二個則是位 8) 。

  • 第一個資料表中的左移運算子僅適用于所顯示的第二個值。

框架結構的圖片

下表顯示DXVA_PictureParameters結構的bPicStructure成員等於 3) 時,框架結構化圖片 (之專案設定的有效組合。

IntraMacroblock, MotionForward, MotionBackward MotionType (意義取決於圖片類型) MVector [0] MvertFieldSel_0 (1、dir1) MVector [1] MvertFieldSel_1 (1、dir2) MVector [2] MvertFieldSel_2 (第2,dir1) MVector [3] MvertFieldSel_3 (第2、dir2)

1,0,0 (內部)

(內部) 中的 ' 00 '

-

-

-

-

-

-

-

-

0、0、0 (沒有任何動作)

' 10 ' (沒有動作)

0

-

-

-

-

-

-

-

0、1、0

' 10 ' (框架 MC)

PMV [0] [0]

-

-

-

-

-

-

-

0、0、1

' 10 ' (框架 MC)

-

-

PMV [0] [1]

-

-

-

-

-

0、1、1

' 10 ' (框架 MC)

PMV [0] [0]

-

PMV [0] [1]

-

-

-

-

-

0、1、0

' 01 ' (欄位 MC)

PMV [0] [0]

sel [0] [0]

-

-

PMV [1] [0]

選取 [1] [0]

-

-

0、0、1

' 01 ' (欄位 MC)

-

-

PMV [0] [1]

sel [0] [1]

-

-

PMV [1] [1]

選取 [1] [1]

0、1、1

' 01 ' (欄位 MC)

PMV [0] [0]

sel [0] [0]

PMV [0] [1]

sel [0] [1]

PMV [1] [0]

選取 [1] [0]

PMV [1] [1]

選取 [1] [1]

0、1、0

' 11 ' (雙質數)

PMV [0] [0]

0 (top)

向量 ' [2] [0] [0],

向量 ' [2] [0] [1] << 1

1 (底部)

PMV [0] [0]

1

向量 ' [3] [0] [0],

向量 ' [3] [0] [1] << 1

0

欄位結構的圖片

下表顯示當DXVA_PictureParameters結構的bPicStructure成員等於1或 2) 時,欄位結構化圖片 (的專案設定的有效組合。

IntraMacroblock, MotionForward, MotionBackward MotionType (意義取決於圖片類型) MVector [0] MvertFieldSel_0 (1、dir1) MVector [1] MvertFieldSel_1 (1、dir2) MVector [2] MvertFieldSel_2 (第2,dir1) MVector [3] MvertFieldSel_3 (第2、dir2)

1,0,0 (內部)

(內部) 中的 ' 00 '

-

-

-

-

-

-

-

-

0、0、0 (沒有任何動作)

' 01 ' (沒有動作)

0

PicCurrentField

-

-

-

-

-

-

0、1、0

' 01 ' (欄位 MC)

PMV [0] [0]

sel [0] [0]

-

-

-

-

-

-

0、0、1

' 01 ' (欄位 MC)

-

-

PMV [0] [1]

sel [0] [1]

-

-

-

-

0、1、1

' 01 ' (欄位 MC)

PMV [0] [0]

sel [0] [0]

PMV [0] [1]

sel [0] [1]

-

-

-

-

0、1、0

' 10 ' (16x8 MC)

PMV [0] [0]

sel [0] [0]

-

-

PMV [1] [0]

選取 [1] [0]

-

-

0、0、1

' 10 ' (16x8 MC)

-

-

PMV [0] [1]

sel [0] [1]

-

-

PMV [1] [1]

選取 [1] [1]

0、1、1

' 10 ' (16x8 MC)

PMV [0] [0]

sel [0] [0]

PMV [0] [1]

sel [0] [1]

PMV [1] [0]

選取 [1] [0]

PMV [1] [1]

選取 [1] [1]

0、1、0

' 11 ' (雙質數)

PMV [0] [0]

PicCurrentField

向量 ' [2] [0]

PicCurrentField

-

-

-

-

欄位和框架圖片的其他有效元素設定

框架結構化和欄位結構化圖片的其餘允許案例如下所示。

描述

H261LoopFilter = 1

bPicOBMC = 0

Motion4MV = 0

表示在 MVector[0] 中傳送一個順向動作向量,而且在巨大區塊中,正向預測的261迴圈篩選作用中。

在此情況下, MotionForward必須是1,而IntraMacroblockMotionBackward都必須是零。

bPicOBMC = 0

Motion4MV = 1

指出四個順向動作向量是在 MVector[0] 到 MVector[3] 中傳送。 在此情況下, MotionForward必須是1,而IntraMacroblock必須為零。

如果 MotionBackward 是1,就會針對 MVector[4] 中的回溯預測傳送第五個動作向量。

bPicOBMC = 1

Motion4MV = 0

指出會在 MVector[0] 到 MVector[9] 中,針對 OBMC 動作的規格傳送10個順向動作向量,且前四個這類動作向量的值全都相等。

如果 MotionBackward 是1,就會針對 MVector[10] 中的回溯預測傳送第十個動作向量。

bPicOBMC = 1

Motion4MV = 1

指出會在 MVector[0] 到 MVector[9] 中傳送10個順向動作向量,以指定 OBMC 動作的規格,而且前四個這類移動向量的值可能彼此不同。

如果 MotionBackward 是1,就會針對 MVector[10] 中的回溯預測傳送第十個動作向量。

注意 平均運算子的數學相同 ( (s1 + s2 + 1) >> 1) 適用于 mpeg-2、mpeg-2 的半樣本預測篩選、雙向平均,以及雙質數相同的相同同位合併。 H. 雙向平均運算子不會在右移位之前加入 + 1 的位移。 DXVA_PictureParametersbBidirectionalAveragingMode成員會決定要使用哪一種方法。